From e4163010b903af9fcab8f8f4180e4b1d18c7a46d Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Tue, 6 Feb 2024 15:41:21 -0500 Subject: [PATCH 01/11] added free projection without open eneded walks --- examples/13-free_projection/run_afqmc.py | 54 +++ ipie/analysis/blocking.py | 38 ++ ipie/analysis/extraction.py | 13 +- ipie/estimators/energy.py | 32 ++ ipie/estimators/handler.py | 106 +++++- ipie/estimators/tests/test_estimators.py | 59 ++- ipie/propagation/free_propagation.py | 92 +++++ ipie/propagation/tests/test_generic.py | 43 ++- ipie/qmc/calc.py | 40 +- ipie/qmc/fp_afqmc.py | 349 ++++++++++++++++++ ipie/qmc/options.py | 3 + ipie/qmc/tests/test_afqmc_single_det_batch.py | 31 ++ ipie/utils/testing.py | 42 ++- ipie/walkers/base_walkers.py | 12 +- ipie/walkers/tests/test_single_det_uhf.py | 26 ++ ipie/walkers/uhf_walkers.py | 36 ++ 16 files changed, 935 insertions(+), 41 deletions(-) create mode 100644 examples/13-free_projection/run_afqmc.py create mode 100644 ipie/propagation/free_propagation.py create mode 100644 ipie/qmc/fp_afqmc.py diff --git a/examples/13-free_projection/run_afqmc.py b/examples/13-free_projection/run_afqmc.py new file mode 100644 index 00000000..93d8ab5a --- /dev/null +++ b/examples/13-free_projection/run_afqmc.py @@ -0,0 +1,54 @@ +from pyscf import cc, gto, scf + +from ipie.config import MPI +from ipie.utils.from_pyscf import gen_ipie_input_from_pyscf_chk + +comm = MPI.COMM_WORLD +mol = gto.M( + atom=[("H", 1.6 * i, 0, 0) for i in range(0, 10)], + basis="sto-6g", + verbose=4, + unit="Bohr", +) +if comm.rank == 0: + mf = scf.UHF(mol) + mf.chkfile = "scf.chk" + mf.kernel() + mycc = cc.UCCSD(mf).run() + et = mycc.ccsd_t() + print("UCCSD(T) energy {}".format(mf.e_tot + mycc.e_corr + et)) + + gen_ipie_input_from_pyscf_chk(mf.chkfile, verbose=0) +comm.barrier() + +from ipie.qmc.calc import build_afqmc_driver + +qmc_options = { + "free_projection": True, + "num_iterations_fp": 10, + "num_blocks": 5, + "num_steps": 20, + "dt": 0.05, +} +afqmc = build_afqmc_driver( + comm, + nelec=mol.nelec, + num_walkers_per_task=100, + seed=41100801, + extra_qmc_options=qmc_options, +) +if comm.rank == 0: + print(afqmc.params) # Inspect the default qmc options +afqmc.run() + +# analysis +if comm.rank == 0: + from ipie.analysis.blocking import block_ratios + from ipie.analysis.extraction import extract_observable + + for i in range(afqmc.params.num_blocks): + print( + f"\nEnergy statistics at time {(i+1) * afqmc.params.num_steps_per_block * afqmc.params.timestep}:" + ) + qmc_data = extract_observable(afqmc.estimators[i].filename, "energy", complexQ=True) + block_ratios(qmc_data["ENumer"], qmc_data["EDenom"]) diff --git a/ipie/analysis/blocking.py b/ipie/analysis/blocking.py index 634f3617..d077678d 100755 --- a/ipie/analysis/blocking.py +++ b/ipie/analysis/blocking.py @@ -390,3 +390,41 @@ def analyse_ekt_ipea(filename, ix=None, cutoff=1e-14, screen_factor=1): fockT = numpy.dot(X.conj().T, numpy.dot(fock_1p_av, X)) eea, eea_vec = numpy.linalg.eigh(fockT) return (eip, eip_vec), (eea, eea_vec) + + +def block_ratios(num: numpy.ndarray, denom: numpy.ndarray): + r"""Block averaging of ratios. + + Parameters + ---------- + num : :class:`numpy.ndarray` + Numerator. + denom : :class:`numpy.ndarray` + Denominator. + + Returns + ------- + mean : :class:`numpy.ndarray` + Mean of the ratio. + """ + mean = numpy.mean(num) / numpy.mean(denom) + n_samples = num.size + print(f"Complex mean: {mean:.8e}") + header_0 = "Block size" + header_1 = "# of blocks" + header_2 = "Mean" + header_3 = "Error" + print(f" {header_0:>17s} {header_1:>17s} {header_2:>17s} {header_3:>17s}") + block_sizes = numpy.array([1, 2, 5, 10, 20, 50, 100, 200, 300, 400, 500, 1000, 10000]) + for i in block_sizes[block_sizes < n_samples / 2.0]: + n_blocks = n_samples // i + blocked_denom = numpy.zeros(n_blocks, dtype=num.dtype) + blocked_num = numpy.zeros(n_blocks, dtype=num.dtype) + for j in range(n_blocks): + blocked_denom[j] = denom[j * i : (j + 1) * i].sum() + blocked_num[j] = num[j * i : (j + 1) * i].sum() + mean = numpy.mean(blocked_num) / numpy.mean(blocked_denom) + error = numpy.std((blocked_num / blocked_denom).real) / numpy.sqrt(n_blocks) + # taking real part for the error is a bit hacky + print(f" {i:>17d} {n_blocks:>17d} {mean.real:>17f} {error.real:>17f}") + return mean diff --git a/ipie/analysis/extraction.py b/ipie/analysis/extraction.py index f9103afd..66c33641 100755 --- a/ipie/analysis/extraction.py +++ b/ipie/analysis/extraction.py @@ -25,12 +25,17 @@ from ipie.utils.misc import get_from_dict -def extract_hdf5_data(filename, block_idx=1): +def extract_hdf5_data(filename, block_idx=1, complexQ=False): shapes = {} with h5py.File(filename, "r") as fh5: keys = fh5[f"block_size_{block_idx}/data/"].keys() shape_keys = fh5[f"block_size_{block_idx}/shape/"].keys() - data = numpy.concatenate([fh5[f"block_size_{block_idx}/data/{d}"][:].real for d in keys]) + if not complexQ: + data = numpy.concatenate( + [fh5[f"block_size_{block_idx}/data/{d}"][:].real for d in keys] + ) + else: + data = numpy.concatenate([fh5[f"block_size_{block_idx}/data/{d}"][:] for d in keys]) for k in shape_keys: shapes[k] = { "names": fh5[f"block_size_{block_idx}/names/{k}"][()], @@ -47,8 +52,8 @@ def extract_hdf5_data(filename, block_idx=1): return data[: max_block + 1], shapes -def extract_observable(filename, name="energy", block_idx=1): - data, info = extract_hdf5_data(filename, block_idx=block_idx) +def extract_observable(filename, name="energy", block_idx=1, complexQ=False): + data, info = extract_hdf5_data(filename, block_idx=block_idx, complexQ=complexQ) obs_info = info.get(name) if obs_info is None: raise RuntimeError(f"Unknown value for name={name}") diff --git a/ipie/estimators/energy.py b/ipie/estimators/energy.py index d8a6936b..408b20dc 100644 --- a/ipie/estimators/energy.py +++ b/ipie/estimators/energy.py @@ -157,3 +157,35 @@ def post_reduce_hook(self, data): data[ix_nume] = data[ix_nume] / data[ix_deno] ix_nume = self._data_index["E2Body"] data[ix_nume] = data[ix_nume] / data[ix_deno] + + +class EnergyEstimatorFP(EnergyEstimator): + def __init__( + self, + system=None, + ham=None, + trial=None, + filename=None, + ): + super().__init__(system, ham, trial, filename) + + def compute_estimator(self, system, walkers, hamiltonian, trial, istep=1): + trial.calc_greens_function(walkers) + # Need to be able to dispatch here + energy = local_energy(system, hamiltonian, walkers, trial) + self._data["ENumer"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 0]) + self._data["EDenom"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp) + self._data["E1Body"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 1]) + self._data["E2Body"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 2]) + + return self.data + + def post_reduce_hook(self, data): + ix_proj = self._data_index["ETotal"] + ix_nume = self._data_index["ENumer"] + ix_deno = self._data_index["EDenom"] + data[ix_proj] = data[ix_nume] / data[ix_deno] + ix_nume = self._data_index["E1Body"] + data[ix_nume] = data[ix_nume] / data[ix_deno] + ix_nume = self._data_index["E2Body"] + data[ix_nume] = data[ix_nume] / data[ix_deno] diff --git a/ipie/estimators/handler.py b/ipie/estimators/handler.py index a35dbfe1..8de9a3b9 100644 --- a/ipie/estimators/handler.py +++ b/ipie/estimators/handler.py @@ -27,7 +27,7 @@ import numpy from ipie.config import config, MPI -from ipie.estimators.energy import EnergyEstimator +from ipie.estimators.energy import EnergyEstimator, EnergyEstimatorFP from ipie.estimators.estimator_base import EstimatorBase from ipie.estimators.utils import H5EstimatorHelper from ipie.utils.io import format_fixed_width_strings @@ -244,3 +244,107 @@ def zero(self): self.global_estimates[:] = 0.0 for _, e in self.items(): e.zero() + + +class EstimatorHandlerFP(EstimatorHandler): + def __init__( + self, + comm, + system, + hamiltonian, + trial, + walker_state=None, + verbose: bool = False, + filename: Union[str, None] = None, + block_size: int = 1, + basename: str = "estimates", + overwrite=True, + observables: Tuple[str] = ("energy",), # TODO: Use factory method! + index: int = 0, + ): + super().__init__( + comm, + system, + hamiltonian, + trial, + walker_state, + verbose, + filename, + block_size, + basename, + overwrite, + observables, + index, + ) + self["energy"] = EnergyEstimatorFP( + system=system, + ham=hamiltonian, + trial=trial, + ) + + def initialize(self, comm, print_header=True): + self.local_estimates = numpy.zeros( + (self.size + self.num_walker_props), dtype=numpy.complex128 + ) + self.global_estimates = numpy.zeros( + (self.size + self.num_walker_props), dtype=numpy.complex128 + ) + header = f"{'Iter':>17s} {'TimeStep':>10s} " + for k, e in self.items(): + if e.print_to_stdout: + header += e.header_to_text + if comm.rank == 0: + with h5py.File(self.filename, "w") as fh5: + pass + self.dump_metadata() + self.output = H5EstimatorHelper( + self.filename, + base="block_size_1", + chunk_size=self.buffer_size, + shape=(self.size + self.num_walker_props,), + ) + if comm.rank == 0: + with h5py.File(self.filename, "r+") as fh5: + fh5["block_size_1/num_walker_props"] = self.num_walker_props + fh5["block_size_1/walker_prop_header"] = self.walker_header + for k, o in self.items(): + fh5[f"block_size_1/shape/{k}"] = o.shape + fh5[f"block_size_1/size/{k}"] = o.size + fh5[f"block_size_1/scalar/{k}"] = int(o.scalar_estimator) + fh5[f"block_size_1/names/{k}"] = " ".join(name for name in o.names) + fh5[f"block_size_1/offset/{k}"] = self.num_walker_props + self.get_offset(k) + if comm.rank == 0 and print_header: + print(header) + + def print_block(self, comm, block, walker_factors, div_factor=None, time_step=0): + self.local_estimates[: walker_factors.size] = walker_factors.buffer + comm.Reduce(self.local_estimates, self.global_estimates, op=MPI.SUM) + output_string = " " + # Get walker data. + offset = walker_factors.size + for k, e in self.items(): + if comm.rank == 0: + start = offset + self.get_offset(k) + end = start + int(self[k].size) + est_data = self.global_estimates[start:end] + e.post_reduce_hook(est_data) + est_string = e.data_to_text(est_data) + e.to_ascii_file(est_string) + if e.print_to_stdout: + output_string += est_string + if comm.rank == 0: + shift = self.global_estimates[walker_factors.get_index("HybridEnergy")] + + else: + shift = None + walker_factors.eshift = comm.bcast(shift) + if comm.rank == 0: + self.output.push_to_chunk(self.global_estimates, f"data") + self.output.increment() + if comm.rank == 0: + if time_step == 0: + print(f"{block:>17d} {time_step:>10d}" + output_string) + else: + blank = "" + print(f"{blank:>17s} {time_step:>10d}" + output_string) + self.zero() diff --git a/ipie/estimators/tests/test_estimators.py b/ipie/estimators/tests/test_estimators.py index 59adc89f..90773338 100644 --- a/ipie/estimators/tests/test_estimators.py +++ b/ipie/estimators/tests/test_estimators.py @@ -19,8 +19,8 @@ import pytest -from ipie.estimators.energy import EnergyEstimator -from ipie.estimators.handler import EstimatorHandler +from ipie.estimators.energy import EnergyEstimator, EnergyEstimatorFP +from ipie.estimators.handler import EstimatorHandler, EstimatorHandlerFP from ipie.utils.testing import gen_random_test_instances @@ -47,6 +47,25 @@ def test_energy_estimator(): assert len(data_to_text.split()) == 5 +@pytest.mark.unit +def test_energy_fp_estimator(): + nmo = 10 + nocc = 8 + naux = 30 + nwalker = 10 + system, ham, walker_batch, trial = gen_random_test_instances(nmo, nocc, naux, nwalker) + estim = EnergyEstimatorFP(system=system, ham=ham, trial=trial) + estim.compute_estimator(system, walker_batch, ham, trial) + assert len(estim.names) == 5 + tmp = estim.data.copy() + estim.post_reduce_hook(tmp) + assert estim.print_to_stdout + assert estim.ascii_filename == None + assert estim.shape == (5,) + data_to_text = estim.data_to_text(tmp) + assert len(data_to_text.split()) == 5 + + @pytest.mark.unit def test_estimator_handler(): with tempfile.NamedTemporaryFile() as tmp1, tempfile.NamedTemporaryFile() as tmp2: @@ -74,3 +93,39 @@ def test_estimator_handler(): handler.initialize(comm) handler.compute_estimators(comm, system, ham, trial, walker_batch) handler.compute_estimators(comm, system, ham, trial, walker_batch) + + +@pytest.mark.unit +def test_estimator_handler_fp(): + with tempfile.NamedTemporaryFile() as tmp1, tempfile.NamedTemporaryFile() as tmp2: + nmo = 10 + nocc = 8 + naux = 30 + nwalker = 10 + system, ham, walker_batch, trial = gen_random_test_instances(nmo, nocc, naux, nwalker) + estim = EnergyEstimatorFP(system=system, ham=ham, trial=trial, filename=tmp1.name) + estim.print_to_stdout = False + from ipie.config import MPI + + comm = MPI.COMM_WORLD + handler = EstimatorHandlerFP( + comm, + system, + ham, + trial, + block_size=10, + observables=("energy",), + filename=tmp2.name, + ) + handler["energy1"] = estim + handler.json_string = "" + handler.initialize(comm) + handler.compute_estimators(comm, system, ham, trial, walker_batch) + handler.compute_estimators(comm, system, ham, trial, walker_batch) + + +if __name__ == "__main__": + test_energy_estimator() + test_energy_fp_estimator() + test_estimator_handler() + test_estimator_handler_fp() diff --git a/ipie/propagation/free_propagation.py b/ipie/propagation/free_propagation.py new file mode 100644 index 00000000..8c5f379e --- /dev/null +++ b/ipie/propagation/free_propagation.py @@ -0,0 +1,92 @@ +import time + +import numpy + +from ipie.propagation.phaseless_base import ( + construct_mean_field_shift, + construct_one_body_propagator, +) +from ipie.propagation.phaseless_generic import PhaselessGeneric +from ipie.utils.backend import arraylib as xp +from ipie.utils.backend import synchronize + + +class FreePropagation(PhaselessGeneric): + """fp-afqmc propagator""" + + def __init__( + self, time_step: float, exp_nmax: int = 6, verbose: bool = False, ene_0: float = 0.0 + ) -> None: + super().__init__(time_step, exp_nmax=exp_nmax, verbose=verbose) + self.e_shift = ene_0 # unlike the dynamic shift in phaseless, this is a constant shift + + def build(self, hamiltonian, trial=None, walkers=None, mpi_handler=None, verbose=False): + # dt/2 one-body propagator + start = time.time() + self.mf_shift = construct_mean_field_shift(hamiltonian, trial) + if verbose: + print(f"# Time to mean field shift: {time.time() - start} s") + print( + "# Absolute value of maximum component of mean field shift: " + "{:13.8e}.".format(numpy.max(numpy.abs(self.mf_shift))) + ) + # construct one-body propagator + self.expH1 = construct_one_body_propagator(hamiltonian, self.mf_shift, self.dt) + + # # Allocate force bias (we don't need to do this here - it will be allocated when it is needed) + self.vbias = None + # self.vbias = numpy.zeros((walkers.nwalkers, hamiltonian.nfields), + # dtype=numpy.complex128) + self.e_shift_1 = -hamiltonian.ecore - xp.sum(self.mf_shift**2) / 2.0 + + def propagate_walkers_two_body(self, walkers, hamiltonian, trial): + # Normally distrubted auxiliary fields. + xi = ( + xp.random.normal(0.0, 1.0, hamiltonian.nfields * walkers.nwalkers).reshape( + walkers.nwalkers, hamiltonian.nfields + ) + + 0.0j + ) + + # Constant factor arising from mean field shift + cmf = xp.exp(-self.sqrt_dt * xp.einsum("wx,x->w", xi, self.mf_shift)) + # Constant factor arising from shifting the propability distribution. + ceshift = xp.exp(self.dt * (self.e_shift + self.e_shift_1)) + xi = xi.T.copy() + self.apply_VHS(walkers, hamiltonian, xi) + + return cmf, ceshift + + def propagate_walkers(self, walkers, hamiltonian, trial, eshift): + synchronize() + start_time = time.time() + ovlp = trial.calc_greens_function(walkers) + synchronize() + self.timer.tgf += time.time() - start_time + + # 2. Update Slater matrix + # 2.a Apply one-body + self.propagate_walkers_one_body(walkers) + + # 2.b Apply two-body + (cmf, ceshift) = self.propagate_walkers_two_body(walkers, hamiltonian, trial) + + # 2.c Apply one-body + self.propagate_walkers_one_body(walkers) + + start_time = time.time() + ovlp_new = trial.calc_overlap(walkers) + synchronize() + self.timer.tovlp += time.time() - start_time + + start_time = time.time() + self.update_weight(walkers, ovlp, ovlp_new, ceshift, cmf, eshift) + synchronize() + self.timer.tupdate += time.time() - start_time + + def update_weight(self, walkers, ovlp, ovlp_new, ceshift, cmf, eshift): + # weights in fp keep track of the walker normalization + magn, dtheta = xp.abs(ceshift * cmf), xp.angle(ceshift * cmf) + walkers.weight *= magn + walkers.phase *= xp.exp(1j * dtheta) + walkers.ovlp = ovlp_new diff --git a/ipie/propagation/tests/test_generic.py b/ipie/propagation/tests/test_generic.py index fb8a6482..e4801b3d 100644 --- a/ipie/propagation/tests/test_generic.py +++ b/ipie/propagation/tests/test_generic.py @@ -19,17 +19,12 @@ import numpy import pytest -from ipie.estimators.greens_function import ( - greens_function_single_det_batch, -) +from ipie.estimators.greens_function import greens_function_single_det_batch +from ipie.propagation.free_propagation import FreePropagation from ipie.propagation.overlap import calc_overlap_single_det_uhf +from ipie.utils.legacy_testing import build_legacy_test_case_handlers from ipie.utils.misc import dotdict -from ipie.utils.testing import ( - build_test_case_handlers, -) -from ipie.utils.legacy_testing import ( - build_legacy_test_case_handlers, -) +from ipie.utils.testing import build_test_case_handlers @pytest.mark.unit @@ -334,6 +329,35 @@ def test_vhs(): assert numpy.allclose(vhs_batch[iw], vhs_serial[iw]) +@pytest.mark.unit +def test_fp(): + numpy.random.seed(7) + nmo = 10 + nelec = (6, 5) + nwalkers = 8 + nsteps = 25 + qmc = dotdict( + { + "dt": 0.005, + "nstblz": 5, + "nwalkers": nwalkers, + "batched": False, + "hybrid": True, + "num_steps": nsteps, + } + ) + qmc.batched = True + batched_data = build_test_case_handlers(nelec, nmo, num_dets=1, options=qmc, seed=7) + prop_fp = FreePropagation(time_step=0.005, verbose=False, ene_0=-1.0) + prop_fp.build(batched_data.hamiltonian, batched_data.trial) + + prop_fp.propagate_walkers( + batched_data.walkers, batched_data.hamiltonian, batched_data.trial, -1.0 + ) + assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) + assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) + + if __name__ == "__main__": test_overlap_rhf_batch() test_overlap_batch() @@ -342,3 +366,4 @@ def test_vhs(): test_hybrid_rhf_batch() test_hybrid_batch() test_vhs() + test_fp() diff --git a/ipie/qmc/calc.py b/ipie/qmc/calc.py index e51d6f08..c82e5f8d 100644 --- a/ipie/qmc/calc.py +++ b/ipie/qmc/calc.py @@ -21,9 +21,12 @@ import json from ipie.config import MPI +from ipie.estimators.energy import local_energy from ipie.hamiltonians.utils import get_hamiltonian +from ipie.propagation.free_propagation import FreePropagation from ipie.propagation.propagator import Propagator from ipie.qmc.afqmc import AFQMC +from ipie.qmc.fp_afqmc import FPAFQMC from ipie.qmc.options import QMCParams from ipie.systems.utils import get_system from ipie.trial_wavefunction.utils import get_trial_wavefunction @@ -137,15 +140,33 @@ def get_driver(options: dict, comm: MPI.COMM_WORLD) -> AFQMC: ) propagator = Propagator[type(hamiltonian)](params.timestep) propagator.build(hamiltonian, trial, walkers, mpi_handler) - afqmc = AFQMC( - system, - hamiltonian, - trial, - walkers, - propagator, - params, - verbose=(verbosity and comm.rank == 0), + free_projection = get_input_value( + qmc_opts, "free_projection", alias=["free_propagation", "fp_afqmc"], default=False ) + if free_projection: + params.num_iterations_fp = get_input_value(qmc_opts, "num_iterations_fp", 1) + ene_0 = local_energy(system, hamiltonian, walkers, trial)[0][0] + propagator = FreePropagation(time_step=params.timestep, exp_nmax=10, ene_0=ene_0) + propagator.build(hamiltonian, trial, walkers, mpi_handler) + afqmc = FPAFQMC( + system, + hamiltonian, + trial, + walkers, + propagator, + params, + verbose=(verbosity and comm.rank == 0), + ) + else: + afqmc = AFQMC( + system, + hamiltonian, + trial, + walkers, + propagator, + params, + verbose=(verbosity and comm.rank == 0), + ) return afqmc @@ -159,6 +180,7 @@ def build_afqmc_driver( estimator_filename: str = "estimates.0.h5", seed: int = None, verbosity: int = 0, + extra_qmc_options: dict = None, ): if comm.rank != 0: verbosity = 0 @@ -169,6 +191,8 @@ def build_afqmc_driver( "trial": {"filename": wavefunction_file}, "estimators": {"overwrite": True, "filename": estimator_filename}, } + if extra_qmc_options is not None: + options["qmc"].update(extra_qmc_options) return get_driver(options, comm) diff --git a/ipie/qmc/fp_afqmc.py b/ipie/qmc/fp_afqmc.py new file mode 100644 index 00000000..95e5cda4 --- /dev/null +++ b/ipie/qmc/fp_afqmc.py @@ -0,0 +1,349 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +"""Driver to perform AFQMC calculation""" +import json +import time +from typing import Dict, Optional, Tuple + +from ipie.estimators.estimator_base import EstimatorBase +from ipie.estimators.handler import EstimatorHandlerFP +from ipie.hamiltonians.utils import get_hamiltonian +from ipie.propagation.free_propagation import FreePropagation +from ipie.qmc.afqmc import AFQMC +from ipie.qmc.options import QMCParams +from ipie.trial_wavefunction.utils import get_trial_wavefunction +from ipie.utils.backend import arraylib as xp +from ipie.utils.backend import synchronize +from ipie.utils.io import to_json +from ipie.utils.mpi import MPIHandler +from ipie.walkers.base_walkers import WalkerAccumulator +from ipie.walkers.walkers_dispatch import get_initial_walker, UHFWalkersTrial + + +class FPAFQMC(AFQMC): + """Free projection AFQMC driver.""" + + def __init__( + self, + system, + hamiltonian, + trial, + walkers, + propagator, + params: QMCParams, + verbose: int = 0, + ): + super().__init__(system, hamiltonian, trial, walkers, propagator, params, verbose=verbose) + + @staticmethod + # TODO: wavefunction type, trial type, hamiltonian type + def build( + num_elec: Tuple[int, int], + hamiltonian, + trial_wavefunction, + walkers=None, + num_walkers: int = 100, + seed: int = None, + num_steps_per_block: int = 25, + num_blocks: int = 100, + timestep: float = 0.005, + stabilize_freq=5, + pop_control_freq=-1, + verbose=True, + mpi_handler=None, + ene_0=0.0, + ) -> "FPAFQMC": + """Factory method to build AFQMC driver from hamiltonian and trial wavefunction. + + Parameters + ---------- + num_elec: tuple(int, int) + Number of alpha and beta electrons. + hamiltonian : + Hamiltonian describing the system. + trial_wavefunction : + Trial wavefunction + num_walkers : int + Number of walkers per MPI process used in the simulation. The TOTAL + number of walkers is num_walkers * number of processes. + num_steps_per_block : int + Number of Monte Carlo steps before estimators are evaluatied. + Default 25. + num_blocks : int + Number of blocks to perform. Total number of steps = num_blocks * + num_steps_per_block. + timestep : float + Imaginary timestep. Default 0.005. + stabilize_freq : float + Frequency at which to perform QR factorization of walkers (in units + of steps.) Default 25. + pop_control_freq : int + Not performed in free projection. + verbose : bool + Log verbosity. Default True i.e. print information to stdout. + """ + + driver = AFQMC.build( + num_elec, + hamiltonian, + trial_wavefunction, + walkers, + num_walkers, + seed, + num_steps_per_block, + num_blocks, + timestep, + stabilize_freq, + pop_control_freq, + verbose, + mpi_handler, + ) + if mpi_handler is None: + mpi_handler = MPIHandler() + comm = mpi_handler.comm + else: + comm = mpi_handler.comm + fp_prop = FreePropagation(timestep, verbose=verbose, exp_nmax=10, ene_0=ene_0) + fp_prop.build(hamiltonian, trial_wavefunction, walkers, mpi_handler) + return FPAFQMC( + driver.system, + driver.hamiltonian, + driver.trial, + driver.walkers, + fp_prop, + driver.params, + verbose=(verbose and comm.rank == 0), + ) + + @staticmethod + # TODO: wavefunction type, trial type, hamiltonian type + def build_from_hdf5( + num_elec: Tuple[int, int], + ham_file, + wfn_file, + num_walkers: int = 100, + seed: int = None, + num_steps_per_block: int = 25, + num_blocks: int = 100, + timestep: float = 0.005, + stabilize_freq=5, + pop_control_freq=5, + num_dets_chunk=1, + num_dets_for_trial_props=100, + pack_cholesky=True, + verbose=True, + ) -> "FPAFQMC": + """Factory method to build FPAFQMC driver from hamiltonian and trial wavefunction. + + Parameters + ---------- + num_elec: tuple(int, int) + Number of alpha and beta electrons. + ham_file : str + Path to Hamiltonian describing the system. + wfn_file : str + Path to Trial wavefunction + num_walkers : int + Number of walkers per MPI process used in the simulation. The TOTAL + number of walkers is num_walkers * number of processes. + num_steps_per_block : int + Number of Monte Carlo steps before estimators are evaluatied. + Default 25. + num_blocks : int + Number of blocks to perform. Total number of steps = num_blocks * + num_steps_per_block. + timestep : float + Imaginary timestep. Default 0.005. + stabilize_freq : float + Frequency at which to perform QR factorization of walkers (in units + of steps.) Default 25. + pop_control_freq : int + Frequency at which to perform population control (in units of + steps.) Default 25. + num_det_chunks : int + Size of chunks of determinants to process during batching. Default=1 (no batching). + num_dets_for_trial_props: int + Number of determinants to use to evaluate trial wavefunction properties. + pack_cholesky : bool + Use symmetry to reduce memory consumption of integrals. Default True. + verbose : bool + Log verbosity. Default True i.e. print information to stdout. + """ + mpi_handler = MPIHandler() + _verbose = verbose and mpi_handler.comm.rank == 0 + ham = get_hamiltonian( + ham_file, mpi_handler.scomm, verbose=_verbose, pack_chol=pack_cholesky + ) + trial = get_trial_wavefunction( + num_elec, + ham.nbasis, + wfn_file, + ndet_chunks=num_dets_chunk, + ndets_props=num_dets_for_trial_props, + verbose=_verbose, + ) + trial.half_rotate(ham, mpi_handler.scomm) + return FPAFQMC.build( + trial.nelec, + ham, + trial, + num_walkers=num_walkers, + seed=seed, + num_steps_per_block=num_steps_per_block, + num_blocks=num_blocks, + timestep=timestep, + stabilize_freq=stabilize_freq, + pop_control_freq=pop_control_freq, + verbose=verbose, + mpi_handler=mpi_handler, + ) + + def setup_estimators( + self, filename, additional_estimators: Optional[Dict[str, EstimatorBase]] = None + ): + self.accumulators = WalkerAccumulator( + ["Weight", "WeightFactor", "HybridEnergy"], self.params.num_steps_per_block + ) + comm = self.mpi_handler.comm + self.estimators = [] + for i in range(self.params.num_blocks): + self.estimators.append( + EstimatorHandlerFP( + self.mpi_handler.comm, + self.system, + self.hamiltonian, + self.trial, + walker_state=self.accumulators, + verbose=(comm.rank == 0 and self.verbose), + filename=f"{filename}.{i}", + observables=("energy",), + ) + ) + if additional_estimators is not None: + raise NotImplementedError( + "Additional estimators not implemented yet for free projection." + ) + # TODO: Move this to estimator and log uuid etc in serialization + json.encoder.FLOAT_REPR = lambda o: format(o, ".6f") + json_string = to_json(self) + for e in self.estimators: + e.json_string = json_string + + for i, e in enumerate(self.estimators): + e.initialize(comm, i == 0) + + def run( + self, + psi=None, + estimator_filename="estimate.h5", + verbose=True, + additional_estimators: Optional[Dict[str, EstimatorBase]] = None, + ): + """Perform FP AFQMC simulation on state object by Gaussian sampling of short time projection. + + Parameters + ---------- + psi : :class:`pie.walker.Walkers` object + Initial wavefunction / distribution of walkers. Default None. + estimator_filename : str + File to write estimates to. + additional_estimators : dict + Dictionary of additional estimators to evaluate. + """ + self.setup_timers() + tzero_setup = time.time() + if psi is not None: + self.walkers = psi + self.setup_timers() + eshift = 0.0 + self.walkers.orthogonalise() + + self.get_env_info() + self.copy_to_gpu() + self.distribute_hamiltonian() + self.setup_estimators(estimator_filename, additional_estimators=additional_estimators) + + total_steps = self.params.num_steps_per_block * self.params.num_blocks + + synchronize() + comm = self.mpi_handler.comm + self.tsetup += time.time() - tzero_setup + + for iter in range(self.params.num_iterations_fp): + block_number = 0 + _, initial_walker = get_initial_walker(self.trial) + # TODO this is a factory method not a class + initial_walkers = UHFWalkersTrial( + self.trial, + initial_walker, + self.system.nup, + self.system.ndown, + self.hamiltonian.nbasis, + self.params.num_walkers, + self.mpi_handler, + ) + initial_walkers.build(self.trial) + self.walkers = initial_walkers + for step in range(1, total_steps + 1): + synchronize() + start_step = time.time() + if step % self.params.num_stblz == 0: + start = time.time() + self.walkers.orthogonalise(free_projection=True) + synchronize() + self.tortho += time.time() - start + start = time.time() + + self.propagator.propagate_walkers( + self.walkers, self.hamiltonian, self.trial, eshift + ) + + self.tprop_ovlp = self.propagator.timer.tovlp + self.tprop_update = self.propagator.timer.tupdate + self.tprop_gf = self.propagator.timer.tgf + self.tprop_vhs = self.propagator.timer.tvhs + self.tprop_gemm = self.propagator.timer.tgemm + + # accumulate weight, hybrid energy etc. across block + start = time.time() + # self.accumulators.update(self.walkers) + synchronize() + self.testim += time.time() - start # we dump this time into estimator + # calculate estimators + start = time.time() + if step % self.params.num_steps_per_block == 0: + self.estimators[block_number].compute_estimators( + comm, self.system, self.hamiltonian, self.trial, self.walkers + ) + self.estimators[block_number].print_block( + comm, + iter, + self.accumulators, + time_step=block_number, + ) + block_number += 1 + synchronize() + self.testim += time.time() - start + + # restart write features disabled + # if self.walkers.write_restart and step % self.walkers.write_freq == 0: + # self.walkers.write_walkers_batch(comm) + # self.accumulators.zero() + synchronize() + self.tstep += time.time() - start_step diff --git a/ipie/qmc/options.py b/ipie/qmc/options.py index 44c52474..9225fe9e 100644 --- a/ipie/qmc/options.py +++ b/ipie/qmc/options.py @@ -172,7 +172,9 @@ class QMCParams: pop_control_freq: Frequency at which population control occurs. rng_seed: The random number seed. If run in parallel the seeds on other cores / threads are determined from this. + num_iterations_fp: Number of free projection iterations per task. """ + num_walkers: int total_num_walkers: int timestep: float @@ -181,3 +183,4 @@ class QMCParams: num_stblz: int = 5 pop_control_freq: int = 5 rng_seed: Optional[int] = None + num_iterations_fp: int = 1 diff --git a/ipie/qmc/tests/test_afqmc_single_det_batch.py b/ipie/qmc/tests/test_afqmc_single_det_batch.py index 8a426314..2191e621 100644 --- a/ipie/qmc/tests/test_afqmc_single_det_batch.py +++ b/ipie/qmc/tests/test_afqmc_single_det_batch.py @@ -234,6 +234,36 @@ def test_generic_single_det_batch_density_diff(): # ) +@pytest.mark.driver +def test_generic_single_det_batch_fp(): + with tempfile.NamedTemporaryFile() as tmpf: + driver_options = { + "verbosity": 0, + "get_sha1": False, + "qmc": options, + "estimates": {"filename": tmpf.name, "observables": {"energy": {}}}, + "walkers": {"population_control": "pair_branch"}, + } + + afqmc = build_driver_test_instance( + nelec, + nmo, + trial_type="single_det", + options=driver_options, + seed=7, + free_propagation=True, + ) + afqmc.setup_estimators(tmpf.name) + afqmc.run(verbose=False, estimator_filename=tmpf.name) + afqmc.finalise(verbose=0) + for i in range(len(afqmc.estimators)): + data_batch = extract_observable(f"{tmpf.name}.{i}", "energy", complexQ=True) + numer_batch = data_batch["ENumer"] + denom_batch = data_batch["EDenom"] + etot_batch = data_batch["ETotal"] + assert etot_batch.dtype == numpy.complex128 + + @pytest.mark.driver def test_factory_method(): with tempfile.NamedTemporaryFile() as hamilf, tempfile.NamedTemporaryFile() as wfnf: @@ -256,4 +286,5 @@ def test_factory_method(): if __name__ == "__main__": test_generic_single_det_batch() + test_generic_single_det_batch_fp() test_generic_single_det_batch_density_diff() diff --git a/ipie/utils/testing.py b/ipie/utils/testing.py index be0c37bb..38da11d8 100644 --- a/ipie/utils/testing.py +++ b/ipie/utils/testing.py @@ -25,6 +25,7 @@ from ipie.hamiltonians import Generic as HamGeneric from ipie.propagation.phaseless_generic import PhaselessBase, PhaselessGeneric from ipie.qmc.afqmc import AFQMC +from ipie.qmc.fp_afqmc import FPAFQMC from ipie.qmc.options import QMCOpts from ipie.systems import Generic from ipie.trial_wavefunction.noci import NOCI @@ -562,6 +563,7 @@ def build_driver_test_instance( seed: Union[int, None] = None, density_diff=False, options: Union[dict, None] = None, + free_propagation=False, ): if seed is not None: numpy.random.seed(seed) @@ -592,17 +594,31 @@ def build_driver_test_instance( qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) qmc = QMCOpts(qmc_opts, verbose=0) qmc.nwalkers = qmc.nwalkers - - afqmc = AFQMC.build( - num_elec, - ham, - trial, - num_walkers=qmc.nwalkers, - seed=qmc.rng_seed, - num_steps_per_block=qmc.nsteps, - num_blocks=qmc.nblocks, - timestep=qmc.dt, - stabilize_freq=qmc.nstblz, - pop_control_freq=qmc.npop_control, - ) + if not free_propagation: + afqmc = AFQMC.build( + num_elec, + ham, + trial, + num_walkers=qmc.nwalkers, + seed=qmc.rng_seed, + num_steps_per_block=qmc.nsteps, + num_blocks=qmc.nblocks, + timestep=qmc.dt, + stabilize_freq=qmc.nstblz, + pop_control_freq=qmc.npop_control, + ) + else: + afqmc = FPAFQMC.build( + num_elec, + ham, + trial, + num_walkers=qmc.nwalkers, + seed=qmc.rng_seed, + num_steps_per_block=qmc.nsteps, + num_blocks=qmc.nblocks, + timestep=qmc.dt, + stabilize_freq=qmc.nstblz, + pop_control_freq=qmc.npop_control, + ene_0=trial.energy, + ) return afqmc diff --git a/ipie/walkers/base_walkers.py b/ipie/walkers/base_walkers.py index 3c1fd141..2c15b5d8 100644 --- a/ipie/walkers/base_walkers.py +++ b/ipie/walkers/base_walkers.py @@ -17,7 +17,6 @@ # Ankit Mahajan # -import cmath import time from abc import ABCMeta, abstractmethod @@ -171,11 +170,13 @@ def orthogonalise(self, free_projection=False): free_projection : bool True if doing free projection. """ - detR = self.reortho() if free_projection: - (magn, dtheta) = cmath.polar(self.detR) + detR = self.reortho_fp() + magn, dtheta = xp.abs(self.detR), xp.angle(self.detR) self.weight *= magn - self.phase *= cmath.exp(1j * dtheta) + self.phase *= xp.exp(1j * dtheta) + else: + detR = self.reortho() return detR def get_write_buffer(self): @@ -222,3 +223,6 @@ def reortho(self): @abstractmethod def reortho_batched(self): # gpu version pass + + def reortho_fp(self): # for free projection + pass diff --git a/ipie/walkers/tests/test_single_det_uhf.py b/ipie/walkers/tests/test_single_det_uhf.py index 3c5558af..8430ffc9 100644 --- a/ipie/walkers/tests/test_single_det_uhf.py +++ b/ipie/walkers/tests/test_single_det_uhf.py @@ -127,7 +127,33 @@ def test_reortho_batch(): assert numpy.allclose(detR_legacy, detR) +@pytest.mark.unit +def test_reortho_batch_fp(): + nelec = (5, 5) + nwalkers = 10 + nsteps = 10 + nmo = 10 + qmc = dotdict( + { + "dt": 0.005, + "nstblz": 5, + "nwalkers": nwalkers, + "batched": False, + "hybrid": True, + "num_steps": nsteps, + } + ) + qmc.batched = True + batched_data = build_test_case_handlers( + nelec, nmo, num_dets=1, complex_trial=True, options=qmc, seed=7 + ) + batched_data.walkers.orthogonalise(True) + assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) + assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) + + if __name__ == "__main__": test_overlap_batch() test_greens_function_batch() test_reortho_batch() + test_reortho_batch_fp() diff --git a/ipie/walkers/uhf_walkers.py b/ipie/walkers/uhf_walkers.py index 5811b184..ee5c1b9a 100644 --- a/ipie/walkers/uhf_walkers.py +++ b/ipie/walkers/uhf_walkers.py @@ -158,6 +158,42 @@ def reortho_batched(self): return self.detR + def reortho_fp(self): + """reorthogonalise walkers for free projection, retaining normalization. + + parameters + ---------- + """ + if config.get_option("use_gpu"): + (self.phia, Rup) = qr(self.phia, mode=qr_mode) + Rup_diag = xp.einsum("wii->wi", Rup) + det = xp.prod(Rup_diag, axis=1) + + if self.ndown > 0: + (self.phib, Rdn) = qr(self.phib, mode=qr_mode) + Rdn_diag = xp.einsum("wii->wi", Rdn) + det *= xp.prod(Rdn_diag, axis=1) + self.detR = det + self.ovlp = self.ovlp / self.detR + else: + ndown = self.ndown + detR = [] + for iw in range(self.nwalkers): + (self.phia[iw], Rup) = qr(self.phia[iw], mode=qr_mode) + det_i = xp.prod(xp.diag(Rup)) + + if ndown > 0: + (self.phib[iw], Rdn) = qr(self.phib[iw], mode=qr_mode) + det_i *= xp.prod(xp.diag(Rdn)) + + detR += [det_i] + self.log_detR[iw] += xp.log(detR[iw]) + self.detR[iw] = detR[iw] + self.ovlp[iw] = self.ovlp[iw] / detR[iw] + + synchronize() + return self.detR + class UHFWalkersParticleHole(UHFWalkers): """UHF style walker specialized for its use with ParticleHole trial. From df629ea33f21cb8609a0f01efc4717d2abab4711 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Fri, 23 Feb 2024 00:18:40 -0500 Subject: [PATCH 02/11] fixed linting error --- ipie/propagation/free_propagation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ipie/propagation/free_propagation.py b/ipie/propagation/free_propagation.py index 8c5f379e..21d841c6 100644 --- a/ipie/propagation/free_propagation.py +++ b/ipie/propagation/free_propagation.py @@ -84,9 +84,9 @@ def propagate_walkers(self, walkers, hamiltonian, trial, eshift): synchronize() self.timer.tupdate += time.time() - start_time - def update_weight(self, walkers, ovlp, ovlp_new, ceshift, cmf, eshift): + def update_weight(self, walkers, ovlp, ovlp_new, cfb, cmf, eshift): # weights in fp keep track of the walker normalization - magn, dtheta = xp.abs(ceshift * cmf), xp.angle(ceshift * cmf) + magn, dtheta = xp.abs(cfb * cmf), xp.angle(cfb * cmf) walkers.weight *= magn walkers.phase *= xp.exp(1j * dtheta) walkers.ovlp = ovlp_new From 6b1a1c2fbbab1b318a01b38c5494116aabcfaa8e Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Fri, 23 Feb 2024 00:21:30 -0500 Subject: [PATCH 03/11] completely separated free projection from phsaeless --- ipie/analysis/extraction.py | 56 +++++- ipie/propagation/tests/test_generic.py | 17 +- ipie/qmc/calc.py | 168 ++++++++++++++---- ipie/qmc/fp_afqmc.py | 41 ++++- ipie/qmc/options.py | 4 + ipie/qmc/tests/test_afqmc_single_det_batch.py | 25 ++- ipie/utils/testing.py | 166 ++++++++++++++--- ipie/walkers/base_walkers.py | 12 +- ipie/walkers/tests/test_single_det_uhf.py | 6 +- ipie/walkers/uhf_walkers.py | 96 ++++++---- 10 files changed, 459 insertions(+), 132 deletions(-) diff --git a/ipie/analysis/extraction.py b/ipie/analysis/extraction.py index 66c33641..7d1114f3 100755 --- a/ipie/analysis/extraction.py +++ b/ipie/analysis/extraction.py @@ -25,17 +25,55 @@ from ipie.utils.misc import get_from_dict -def extract_hdf5_data(filename, block_idx=1, complexQ=False): +def extract_hdf5_data(filename, block_idx=1): shapes = {} with h5py.File(filename, "r") as fh5: keys = fh5[f"block_size_{block_idx}/data/"].keys() shape_keys = fh5[f"block_size_{block_idx}/shape/"].keys() - if not complexQ: - data = numpy.concatenate( - [fh5[f"block_size_{block_idx}/data/{d}"][:].real for d in keys] - ) - else: - data = numpy.concatenate([fh5[f"block_size_{block_idx}/data/{d}"][:] for d in keys]) + data = numpy.concatenate([fh5[f"block_size_{block_idx}/data/{d}"][:].real for d in keys]) + for k in shape_keys: + shapes[k] = { + "names": fh5[f"block_size_{block_idx}/names/{k}"][()], + "shape": fh5[f"block_size_{block_idx}/shape/{k}"][:], + "offset": fh5[f"block_size_{block_idx}/offset/{k}"][()], + "size": fh5[f"block_size_{block_idx}/size/{k}"][()], + "scalar": bool(fh5[f"block_size_{block_idx}/scalar/{k}"][()]), + "num_walker_props": fh5[f"block_size_{block_idx}/num_walker_props"][()], + "walker_header": fh5[f"block_size_{block_idx}/walker_prop_header"][()], + } + size_keys = fh5[f"block_size_{block_idx}/max_block"].keys() + max_block = sum(fh5[f"block_size_{block_idx}/max_block/{d}"][()] for d in size_keys) + + return data[: max_block + 1], shapes + + +def extract_observable(filename, name="energy", block_idx=1): + data, info = extract_hdf5_data(filename, block_idx=block_idx) + obs_info = info.get(name) + if obs_info is None: + raise RuntimeError(f"Unknown value for name={name}") + obs_slice = slice(obs_info["offset"], obs_info["offset"] + obs_info["size"]) + if obs_info["scalar"]: + obs_data = data[:, obs_slice].reshape((-1,) + tuple(obs_info["shape"])) + nwalk_prop = obs_info["num_walker_props"] + weight_data = data[:, :nwalk_prop].reshape((-1, nwalk_prop)) + results = pd.DataFrame(numpy.hstack([weight_data, obs_data])) + header = list(obs_info["walker_header"]) + obs_info["names"].split() + results.columns = [n.decode("utf-8") for n in header] + return results + else: + obs_data = data[:, obs_slice] + nsamp = data.shape[0] + walker_averaged = obs_data[:, :-1] / obs_data[:, -1].reshape((nsamp, -1)) + return walker_averaged.reshape((nsamp,) + tuple(obs_info["shape"])) + + +def extract_hdf5_data_complex(filename, block_idx=1): + shapes = {} + with h5py.File(filename, "r") as fh5: + keys = fh5[f"block_size_{block_idx}/data/"].keys() + shape_keys = fh5[f"block_size_{block_idx}/shape/"].keys() + data = numpy.concatenate([fh5[f"block_size_{block_idx}/data/{d}"][:] for d in keys]) for k in shape_keys: shapes[k] = { "names": fh5[f"block_size_{block_idx}/names/{k}"][()], @@ -52,8 +90,8 @@ def extract_hdf5_data(filename, block_idx=1, complexQ=False): return data[: max_block + 1], shapes -def extract_observable(filename, name="energy", block_idx=1, complexQ=False): - data, info = extract_hdf5_data(filename, block_idx=block_idx, complexQ=complexQ) +def extract_observable_complex(filename, name="energy", block_idx=1): + data, info = extract_hdf5_data_complex(filename, block_idx=block_idx) obs_info = info.get(name) if obs_info is None: raise RuntimeError(f"Unknown value for name={name}") diff --git a/ipie/propagation/tests/test_generic.py b/ipie/propagation/tests/test_generic.py index e4801b3d..e8c84632 100644 --- a/ipie/propagation/tests/test_generic.py +++ b/ipie/propagation/tests/test_generic.py @@ -330,7 +330,7 @@ def test_vhs(): @pytest.mark.unit -def test_fp(): +def test_free_projection(): numpy.random.seed(7) nmo = 10 nelec = (6, 5) @@ -356,6 +356,19 @@ def test_fp(): ) assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) + assert numpy.allclose( + numpy.sum(batched_data.walkers.phase), 7.926221838159645 + 0.3971467053264697j + ) + assert numpy.allclose(numpy.sum(batched_data.walkers.weight), 1.7901505653712695) + assert numpy.allclose( + numpy.sum(batched_data.walkers.ovlp), -6.40187371404052e-05 - 2.34160780650416e-05j + ) + assert numpy.allclose( + numpy.sum(batched_data.walkers.phia), 33.95629475599705 - 0.30274130601759786j + ) + assert numpy.allclose( + numpy.sum(batched_data.walkers.phib), 41.45587700725909 - 2.8023497141639413j + ) if __name__ == "__main__": @@ -366,4 +379,4 @@ def test_fp(): test_hybrid_rhf_batch() test_hybrid_batch() test_vhs() - test_fp() + test_free_projection() diff --git a/ipie/qmc/calc.py b/ipie/qmc/calc.py index c82e5f8d..9665c773 100644 --- a/ipie/qmc/calc.py +++ b/ipie/qmc/calc.py @@ -27,7 +27,7 @@ from ipie.propagation.propagator import Propagator from ipie.qmc.afqmc import AFQMC from ipie.qmc.fp_afqmc import FPAFQMC -from ipie.qmc.options import QMCParams +from ipie.qmc.options import QMCParams, QMCParamsFP from ipie.systems.utils import get_system from ipie.trial_wavefunction.utils import get_trial_wavefunction from ipie.utils.io import get_input_value @@ -140,33 +140,15 @@ def get_driver(options: dict, comm: MPI.COMM_WORLD) -> AFQMC: ) propagator = Propagator[type(hamiltonian)](params.timestep) propagator.build(hamiltonian, trial, walkers, mpi_handler) - free_projection = get_input_value( - qmc_opts, "free_projection", alias=["free_propagation", "fp_afqmc"], default=False + afqmc = AFQMC( + system, + hamiltonian, + trial, + walkers, + propagator, + params, + verbose=(verbosity and comm.rank == 0), ) - if free_projection: - params.num_iterations_fp = get_input_value(qmc_opts, "num_iterations_fp", 1) - ene_0 = local_energy(system, hamiltonian, walkers, trial)[0][0] - propagator = FreePropagation(time_step=params.timestep, exp_nmax=10, ene_0=ene_0) - propagator.build(hamiltonian, trial, walkers, mpi_handler) - afqmc = FPAFQMC( - system, - hamiltonian, - trial, - walkers, - propagator, - params, - verbose=(verbosity and comm.rank == 0), - ) - else: - afqmc = AFQMC( - system, - hamiltonian, - trial, - walkers, - propagator, - params, - verbose=(verbosity and comm.rank == 0), - ) return afqmc @@ -180,7 +162,6 @@ def build_afqmc_driver( estimator_filename: str = "estimates.0.h5", seed: int = None, verbosity: int = 0, - extra_qmc_options: dict = None, ): if comm.rank != 0: verbosity = 0 @@ -191,11 +172,138 @@ def build_afqmc_driver( "trial": {"filename": wavefunction_file}, "estimators": {"overwrite": True, "filename": estimator_filename}, } - if extra_qmc_options is not None: - options["qmc"].update(extra_qmc_options) return get_driver(options, comm) +def build_fpafqmc_driver( + comm, + nelec: tuple, + wavefunction_file: str = "wavefunction.h5", + hamiltonian_file: str = "hamiltonian.h5", + estimator_filename: str = "estimates.0.h5", + seed: int = None, + qmc_options: dict = None, +): + if comm.rank != 0: + verbosity = 0 + options = { + "system": {"nup": nelec[0], "ndown": nelec[1]}, + "qmc": {"rng_seed": seed}, + "hamiltonian": {"integrals": hamiltonian_file}, + "trial": {"filename": wavefunction_file}, + "estimators": {"overwrite": True, "filename": estimator_filename}, + } + if qmc_options is not None: + options["qmc"].update(qmc_options) + return get_driver_fp(options, comm) + + +def get_driver_fp(options: dict, comm: MPI.COMM_WORLD) -> FPAFQMC: + verbosity = options.get("verbosity", 1) + qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) + sys_opts = get_input_value( + options, "system", default={}, alias=["model"], verbose=verbosity > 1 + ) + ham_opts = get_input_value(options, "hamiltonian", default={}, verbose=verbosity > 1) + # backward compatibility with previous code (to be removed) + for item in sys_opts.items(): + if item[0].lower() == "name" and "name" in ham_opts.keys(): + continue + ham_opts[item[0]] = item[1] + + twf_opt = get_input_value( + options, "trial", default={}, alias=["trial_wavefunction"], verbose=verbosity > 1 + ) + + wlk_opts = get_input_value( + options, "walkers", default={}, alias=["walker", "walker_opts"], verbose=verbosity > 1 + ) + wlk_opts["pop_control"] = wlk_opts.get("pop_control", "pair_branch") + wlk_opts["population_control"] = wlk_opts["pop_control"] + + beta = get_input_value(qmc_opts, "beta", default=None) + if comm.rank != 0: + verbosity = 0 + batched = get_input_value(qmc_opts, "batched", default=True, verbose=verbosity) + + if beta is not None or batched == False: + raise ValueError("Trying to use legacy features which aren't supported.") + else: + from ipie.qmc.options import QMCOpts + + qmc = QMCOpts(qmc_opts, verbose=0) + mpi_handler = MPIHandler(nmembers=qmc_opts.get("nmembers", 1), verbose=verbosity) + system = get_system( + sys_opts, verbose=verbosity, comm=comm + ) # Have to deal with shared comm in the future. I think we will remove this... + ham_file = get_input_value(ham_opts, "integrals", None, verbose=verbosity) + if ham_file is None: + raise ValueError("Hamiltonian filename not specified.") + pack_chol = get_input_value( + ham_opts, "symmetry", True, alias=["pack_chol", "pack_cholesky"], verbose=verbosity + ) + hamiltonian = get_hamiltonian( + ham_file, mpi_handler.scomm, pack_chol=pack_chol, verbose=verbosity + ) + wfn_file = get_input_value(twf_opt, "filename", default="", alias=["wfn_file"]) + num_elec = (system.nup, system.ndown) + trial = get_trial_wavefunction( + num_elec, + hamiltonian.nbasis, + wfn_file, + verbose=verbosity, + ndets=get_input_value(twf_opt, "ndets", default=1, alias=["num_dets"]), + ndets_props=get_input_value( + twf_opt, "ndets_props", default=1, alias=["num_dets_props"] + ), + ndet_chunks=get_input_value( + twf_opt, "ndet_chunks", default=1, alias=["num_det_chunks"] + ), + ) + trial.half_rotate(hamiltonian, mpi_handler.scomm) + if trial.compute_trial_energy: + trial.calculate_energy(system, hamiltonian) + trial.e1b = comm.bcast(trial.e1b, root=0) + trial.e2b = comm.bcast(trial.e2b, root=0) + comm.barrier() + _, initial_walker = get_initial_walker(trial) + walkers = UHFWalkersTrial( + trial, + initial_walker, + system.nup, + system.ndown, + hamiltonian.nbasis, + qmc.nwalkers, + mpi_handler, + ) + walkers.build(trial) # any intermediates that require information from trial + params = QMCParamsFP( + num_walkers=qmc.nwalkers, + total_num_walkers=qmc.nwalkers * comm.size, + num_blocks=qmc.nblocks, + num_steps_per_block=qmc.nsteps, + timestep=qmc.dt, + num_stblz=qmc.nstblz, + pop_control_freq=qmc.npop_control, + rng_seed=qmc.rng_seed, + num_iterations_fp=get_input_value(qmc_opts, "num_iterations_fp", 1), + ) + ene_0 = local_energy(system, hamiltonian, walkers, trial)[0][0] + propagator = FreePropagation(time_step=params.timestep, exp_nmax=10, ene_0=ene_0) + propagator.build(hamiltonian, trial, walkers, mpi_handler) + afqmc = FPAFQMC( + system, + hamiltonian, + trial, + walkers, + propagator, + params, + verbose=(verbosity and comm.rank == 0), + ) + + return afqmc + + def read_input(input_file, comm, verbose=False): """Helper function to parse input file and setup parallel calculation. diff --git a/ipie/qmc/fp_afqmc.py b/ipie/qmc/fp_afqmc.py index 95e5cda4..c221f736 100644 --- a/ipie/qmc/fp_afqmc.py +++ b/ipie/qmc/fp_afqmc.py @@ -26,14 +26,14 @@ from ipie.hamiltonians.utils import get_hamiltonian from ipie.propagation.free_propagation import FreePropagation from ipie.qmc.afqmc import AFQMC -from ipie.qmc.options import QMCParams +from ipie.qmc.options import QMCParamsFP from ipie.trial_wavefunction.utils import get_trial_wavefunction -from ipie.utils.backend import arraylib as xp from ipie.utils.backend import synchronize from ipie.utils.io import to_json from ipie.utils.mpi import MPIHandler from ipie.walkers.base_walkers import WalkerAccumulator -from ipie.walkers.walkers_dispatch import get_initial_walker, UHFWalkersTrial +from ipie.walkers.uhf_walkers import UHFWalkersFP +from ipie.walkers.walkers_dispatch import get_initial_walker class FPAFQMC(AFQMC): @@ -46,7 +46,7 @@ def __init__( trial, walkers, propagator, - params: QMCParams, + params: QMCParamsFP, verbose: int = 0, ): super().__init__(system, hamiltonian, trial, walkers, propagator, params, verbose=verbose) @@ -68,6 +68,7 @@ def build( verbose=True, mpi_handler=None, ene_0=0.0, + num_iterations_fp=1, ) -> "FPAFQMC": """Factory method to build AFQMC driver from hamiltonian and trial wavefunction. @@ -120,14 +121,37 @@ def build( else: comm = mpi_handler.comm fp_prop = FreePropagation(timestep, verbose=verbose, exp_nmax=10, ene_0=ene_0) - fp_prop.build(hamiltonian, trial_wavefunction, walkers, mpi_handler) + fp_prop.build(hamiltonian, driver.trial, walkers, mpi_handler) + if walkers is None: + _, initial_walker = get_initial_walker(driver.trial) + # TODO this is a factory method not a class + walkers = UHFWalkersFP( + initial_walker, + driver.system.nup, + driver.system.ndown, + hamiltonian.nbasis, + num_walkers, + mpi_handler, + ) + walkers.build(driver.trial) # any intermediates that require information from trial + params = QMCParamsFP( + num_walkers=num_walkers, + total_num_walkers=num_walkers * comm.size, + num_blocks=num_blocks, + num_steps_per_block=num_steps_per_block, + timestep=timestep, + num_stblz=stabilize_freq, + pop_control_freq=pop_control_freq, + rng_seed=seed, + num_iterations_fp=num_iterations_fp, + ) return FPAFQMC( driver.system, driver.hamiltonian, driver.trial, driver.walkers, fp_prop, - driver.params, + params, verbose=(verbose and comm.rank == 0), ) @@ -289,8 +313,7 @@ def run( block_number = 0 _, initial_walker = get_initial_walker(self.trial) # TODO this is a factory method not a class - initial_walkers = UHFWalkersTrial( - self.trial, + initial_walkers = UHFWalkersFP( initial_walker, self.system.nup, self.system.ndown, @@ -305,7 +328,7 @@ def run( start_step = time.time() if step % self.params.num_stblz == 0: start = time.time() - self.walkers.orthogonalise(free_projection=True) + self.walkers.orthogonalise() synchronize() self.tortho += time.time() - start start = time.time() diff --git a/ipie/qmc/options.py b/ipie/qmc/options.py index 9225fe9e..2934c6df 100644 --- a/ipie/qmc/options.py +++ b/ipie/qmc/options.py @@ -183,4 +183,8 @@ class QMCParams: num_stblz: int = 5 pop_control_freq: int = 5 rng_seed: Optional[int] = None + + +@dataclass +class QMCParamsFP(QMCParams): num_iterations_fp: int = 1 diff --git a/ipie/qmc/tests/test_afqmc_single_det_batch.py b/ipie/qmc/tests/test_afqmc_single_det_batch.py index 2191e621..6d1b3b1d 100644 --- a/ipie/qmc/tests/test_afqmc_single_det_batch.py +++ b/ipie/qmc/tests/test_afqmc_single_det_batch.py @@ -22,12 +22,16 @@ import numpy import pytest -from ipie.analysis.extraction import extract_mixed_estimates, extract_observable +from ipie.analysis.extraction import ( + extract_mixed_estimates, + extract_observable, + extract_observable_complex, +) from ipie.config import MPI from ipie.qmc.calc import AFQMC from ipie.utils.io import write_hamiltonian, write_wavefunction from ipie.utils.legacy_testing import build_legacy_driver_instance -from ipie.utils.testing import build_driver_test_instance +from ipie.utils.testing import build_driver_test_instance, build_driver_test_instance_fp steps = 25 blocks = 10 @@ -245,24 +249,31 @@ def test_generic_single_det_batch_fp(): "walkers": {"population_control": "pair_branch"}, } - afqmc = build_driver_test_instance( + afqmc = build_driver_test_instance_fp( nelec, nmo, trial_type="single_det", options=driver_options, seed=7, - free_propagation=True, ) afqmc.setup_estimators(tmpf.name) afqmc.run(verbose=False, estimator_filename=tmpf.name) afqmc.finalise(verbose=0) for i in range(len(afqmc.estimators)): - data_batch = extract_observable(f"{tmpf.name}.{i}", "energy", complexQ=True) + data_batch = extract_observable_complex(f"{tmpf.name}.{i}", "energy") numer_batch = data_batch["ENumer"] denom_batch = data_batch["EDenom"] etot_batch = data_batch["ETotal"] assert etot_batch.dtype == numpy.complex128 + data_batch = extract_observable_complex(f"{tmpf.name}.0", "energy") + numer_batch = data_batch["ENumer"] + denom_batch = data_batch["EDenom"] + etot_batch = data_batch["ETotal"] + assert numpy.allclose(numpy.sum(numer_batch), 89026.91053310843 + 37.16899096646583j) + assert numpy.allclose(numpy.sum(denom_batch), 7431.790242711337 + 12.22172751384279j) + assert numpy.allclose(numpy.sum(etot_batch), 35.93783190822862 - 0.04412020753601597j) + @pytest.mark.driver def test_factory_method(): @@ -285,6 +296,6 @@ def test_factory_method(): if __name__ == "__main__": - test_generic_single_det_batch() + # test_generic_single_det_batch() test_generic_single_det_batch_fp() - test_generic_single_det_batch_density_diff() + # test_generic_single_det_batch_density_diff() diff --git a/ipie/utils/testing.py b/ipie/utils/testing.py index 38da11d8..2a9f58bd 100644 --- a/ipie/utils/testing.py +++ b/ipie/utils/testing.py @@ -23,6 +23,7 @@ import numpy from ipie.hamiltonians import Generic as HamGeneric +from ipie.propagation.free_propagation import FreePropagation from ipie.propagation.phaseless_generic import PhaselessBase, PhaselessGeneric from ipie.qmc.afqmc import AFQMC from ipie.qmc.fp_afqmc import FPAFQMC @@ -42,6 +43,7 @@ from ipie.utils.mpi import MPIHandler from ipie.walkers.base_walkers import BaseWalkers from ipie.walkers.pop_controller import PopController +from ipie.walkers.uhf_walkers import UHFWalkersFP from ipie.walkers.walkers_dispatch import UHFWalkersTrial @@ -551,6 +553,71 @@ def build_test_case_handlers( return TestData(trial, walkers, ham, prop) +def build_test_case_handlers_fp( + num_elec: Tuple[int, int], + num_basis: int, + num_dets=1, + trial_type="single_det", + wfn_type="opt", + complex_integrals: bool = False, + complex_trial: bool = False, + seed: Union[int, None] = None, + rhf_trial: bool = False, + two_body_only: bool = False, + choltol: float = 1e-3, + reortho: bool = True, + options: Union[dict, None] = None, +): + if seed is not None: + numpy.random.seed(seed) + sym = 8 + if complex_integrals: + sym = 4 + h1e, chol, _, eri = generate_hamiltonian( + num_basis, num_elec, cplx=complex_integrals, sym=sym, tol=choltol + ) + system = Generic(nelec=num_elec) + ham = HamGeneric( + h1e=numpy.array([h1e, h1e]), + chol=chol.reshape((-1, num_basis**2)).T.copy(), + ecore=0, + ) + ham.eri = eri.copy() + trial, init = build_random_trial( + num_elec, + num_basis, + num_dets=num_dets, + wfn_type=wfn_type, + trial_type=trial_type, + complex_trial=complex_trial, + rhf_trial=rhf_trial, + ) + trial.half_rotate(ham) + trial.calculate_energy(system, ham) + # necessary for backwards compatabilty with tests + if seed is not None: + numpy.random.seed(seed) + + nwalkers = get_input_value(options, "nwalkers", default=10, alias=["num_walkers"]) + walkers = UHFWalkersFP(init, system.nup, system.ndown, ham.nbasis, nwalkers, MPIHandler()) + walkers.build(trial) # any intermediates that require information from trial + + prop = FreePropagation(time_step=options["dt"]) + prop.build(ham, trial) + + trial.calc_greens_function(walkers) + for _ in range(options.num_steps): + if two_body_only: + prop.propagate_walkers_two_body(walkers, ham, trial) + else: + prop.propagate_walkers(walkers, ham, trial, trial.energy) + if reortho: + walkers.reortho() + trial.calc_greens_function(walkers) + + return TestData(trial, walkers, ham, prop) + + def build_driver_test_instance( num_elec: Tuple[int, int], num_basis: int, @@ -563,7 +630,6 @@ def build_driver_test_instance( seed: Union[int, None] = None, density_diff=False, options: Union[dict, None] = None, - free_propagation=False, ): if seed is not None: numpy.random.seed(seed) @@ -594,31 +660,75 @@ def build_driver_test_instance( qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) qmc = QMCOpts(qmc_opts, verbose=0) qmc.nwalkers = qmc.nwalkers - if not free_propagation: - afqmc = AFQMC.build( - num_elec, - ham, - trial, - num_walkers=qmc.nwalkers, - seed=qmc.rng_seed, - num_steps_per_block=qmc.nsteps, - num_blocks=qmc.nblocks, - timestep=qmc.dt, - stabilize_freq=qmc.nstblz, - pop_control_freq=qmc.npop_control, - ) - else: - afqmc = FPAFQMC.build( - num_elec, - ham, - trial, - num_walkers=qmc.nwalkers, - seed=qmc.rng_seed, - num_steps_per_block=qmc.nsteps, - num_blocks=qmc.nblocks, - timestep=qmc.dt, - stabilize_freq=qmc.nstblz, - pop_control_freq=qmc.npop_control, - ene_0=trial.energy, - ) + afqmc = AFQMC.build( + num_elec, + ham, + trial, + num_walkers=qmc.nwalkers, + seed=qmc.rng_seed, + num_steps_per_block=qmc.nsteps, + num_blocks=qmc.nblocks, + timestep=qmc.dt, + stabilize_freq=qmc.nstblz, + pop_control_freq=qmc.npop_control, + ) + return afqmc + + +def build_driver_test_instance_fp( + num_elec: Tuple[int, int], + num_basis: int, + num_dets=1, + trial_type="phmsd", + wfn_type="opt", + complex_integrals: bool = False, + complex_trial: bool = False, + rhf_trial: bool = False, + seed: Union[int, None] = None, + density_diff=False, + options: Union[dict, None] = None, +): + if seed is not None: + numpy.random.seed(seed) + h1e, chol, _, _ = generate_hamiltonian(num_basis, num_elec, cplx=complex_integrals) + system = Generic(nelec=num_elec) + ham = HamGeneric( + h1e=numpy.array([h1e, h1e]), + chol=chol.reshape((-1, num_basis**2)).T.copy(), + ecore=0, + ) + if density_diff: + ham.density_diff = True + trial, _ = build_random_trial( + num_elec, + num_basis, + num_dets=num_dets, + wfn_type=wfn_type, + trial_type=trial_type, + complex_trial=complex_trial, + rhf_trial=rhf_trial, + ) + trial.half_rotate(ham) + try: + trial.calculate_energy(system, ham) + except NotImplementedError: + pass + + qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) + qmc = QMCOpts(qmc_opts, verbose=0) + qmc.nwalkers = qmc.nwalkers + afqmc = FPAFQMC.build( + num_elec, + ham, + trial, + num_walkers=qmc.nwalkers, + seed=qmc.rng_seed, + num_steps_per_block=5, + num_blocks=2, + timestep=qmc.dt, + stabilize_freq=qmc.nstblz, + pop_control_freq=qmc.npop_control, + ene_0=trial.energy, + num_iterations_fp=3, + ) return afqmc diff --git a/ipie/walkers/base_walkers.py b/ipie/walkers/base_walkers.py index 2c15b5d8..3c1fd141 100644 --- a/ipie/walkers/base_walkers.py +++ b/ipie/walkers/base_walkers.py @@ -17,6 +17,7 @@ # Ankit Mahajan # +import cmath import time from abc import ABCMeta, abstractmethod @@ -170,13 +171,11 @@ def orthogonalise(self, free_projection=False): free_projection : bool True if doing free projection. """ + detR = self.reortho() if free_projection: - detR = self.reortho_fp() - magn, dtheta = xp.abs(self.detR), xp.angle(self.detR) + (magn, dtheta) = cmath.polar(self.detR) self.weight *= magn - self.phase *= xp.exp(1j * dtheta) - else: - detR = self.reortho() + self.phase *= cmath.exp(1j * dtheta) return detR def get_write_buffer(self): @@ -223,6 +222,3 @@ def reortho(self): @abstractmethod def reortho_batched(self): # gpu version pass - - def reortho_fp(self): # for free projection - pass diff --git a/ipie/walkers/tests/test_single_det_uhf.py b/ipie/walkers/tests/test_single_det_uhf.py index 8430ffc9..4416bf57 100644 --- a/ipie/walkers/tests/test_single_det_uhf.py +++ b/ipie/walkers/tests/test_single_det_uhf.py @@ -22,7 +22,7 @@ from ipie.estimators.greens_function import greens_function_single_det from ipie.utils.legacy_testing import build_legacy_test_case_handlers from ipie.utils.misc import dotdict -from ipie.utils.testing import build_test_case_handlers +from ipie.utils.testing import build_test_case_handlers, build_test_case_handlers_fp @pytest.mark.unit @@ -144,10 +144,10 @@ def test_reortho_batch_fp(): } ) qmc.batched = True - batched_data = build_test_case_handlers( + batched_data = build_test_case_handlers_fp( nelec, nmo, num_dets=1, complex_trial=True, options=qmc, seed=7 ) - batched_data.walkers.orthogonalise(True) + batched_data.walkers.orthogonalise() assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) diff --git a/ipie/walkers/uhf_walkers.py b/ipie/walkers/uhf_walkers.py index ee5c1b9a..b902b014 100644 --- a/ipie/walkers/uhf_walkers.py +++ b/ipie/walkers/uhf_walkers.py @@ -158,42 +158,6 @@ def reortho_batched(self): return self.detR - def reortho_fp(self): - """reorthogonalise walkers for free projection, retaining normalization. - - parameters - ---------- - """ - if config.get_option("use_gpu"): - (self.phia, Rup) = qr(self.phia, mode=qr_mode) - Rup_diag = xp.einsum("wii->wi", Rup) - det = xp.prod(Rup_diag, axis=1) - - if self.ndown > 0: - (self.phib, Rdn) = qr(self.phib, mode=qr_mode) - Rdn_diag = xp.einsum("wii->wi", Rdn) - det *= xp.prod(Rdn_diag, axis=1) - self.detR = det - self.ovlp = self.ovlp / self.detR - else: - ndown = self.ndown - detR = [] - for iw in range(self.nwalkers): - (self.phia[iw], Rup) = qr(self.phia[iw], mode=qr_mode) - det_i = xp.prod(xp.diag(Rup)) - - if ndown > 0: - (self.phib[iw], Rdn) = qr(self.phib[iw], mode=qr_mode) - det_i *= xp.prod(xp.diag(Rdn)) - - detR += [det_i] - self.log_detR[iw] += xp.log(detR[iw]) - self.detR[iw] = detR[iw] - self.ovlp[iw] = self.ovlp[iw] / detR[iw] - - synchronize() - return self.detR - class UHFWalkersParticleHole(UHFWalkers): """UHF style walker specialized for its use with ParticleHole trial. @@ -371,3 +335,63 @@ def build(self, trial): dtype=numpy.complex128, ) self.ovlp = trial.calc_greens_function(self) + + +class UHFWalkersFP(UHFWalkers): + """UHF style walker specialized for its use with free projection.""" + + def orthogonalise(self, free_projection=False): + """Orthogonalise all walkers. + + Parameters + ---------- + free_projection : bool + This flag is not used here. + """ + detR = self.reortho() + magn, dtheta = xp.abs(self.detR), xp.angle(self.detR) + self.weight *= magn + self.phase *= xp.exp(1j * dtheta) + return detR + + def reortho_batched(self): + assert config.get_option("use_gpu") + (self.phia, Rup) = qr(self.phia, mode=qr_mode) + Rup_diag = xp.einsum("wii->wi", Rup) + det = xp.prod(Rup_diag, axis=1) + + if self.ndown > 0: + (self.phib, Rdn) = qr(self.phib, mode=qr_mode) + Rdn_diag = xp.einsum("wii->wi", Rdn) + det *= xp.prod(Rdn_diag, axis=1) + self.detR = det + self.ovlp = self.ovlp / self.detR + synchronize() + return self.detR + + def reortho(self): + """reorthogonalise walkers for free projection, retaining normalization. + + parameters + ---------- + """ + if config.get_option("use_gpu"): + return self.reortho_batched() + else: + ndown = self.ndown + detR = [] + for iw in range(self.nwalkers): + (self.phia[iw], Rup) = qr(self.phia[iw], mode=qr_mode) + det_i = xp.prod(xp.diag(Rup)) + + if ndown > 0: + (self.phib[iw], Rdn) = qr(self.phib[iw], mode=qr_mode) + det_i *= xp.prod(xp.diag(Rdn)) + + detR += [det_i] + self.log_detR[iw] += xp.log(detR[iw]) + self.detR[iw] = detR[iw] + self.ovlp[iw] = self.ovlp[iw] / detR[iw] + + synchronize() + return self.detR From a59cb1cf5acb169cc9bce85ca9a67964499d8359 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Fri, 23 Feb 2024 00:22:24 -0500 Subject: [PATCH 04/11] added jacknife in place of blocking for ratios --- ipie/analysis/blocking.py | 50 ++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/ipie/analysis/blocking.py b/ipie/analysis/blocking.py index d077678d..3607c783 100755 --- a/ipie/analysis/blocking.py +++ b/ipie/analysis/blocking.py @@ -392,39 +392,35 @@ def analyse_ekt_ipea(filename, ix=None, cutoff=1e-14, screen_factor=1): return (eip, eip_vec), (eea, eea_vec) -def block_ratios(num: numpy.ndarray, denom: numpy.ndarray): - r"""Block averaging of ratios. +def jackknife_ratios(num: numpy.ndarray, denom: numpy.ndarray): + r"""Jackknife estimation of standard deviation of the ratio of means. Parameters ---------- - num : :class:`numpy.ndarray` - Numerator. - denom : :class:`numpy.ndarray` - Denominator. + num : :class:`np.ndarray + Numerator samples. + denom : :class:`np.ndarray` + Denominator samples. Returns ------- - mean : :class:`numpy.ndarray` - Mean of the ratio. + mean : :class:`np.ndarray` + Ratio of means. + sigma : :class:`np.ndarray` + Standard deviation of the ratio of means. """ - mean = numpy.mean(num) / numpy.mean(denom) n_samples = num.size + num_mean = numpy.mean(num) + denom_mean = numpy.mean(denom) + mean = num_mean / denom_mean print(f"Complex mean: {mean:.8e}") - header_0 = "Block size" - header_1 = "# of blocks" - header_2 = "Mean" - header_3 = "Error" - print(f" {header_0:>17s} {header_1:>17s} {header_2:>17s} {header_3:>17s}") - block_sizes = numpy.array([1, 2, 5, 10, 20, 50, 100, 200, 300, 400, 500, 1000, 10000]) - for i in block_sizes[block_sizes < n_samples / 2.0]: - n_blocks = n_samples // i - blocked_denom = numpy.zeros(n_blocks, dtype=num.dtype) - blocked_num = numpy.zeros(n_blocks, dtype=num.dtype) - for j in range(n_blocks): - blocked_denom[j] = denom[j * i : (j + 1) * i].sum() - blocked_num[j] = num[j * i : (j + 1) * i].sum() - mean = numpy.mean(blocked_num) / numpy.mean(blocked_denom) - error = numpy.std((blocked_num / blocked_denom).real) / numpy.sqrt(n_blocks) - # taking real part for the error is a bit hacky - print(f" {i:>17d} {n_blocks:>17d} {mean.real:>17f} {error.real:>17f}") - return mean + jackknife_estimates = numpy.zeros(n_samples, dtype=num.dtype) + for i in range(n_samples): + mean_num_i = (num_mean * n_samples - num[i]) / (n_samples - 1) + mean_denom_i = (denom_mean * n_samples - denom[i]) / (n_samples - 1) + jackknife_estimates[i] = (mean_num_i / mean_denom_i).real + mean = numpy.mean(jackknife_estimates) + sigma = numpy.sqrt((n_samples - 1) * numpy.var(jackknife_estimates)) + print(f"Mean: {mean.real:.8e}") + print(f"Stochastic error: {sigma.real:.8e}") + return mean, sigma From 6693220a801fcada8f4e571953d1ce609a13a1b7 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Fri, 23 Feb 2024 00:23:07 -0500 Subject: [PATCH 05/11] added notebook --- examples/13-free_projection/fp_afqmc.ipynb | 1173 ++++++++++++++++++++ examples/13-free_projection/run_afqmc.py | 15 +- 2 files changed, 1180 insertions(+), 8 deletions(-) create mode 100644 examples/13-free_projection/fp_afqmc.ipynb diff --git a/examples/13-free_projection/fp_afqmc.ipynb b/examples/13-free_projection/fp_afqmc.ipynb new file mode 100644 index 00000000..0b29dcf7 --- /dev/null +++ b/examples/13-free_projection/fp_afqmc.ipynb @@ -0,0 +1,1173 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from pyscf import fci, gto, scf\n", + "\n", + "np.set_printoptions(precision=5, suppress=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "converged SCF energy = -5.25628158758201\n", + "converged SCF energy = -5.25628158758181 = 2.5845992e-13 2S+1 = 1\n", + " wavefunction is stable in the internal stability analysis\n", + " wavefunction is stable in the real -> complex stability analysis\n", + " wavefunction is stable in the UHF/UKS -> GHF/GKS stability analysis\n", + "converged SCF energy = -5.25628158758199 = 6.2172489e-14 2S+1 = 1\n", + ".SecondOrderUHF'> wavefunction is stable in the internal stability analysis\n", + ".SecondOrderUHF'> wavefunction is stable in the real -> complex stability analysis\n", + ".SecondOrderUHF'> wavefunction is stable in the UHF/UKS -> GHF/GKS stability analysis\n", + "converged SCF energy = -5.25628158758202 = 3.0198066e-14 2S+1 = 1\n", + "FCI energy: -5.3843610660956\n" + ] + } + ], + "source": [ + "r = 1.6\n", + "nH = 10\n", + "# geom = f\"H {-3*r/2} 0 0; H {-r/2} 0 0; H {r/2} 0 0; H {3*r/2} 0 0\"\n", + "geom = \"\"\n", + "for i in range(nH):\n", + " geom += \"H 0 0 %g\\n\" % (i * r)\n", + "mol = gto.M(atom=geom, basis=\"sto-6g\", verbose=3, unit=\"bohr\")\n", + "\n", + "mf = scf.RHF(mol)\n", + "mf.kernel()\n", + "\n", + "umf = scf.UHF(mol)\n", + "umf.kernel()\n", + "mo1 = umf.stability(external=True)[0]\n", + "umf = umf.newton().run(mo1, umf.mo_occ)\n", + "mo1 = umf.stability(external=True)[0]\n", + "umf = umf.newton().run(mo1, umf.mo_occ)\n", + "\n", + "# fci\n", + "cisolver = fci.FCI(mol, mf.mo_coeff)\n", + "e, ci = cisolver.kernel()\n", + "print(\"FCI energy: \", e)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Free projection AFQMC\n", + "\n", + "Evaluates the quantity\n", + "\n", + "$$ E(\\tau) = \\frac{\\langle \\Psi_l | H e^{-\\tau H} | \\Psi_r \\rangle}{\\langle \\Psi_l | e^{-\\tau H} | \\Psi_r \\rangle} $$\n", + "\n", + "where $|\\Psi_l\\rangle$ is a trial wave function and $|\\Psi_r\\rangle$ is an initial state. The propagator is sampled using Monte Carlo. $E(\\tau)$ converges to the ground state energy at long $\\tau$, but the energies get noisier at long $\\tau$ due to the sign problem.\n", + "\n", + "In the following, energy evaluations are performed after a block consisting of `num_steps` steps of duration `dt`. In one iteration, energy samples are collected at `num_blocks` different $\\tau$ values. Multiple walkers are used to batch operations together for computational efficiency. The total number of samples at a given $\\tau$ is given by `num_walkers` $\\times$ `num_iterations_fp`. The energy is then averaged over walkers and iterations.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# Note: batched not specified. Setting to default value of True.\n", + "# MPIHandler detected 1 groups with 1 members each\n", + "# Parsing input options for systems.Generic.\n", + "# Number of alpha electrons: 5\n", + "# Number of beta electrons: 5\n", + "# Setting integrals to hamiltonian.h5.\n", + "# Note: symmetry not specified. Setting to default value of True.\n", + "# Have shared memory: True\n", + "# Time to read integrals: 0.001281\n", + "# Time to pack Cholesky vectors: 0.000158\n", + "# Number of orbitals: 10\n", + "# Approximate memory required by Cholesky vectors 0.000020 GB\n", + "# Approximate memory required by packed Cholesky vectors 0.000011 GB\n", + "# Approximate memory required total 0.000031 GB\n", + "# Number of Cholesky vectors: 27\n", + "# Number of fields: 27\n", + "# Finished setting up GenericRealChol object.\n", + "# random seed is 212503\n", + "# ipie version: 0.7.1.dev0\n", + "# Git hash: e4163010b903af9fcab8f8f4180e4b1d18c7a46d-dirty.\n", + "# Git branch: develop.\n", + "# Found uncommitted changes and/or untracked files.\n", + "# Modified : ipie/analysis/blocking.py\n", + "# Modified : ipie/analysis/extraction.py\n", + "# Modified : ipie/propagation/free_propagation.py\n", + "# Modified : ipie/propagation/tests/test_generic.py\n", + "# Modified : ipie/qmc/calc.py\n", + "# Modified : ipie/qmc/options.py\n", + "# Modified : ipie/qmc/tests/test_afqmc_single_det_batch.py\n", + "# Modified : ipie/utils/testing.py\n", + "# Modified : ipie/walkers/base_walkers.py\n", + "# Modified : ipie/walkers/tests/test_single_det_uhf.py\n", + "# Modified : ipie/walkers/uhf_walkers.py\n", + "# Calculation uuid: 20ad8f3a-d12e-11ee-a4b0-f678500c90cd.\n", + "# Approximate memory available per node: 16.0000 GB.\n", + "# Running on 1 MPI rank.\n", + "# Root processor name: MacBook-Air-500\n", + "# Python interpreter: 3.11.5 (main, Sep 11 2023, 08:19:27) [Clang 14.0.6 ]\n", + "# Using numpy v1.25.2 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/numpy.\n", + "# - BLAS lib: openblas64_ openblas64_\n", + "# - BLAS dir: /usr/local/lib\n", + "# Using scipy v1.10.1 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/scipy.\n", + "# Using h5py v3.9.0 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/h5py.\n", + "# Using mpi4py v3.1.4 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/mpi4py.\n", + "# - mpicc: /Users/ankitmahajan/miniconda3/envs/py311/bin/mpicc\n", + "# Package cupy not found.\n", + "# MPI communicator : \n", + "# Available memory on the node is 16.000 GB\n", + "# Setting up estimator object.\n", + "# Writing estimator data to estimate.h5.0\n", + "# Finished settting up estimator object.\n", + "# Setting up estimator object.\n", + "# Writing estimator data to estimate.h5.1\n", + "# Finished settting up estimator object.\n", + "# Setting up estimator object.\n", + "# Writing estimator data to estimate.h5.2\n", + "# Finished settting up estimator object.\n", + "# Setting up estimator object.\n", + "# Writing estimator data to estimate.h5.3\n", + "# Finished settting up estimator object.\n", + " Iter TimeStep ENumer EDenom ETotal E1Body E2Body\n", + " 0 0 -2.9528586968990129e+02 5.4971903512908149e+01 -5.3715318757679116e+00 -1.6802177571144334e+01 1.1430645695376422e+01\n", + " 1 -3.4181998366788110e+02 6.3528368528187350e+01 -5.3805419269628274e+00 -1.6796283297553472e+01 1.1415741370590645e+01\n", + " 2 -4.0130715619649544e+02 7.4382545949291682e+01 -5.3954761823847068e+00 -1.6767578406780117e+01 1.1372102224395409e+01\n", + " 3 -5.7035941238826979e+02 1.0636317147516159e+02 -5.3622598945888003e+00 -1.6798706984286319e+01 1.1436447089697518e+01\n", + " 1 0 -2.7718259860644326e+02 5.1592201984180043e+01 -5.3724770848042844e+00 -1.6810888570411429e+01 1.1438411485607144e+01\n", + " 1 -3.0960846930468290e+02 5.7564998036104889e+01 -5.3783045997006749e+00 -1.6817766863848842e+01 1.1439462264148169e+01\n", + " 2 -3.8330685705680827e+02 7.1169488013081619e+01 -5.3856262382882614e+00 -1.6823832067678715e+01 1.1438205829390455e+01\n", + " 3 -4.4095810765797370e+02 8.1891330192013200e+01 -5.3846759604671641e+00 -1.6839159662590035e+01 1.1454483702122872e+01\n", + " 2 0 -2.9160470163599894e+02 5.4280194986976802e+01 -5.3722147435867829e+00 -1.6812212123740895e+01 1.1439997380154113e+01\n", + " 1 -3.2846514227596685e+02 6.0700227481781475e+01 -5.4113058129265399e+00 -1.6818401706334665e+01 1.1407095893408128e+01\n", + " 2 -4.0078835649674579e+02 7.4244485267392093e+01 -5.3986079486561751e+00 -1.6829365966680310e+01 1.1430758018024132e+01\n", + " 3 -3.9064382665212588e+02 7.2378383549968973e+01 -5.3974568293804568e+00 -1.6816593178471006e+01 1.1419136349090545e+01\n", + " 3 0 -3.2238031346176388e+02 6.0161083152903061e+01 -5.3585924073768147e+00 -1.6817961985303512e+01 1.1459369577926699e+01\n", + " 1 -4.0883661764184501e+02 7.6266989742368267e+01 -5.3606293146082402e+00 -1.6816841407201569e+01 1.1456212092593326e+01\n", + " 2 -3.8636741527563703e+02 7.1536133162787777e+01 -5.4005243428231529e+00 -1.6829066785303478e+01 1.1428542442480323e+01\n", + " 3 -4.8434479724293442e+02 8.9975974321415777e+01 -5.3828559848533670e+00 -1.6832435504157083e+01 1.1449579519303716e+01\n", + " 4 0 -2.8229222584289380e+02 5.2636538802646605e+01 -5.3630454604489097e+00 -1.6809043420875337e+01 1.1445997960426428e+01\n", + " 1 -3.8690028508101523e+02 7.2220983195639604e+01 -5.3571497938952808e+00 -1.6810793575063968e+01 1.1453643781168683e+01\n", + " 2 -3.8332257958005459e+02 7.0824126573587478e+01 -5.4124705616585373e+00 -1.6804304277954060e+01 1.1391833716295521e+01\n", + " 3 -4.7146194769517376e+02 8.7319621190109288e+01 -5.3992493806563351e+00 -1.6753864921120549e+01 1.1354615540464213e+01\n", + " 5 0 -2.6937930360140780e+02 5.0254781736425997e+01 -5.3602333264685873e+00 -1.6807370837847976e+01 1.1447137511379388e+01\n", + " 1 -2.9713385777400060e+02 5.5180634883660566e+01 -5.3847646885780138e+00 -1.6811598856164533e+01 1.1426834167586518e+01\n", + " 2 -4.3667548648413981e+02 8.1489738322397116e+01 -5.3586457276262927e+00 -1.6792443942541816e+01 1.1433798214915523e+01\n", + " 3 -4.6806022910785885e+02 8.6651134248098856e+01 -5.4009152147863375e+00 -1.6793949471459928e+01 1.1393034256673586e+01\n", + " 6 0 -2.8186183744442428e+02 5.2508729252892977e+01 -5.3679004256032359e+00 -1.6813907624708552e+01 1.1446007199105317e+01\n", + " 1 -3.2090870493150453e+02 5.9704808205555061e+01 -5.3748145588450340e+00 -1.6797307988029868e+01 1.1422493429184831e+01\n", + " 2 -3.7511918155081321e+02 6.9683421455966183e+01 -5.3825990524066114e+00 -1.6825523515947495e+01 1.1442924463540885e+01\n", + " 3 -4.2857007495516859e+02 7.9416401533101393e+01 -5.3964863769310103e+00 -1.6835684442923949e+01 1.1439198065992933e+01\n", + " 7 0 -2.9339865551887982e+02 5.4634068478176602e+01 -5.3702978724201511e+00 -1.6810859225441316e+01 1.1440561353021163e+01\n", + " 1 -3.4830987870599466e+02 6.4681234211108205e+01 -5.3852662695200246e+00 -1.6811646762444752e+01 1.1426380492924734e+01\n", + " 2 -4.1846339282871094e+02 7.7750101572502828e+01 -5.3820560098682968e+00 -1.6833893374139876e+01 1.1451837364271581e+01\n", + " 3 -5.7350987300853069e+02 1.0663813146248455e+02 -5.3780416734724081e+00 -1.6817701587830182e+01 1.1439659914357774e+01\n", + " 8 0 -3.0586306729778596e+02 5.6895694106824138e+01 -5.3758903058241172e+00 -1.6819836220767122e+01 1.1443945914943006e+01\n", + " 1 -3.2093845028457719e+02 5.9533154528575345e+01 -5.3909182907836097e+00 -1.6825403777633127e+01 1.1434485486849519e+01\n", + " 2 -4.6416149388906797e+02 8.6680566390681648e+01 -5.3549133804715003e+00 -1.6827461642590979e+01 1.1472548262119476e+01\n", + " 3 -5.9189721311378901e+02 1.0987806419728238e+02 -5.3868346397485398e+00 -1.6845506693498034e+01 1.1458672053749499e+01\n", + " 9 0 -3.0167937145395837e+02 5.6276099659281435e+01 -5.3606765382384776e+00 -1.6826452040515857e+01 1.1465775502277376e+01\n", + " 1 -3.9686011756806022e+02 7.3882303512786748e+01 -5.3714873330909123e+00 -1.6824610629112939e+01 1.1453123296022030e+01\n", + " 2 -5.4631257779563225e+02 1.0192659314851454e+02 -5.3600573794158262e+00 -1.6794074529484931e+01 1.1434017150069101e+01\n", + " 3 -6.0948528432326600e+02 1.1297818974083833e+02 -5.3946052052866236e+00 -1.6812038861522439e+01 1.1417433656235813e+01\n", + " 10 0 -3.1162371296029750e+02 5.8278844282867993e+01 -5.3471127287244693e+00 -1.6818070890500817e+01 1.1470958161776348e+01\n", + " 1 -3.8932954130612910e+02 7.2264309012829855e+01 -5.3869958484079152e+00 -1.6811106859577322e+01 1.1424111011169407e+01\n", + " 2 -5.0294493417468215e+02 9.3740530787383591e+01 -5.3652710130520642e+00 -1.6815608222957682e+01 1.1450337209905618e+01\n", + " 3 -4.1912229938749272e+02 7.7244261774469692e+01 -5.4256083093717979e+00 -1.6809205984140920e+01 1.1383597674769124e+01\n", + " 11 0 -3.2706217391145248e+02 6.1021005615805556e+01 -5.3598032215277627e+00 -1.6811195182062630e+01 1.1451391960534867e+01\n", + " 1 -3.3346382487151072e+02 6.1736303746547975e+01 -5.4017154607152884e+00 -1.6804258187775108e+01 1.1402542727059823e+01\n", + " 2 -3.9932825082953701e+02 7.4254521309391691e+01 -5.3778327194135152e+00 -1.6804915577230432e+01 1.1427082857816917e+01\n", + " 3 -5.2912237172395919e+02 9.8288376069827024e+01 -5.3830022351337297e+00 -1.6802937529548590e+01 1.1419935294414858e+01\n", + " 12 0 -3.1998661832301786e+02 5.9740759500660324e+01 -5.3562624951872770e+00 -1.6822225317467396e+01 1.1465962822280119e+01\n", + " 1 -4.2623119047501046e+02 7.9249782040857696e+01 -5.3783346916173960e+00 -1.6839390811710999e+01 1.1461056120093600e+01\n", + " 2 -6.0928513348883212e+02 1.1335327193564984e+02 -5.3747888094507950e+00 -1.6841614058699506e+01 1.1466825249248711e+01\n", + " 3 -7.6779646512877821e+02 1.4276718204617674e+02 -5.3779449529291803e+00 -1.6805335644215454e+01 1.1427390691286270e+01\n", + " 13 0 -3.5397978798033768e+02 6.6315338032109054e+01 -5.3378189494408650e+00 -1.6805536828331391e+01 1.1467717878890525e+01\n", + " 1 -4.7211793951002102e+02 8.8292613541911948e+01 -5.3472082524165412e+00 -1.6803381829577944e+01 1.1456173577161401e+01\n", + " 2 -5.4485188017749658e+02 1.0145511459028305e+02 -5.3703489741901258e+00 -1.6806171788928825e+01 1.1435822814738694e+01\n", + " 3 -5.6131331387600733e+02 1.0368312148453214e+02 -5.4136510498536934e+00 -1.6800117733271147e+01 1.1386466683417455e+01\n", + " 14 0 -3.0879213697438757e+02 5.7646273743765974e+01 -5.3566117726003526e+00 -1.6822682955227645e+01 1.1466071182627296e+01\n", + " 1 -2.8837309119057369e+02 5.3353978998010696e+01 -5.4044103254785192e+00 -1.6828425283423790e+01 1.1424014957945275e+01\n", + " 2 -3.3439984759638833e+02 6.1941074820234832e+01 -5.3983497576157484e+00 -1.6806956821472852e+01 1.1408607063857096e+01\n", + " 3 -4.2729324785476672e+02 7.9650865630697496e+01 -5.3640877890563505e+00 -1.6838327467253144e+01 1.1474239678196794e+01\n", + " 15 0 -3.2722885497635684e+02 6.0996043889157356e+01 -5.3647224605133887e+00 -1.6807303204180293e+01 1.1442580743666911e+01\n", + " 1 -4.2821639666719619e+02 7.9817754058765857e+01 -5.3649598005204089e+00 -1.6803018284720906e+01 1.1438058484200495e+01\n", + " 2 -5.9705753862748111e+02 1.1121208773990323e+02 -5.3686908352963547e+00 -1.6793625165648201e+01 1.1424934330351848e+01\n", + " 3 -6.2036994082312253e+02 1.1523542215055859e+02 -5.3833885106443287e+00 -1.6806983636829855e+01 1.1423595126185528e+01\n", + " 16 0 -2.6145538228754128e+02 4.8565931734848469e+01 -5.3835136370999841e+00 -1.6809645829432359e+01 1.1426132192332380e+01\n", + " 1 -3.2510648315334140e+02 6.0635822516370204e+01 -5.3613519751164480e+00 -1.6809326057766683e+01 1.1447974082650237e+01\n", + " 2 -3.0644350787212477e+02 5.6573600592620359e+01 -5.4159327282336784e+00 -1.6770236348002381e+01 1.1354303619768706e+01\n", + " 3 -3.2922690542818953e+02 6.0709661445221606e+01 -5.4232962751974219e+00 -1.6793020974771132e+01 1.1369724699573711e+01\n", + " 17 0 -3.4829751430897284e+02 6.5161433412525867e+01 -5.3451460594926612e+00 -1.6808372958457262e+01 1.1463226898964601e+01\n", + " 1 -4.3202095924513173e+02 8.0547410866651859e+01 -5.3634736716580669e+00 -1.6806199779364182e+01 1.1442726107706108e+01\n", + " 2 -5.9175898090931571e+02 1.1031811665148300e+02 -5.3635385497913814e+00 -1.6810186876057436e+01 1.1446648326266054e+01\n", + " 3 -6.8723513327771616e+02 1.2734672541231596e+02 -5.3966512862416760e+00 -1.6809574202256591e+01 1.1412922916014917e+01\n", + " 18 0 -3.2951805231022047e+02 6.1547189443613114e+01 -5.3539114965424082e+00 -1.6801354697843696e+01 1.1447443201301288e+01\n", + " 1 -3.8782053673928704e+02 7.2041720815131029e+01 -5.3834036570941723e+00 -1.6810570215968042e+01 1.1427166558873866e+01\n", + " 2 -3.9277170298158831e+02 7.2447718712233922e+01 -5.4213955015344624e+00 -1.6783057733740993e+01 1.1361662232206534e+01\n", + " 3 -4.7522504132330334e+02 8.8047100425865125e+01 -5.3973833450531350e+00 -1.6850757302511450e+01 1.1453373957458313e+01\n", + " 19 0 -2.7450243576091646e+02 5.1187389440796636e+01 -5.3626990276566628e+00 -1.6811742316108351e+01 1.1449043288451692e+01\n", + " 1 -3.3108207580251053e+02 6.1486329214971512e+01 -5.3846355563630866e+00 -1.6801106523508757e+01 1.1416470967145672e+01\n", + " 2 -4.5526399185782748e+02 8.4881870957595268e+01 -5.3635635190264619e+00 -1.6840998207953298e+01 1.1477434688926838e+01\n", + " 3 -4.9643435729600316e+02 9.2223488853262097e+01 -5.3819194496889420e+00 -1.6802362505755156e+01 1.1420443056066215e+01\n", + " 20 0 -3.2013081875514445e+02 5.9759034130250683e+01 -5.3570050599201480e+00 -1.6800137255168710e+01 1.1443132195248563e+01\n", + " 1 -3.5974307420290836e+02 6.6750960421811513e+01 -5.3893359526075892e+00 -1.6787885271610101e+01 1.1398549319002516e+01\n", + " 2 -3.9634430973617964e+02 7.3645713086142692e+01 -5.3814662517996261e+00 -1.6817451720578127e+01 1.1435985468778503e+01\n", + " 3 -5.1254591528639446e+02 9.5227540077366612e+01 -5.3807878501804272e+00 -1.6782043203166367e+01 1.1401255352985936e+01\n", + " 21 0 -2.5842910241941257e+02 4.8209529140344578e+01 -5.3605150885500565e+00 -1.6809747624738385e+01 1.1449232536188333e+01\n", + " 1 -3.0546310856847691e+02 5.6907994877414843e+01 -5.3675860401257358e+00 -1.6819424422802236e+01 1.1451838382676501e+01\n", + " 2 -3.8556124057990314e+02 7.1713609548452823e+01 -5.3765779528776720e+00 -1.6835702474762169e+01 1.1459124521884492e+01\n", + " 3 -5.2675764281955730e+02 9.7948732116908872e+01 -5.3778300454578982e+00 -1.6851544122328828e+01 1.1473714076870932e+01\n", + " 22 0 -3.2842240833590085e+02 6.1293670137193764e+01 -5.3581912572337131e+00 -1.6815646606620209e+01 1.1457455349386496e+01\n", + " 1 -3.7937404916425498e+02 7.0315685039559284e+01 -5.3949708543411861e+00 -1.6810853623282330e+01 1.1415882768941147e+01\n", + " 2 -4.2293081763442467e+02 7.8396289213690039e+01 -5.3948758279421005e+00 -1.6812901117524682e+01 1.1418025289582582e+01\n", + " 3 -5.6555291793904246e+02 1.0517366513298288e+02 -5.3759878591598564e+00 -1.6823581370492438e+01 1.1447593511332585e+01\n", + " 23 0 -2.7974775310251891e+02 5.2062230922004190e+01 -5.3733447364800435e+00 -1.6808342477425086e+01 1.1434997740945041e+01\n", + " 1 -2.8110840621410466e+02 5.2050879894756122e+01 -5.4004483991044205e+00 -1.6811552809932330e+01 1.1411104410827910e+01\n", + " 2 -3.3612934713581359e+02 6.2417015449667431e+01 -5.3852421399087831e+00 -1.6813285782026018e+01 1.1428043642117233e+01\n", + " 3 -3.5855163351350905e+02 6.6437483632447325e+01 -5.3963592734402512e+00 -1.6779572000752253e+01 1.1383212727311999e+01\n", + " 24 0 -3.6795765218959252e+02 6.8921131903884174e+01 -5.3387645640846690e+00 -1.6797386688424414e+01 1.1458622124339746e+01\n", + " 1 -4.2258052587862687e+02 7.8719920426862075e+01 -5.3681622321059370e+00 -1.6816760365782812e+01 1.1448598133676875e+01\n", + " 2 -3.8724247461320175e+02 7.1312083253941594e+01 -5.4302324330452496e+00 -1.6786527618414976e+01 1.1356295185369724e+01\n", + " 3 -3.7973610379298646e+02 7.0240154712893428e+01 -5.4062385245808811e+00 -1.6855597139339814e+01 1.1449358614758932e+01\n", + " 25 0 -3.0205306210651855e+02 5.6309593577877003e+01 -5.3641392944444162e+00 -1.6804825363235693e+01 1.1440686068791278e+01\n", + " 1 -4.0919827244139225e+02 7.6245791186951053e+01 -5.3661056096019069e+00 -1.6806553750924131e+01 1.1440448141322221e+01\n", + " 2 -4.8770258411859828e+02 9.0610573555472044e+01 -5.3826749409944599e+00 -1.6836494303309230e+01 1.1453819362314771e+01\n", + " 3 -6.9396942387629144e+02 1.2954866382972114e+02 -5.3571249990682270e+00 -1.6808948808879485e+01 1.1451823809811261e+01\n", + " 26 0 -3.1887922221380092e+02 5.9518349629569329e+01 -5.3576239427813448e+00 -1.6820202773989330e+01 1.1462578831207985e+01\n", + " 1 -3.5791082744604506e+02 6.6201981631590641e+01 -5.4063208703201919e+00 -1.6815921748568567e+01 1.1409600878248376e+01\n", + " 2 -4.6587840253739159e+02 8.6404889792917828e+01 -5.3917996711185854e+00 -1.6805929855880006e+01 1.1414130184761420e+01\n", + " 3 -4.6122685523150886e+02 8.5137713182127769e+01 -5.4172254860923523e+00 -1.6844682818198816e+01 1.1427457332106467e+01\n", + " 27 0 -3.7181671625225584e+02 6.9593325161747103e+01 -5.3427190505769957e+00 -1.6814425499238784e+01 1.1471706448661786e+01\n", + " 1 -3.6611407632181630e+02 6.7858724666732428e+01 -5.3952665170125975e+00 -1.6816148170789486e+01 1.1420881653776890e+01\n", + " 2 -3.7930169121987262e+02 7.0432623192975669e+01 -5.3853102259000201e+00 -1.6834301218953421e+01 1.1448990993053400e+01\n", + " 3 -5.1255435667810843e+02 9.5692019473325686e+01 -5.3557226226632979e+00 -1.6821537783388489e+01 1.1465815160725192e+01\n", + " 28 0 -3.1446974789644281e+02 5.8714240642138805e+01 -5.3559336700255775e+00 -1.6801456902537211e+01 1.1445523232511635e+01\n", + " 1 -3.8697208988465229e+02 7.1904317618927706e+01 -5.3816726016655148e+00 -1.6815881518190075e+01 1.1434208916524563e+01\n", + " 2 -3.8767842416051548e+02 7.1650280638394392e+01 -5.4095805642206729e+00 -1.6813168557632856e+01 1.1403587993412184e+01\n", + " 3 -4.0881696722983730e+02 7.5609715687458660e+01 -5.4058443743383204e+00 -1.6789538124398433e+01 1.1383693750060113e+01\n", + " 29 0 -2.7982476283786667e+02 5.2013540885158996e+01 -5.3797439316962015e+00 -1.6806646497220800e+01 1.1426902565524601e+01\n", + " 1 -3.9417545089591761e+02 7.3403941282580746e+01 -5.3700682389807524e+00 -1.6815577420448776e+01 1.1445509181468026e+01\n", + " 2 -4.1716341940816744e+02 7.7336580925410757e+01 -5.3931754113276256e+00 -1.6845921285440653e+01 1.1452745874113029e+01\n", + " 3 -6.6871322215598479e+02 1.2501858184758109e+02 -5.3476964466441421e+00 -1.6800647375557812e+01 1.1452950928913671e+01\n", + " 30 0 -3.0746078768404016e+02 5.7308523671235527e+01 -5.3650157714318745e+00 -1.6801370288385730e+01 1.1436354516953852e+01\n", + " 1 -3.2630488503054187e+02 6.0448003553115186e+01 -5.3973801074654828e+00 -1.6825505311109779e+01 1.1428125203644296e+01\n", + " 2 -3.3871918575188909e+02 6.2584398922618995e+01 -5.4114938957323329e+00 -1.6830103498673072e+01 1.1418609602940737e+01\n", + " 3 -4.3979641696965012e+02 8.1699939492507056e+01 -5.3823837014367779e+00 -1.6811362064969764e+01 1.1428978363532986e+01\n", + " 31 0 -2.8498917142958373e+02 5.3019615201947794e+01 -5.3751390863070814e+00 -1.6802781514074194e+01 1.1427642427767109e+01\n", + " 1 -3.1762301384821285e+02 5.8939226392152477e+01 -5.3885895722830286e+00 -1.6809608111407254e+01 1.1421018539124223e+01\n", + " 2 -3.7727726857990149e+02 6.9953062527967745e+01 -5.3930038015803721e+00 -1.6778977699866939e+01 1.1385973898286569e+01\n", + " 3 -4.3228175611790181e+02 8.0321639981081404e+01 -5.3819511528155388e+00 -1.6777949516795911e+01 1.1395998363980372e+01\n", + " 32 0 -3.0500252494371006e+02 5.6863980634666909e+01 -5.3636214114680572e+00 -1.6814838212156566e+01 1.1451216800688512e+01\n", + " 1 -3.6842425258342382e+02 6.8393403861407165e+01 -5.3867657245065734e+00 -1.6814947229700469e+01 1.1428181505193891e+01\n", + " 2 -3.6933749893835926e+02 6.8466601817177548e+01 -5.3944771638931899e+00 -1.6831995810586317e+01 1.1437518646693125e+01\n", + " 3 -4.3138114762670000e+02 8.0254419538127721e+01 -5.3747503324182171e+00 -1.6829371554481359e+01 1.1454621222063142e+01\n", + " 33 0 -3.0330203394478178e+02 5.6440658699140776e+01 -5.3737554307203661e+00 -1.6809611861142599e+01 1.1435856430422232e+01\n", + " 1 -4.1058675164583866e+02 7.6524417234712161e+01 -5.3653959203730972e+00 -1.6825028849203317e+01 1.1459632928830223e+01\n", + " 2 -4.8821363459916194e+02 9.0625477623067198e+01 -5.3872479177009138e+00 -1.6818237878210507e+01 1.1430989960509594e+01\n", + " 3 -6.5479033069696527e+02 1.2220705869927306e+02 -5.3580398478523819e+00 -1.6793485341387207e+01 1.1435445493534823e+01\n", + " 34 0 -2.7341049627097351e+02 5.0841090315981369e+01 -5.3776877049634386e+00 -1.6804797016838773e+01 1.1427109311875334e+01\n", + " 1 -3.4879651121640507e+02 6.4862419152762200e+01 -5.3776211310120123e+00 -1.6810813972167090e+01 1.1433192841155076e+01\n", + " 2 -3.6501519950039170e+02 6.7577781276326604e+01 -5.4007084001724754e+00 -1.6832896632086236e+01 1.1432188231913759e+01\n", + " 3 -3.6857622974164929e+02 6.8125399973273701e+01 -5.4086225828919465e+00 -1.6833918520993258e+01 1.1425295938101311e+01\n", + " 35 0 -2.9280390341974652e+02 5.4536321727626536e+01 -5.3689760602884933e+00 -1.6797916659864367e+01 1.1428940599575874e+01\n", + " 1 -3.2505548457158375e+02 6.0401147338353368e+01 -5.3816310290338549e+00 -1.6788282294624921e+01 1.1406651265591066e+01\n", + " 2 -3.9845099918116290e+02 7.4365914540394940e+01 -5.3578734016761231e+00 -1.6791539128987718e+01 1.1433665727311597e+01\n", + " 3 -6.0473117128833042e+02 1.1310782674116777e+02 -5.3463957378056870e+00 -1.6811918526860566e+01 1.1465522789054878e+01\n", + " 36 0 -2.5742436750668992e+02 4.7847306180434714e+01 -5.3801134907324704e+00 -1.6804577494581579e+01 1.1424464003849108e+01\n", + " 1 -3.6362107299557476e+02 6.7839507520485085e+01 -5.3600215293810791e+00 -1.6809848071562637e+01 1.1449826542181562e+01\n", + " 2 -5.1846966047062187e+02 9.6189714671022287e+01 -5.3894202931650916e+00 -1.6820401607959745e+01 1.1430981314794654e+01\n", + " 3 -6.2274256387867274e+02 1.1612688298461889e+02 -5.3627717157980799e+00 -1.6811670066544579e+01 1.1448898350746500e+01\n", + " 37 0 -3.4050988533585962e+02 6.3603935757890874e+01 -5.3535224271031110e+00 -1.6805923821490968e+01 1.1452401394387859e+01\n", + " 1 -4.1186110451382575e+02 7.6569003503926552e+01 -5.3789714563865836e+00 -1.6817421366301001e+01 1.1438449909914418e+01\n", + " 2 -5.0926308290544841e+02 9.4700044681467261e+01 -5.3775031053661104e+00 -1.6851550688672713e+01 1.1474047583306604e+01\n", + " 3 -6.6791681640315858e+02 1.2447132124508160e+02 -5.3660145813948716e+00 -1.6822397359452964e+01 1.1456382778058092e+01\n", + " 38 0 -3.0600718505851034e+02 5.7039265254185473e+01 -5.3648617868933632e+00 -1.6818456667063632e+01 1.1453594880170266e+01\n", + " 1 -3.0357309763577905e+02 5.6095715410497199e+01 -5.4116206683221462e+00 -1.6805923492847121e+01 1.1394302824524978e+01\n", + " 2 -4.3517465532447881e+02 8.1138973884429063e+01 -5.3632662427464721e+00 -1.6838418054992690e+01 1.1475151812246217e+01\n", + " 3 -3.5722073728510571e+02 6.6035476743609152e+01 -5.4097030061736850e+00 -1.6850492304683492e+01 1.1440789298509809e+01\n", + " 39 0 -2.9124912129223600e+02 5.4171357178862223e+01 -5.3764287076669630e+00 -1.6822867628220624e+01 1.1446438920553664e+01\n", + " 1 -2.7458545277159845e+02 5.0764438879123247e+01 -5.4087273114628251e+00 -1.6797888160670865e+01 1.1389160849208041e+01\n", + " 2 -4.3504475074172677e+02 8.1223939606722467e+01 -5.3559007831596013e+00 -1.6817565323830944e+01 1.1461664540671347e+01\n", + " 3 -6.1002054127004544e+02 1.1320897995014886e+02 -5.3877970401278441e+00 -1.6798700580404407e+01 1.1410903540276562e+01\n", + " 40 0 -2.8147072423510042e+02 5.2357964219200284e+01 -5.3758719725100050e+00 -1.6795037861826696e+01 1.1419165889316689e+01\n", + " 1 -2.9860556552552708e+02 5.5399582359261963e+01 -5.3900077180545010e+00 -1.6787424393499972e+01 1.1397416675445475e+01\n", + " 2 -3.3546004461966447e+02 6.2057386763441293e+01 -5.4056472062010181e+00 -1.6819207717949773e+01 1.1413560511748750e+01\n", + " 3 -3.7468051172450538e+02 6.9521461641427152e+01 -5.3893270254728876e+00 -1.6832469088565386e+01 1.1443142063092496e+01\n", + " 41 0 -3.0691124862292673e+02 5.7176479780753453e+01 -5.3677994166611640e+00 -1.6803805594592220e+01 1.1436006177931057e+01\n", + " 1 -3.8803233079314549e+02 7.2128217980913348e+01 -5.3797573332433863e+00 -1.6817126570202372e+01 1.1437369236958993e+01\n", + " 2 -3.5234173703157347e+02 6.5193098990209265e+01 -5.4027355067837179e+00 -1.6811529062088752e+01 1.1408793555305035e+01\n", + " 3 -4.0441912439254247e+02 7.4582000745798069e+01 -5.4223243313224021e+00 -1.6824074994754071e+01 1.1401750663431669e+01\n", + " 42 0 -2.8886539892810436e+02 5.3793310162997997e+01 -5.3699156922380142e+00 -1.6809891705789695e+01 1.1439976013551680e+01\n", + " 1 -3.0706803325631671e+02 5.6860216649011512e+01 -5.4004177153073023e+00 -1.6793118638696996e+01 1.1392700923389697e+01\n", + " 2 -3.5330610637523847e+02 6.5493098465626048e+01 -5.3942067641525266e+00 -1.6786212245668263e+01 1.1392005481515735e+01\n", + " 3 -4.9063377054609276e+02 9.1255557371886184e+01 -5.3764544615413694e+00 -1.6827008476475324e+01 1.1450554014933955e+01\n", + " 43 0 -2.6887792807340480e+02 5.0090044495709193e+01 -5.3678900430300054e+00 -1.6810486584905174e+01 1.1442596541875167e+01\n", + " 1 -3.2795051954436929e+02 6.0830127582919708e+01 -5.3911161144895319e+00 -1.6804970352072587e+01 1.1413854237583056e+01\n", + " 2 -4.0120197330993665e+02 7.4639553513636045e+01 -5.3752236530341895e+00 -1.6810134650119398e+01 1.1434910997085209e+01\n", + " 3 -4.9826911535579484e+02 9.2744118860953407e+01 -5.3719248758134315e+00 -1.6804373579780460e+01 1.1432448703967031e+01\n", + " 44 0 -3.0389888672595794e+02 5.6760676927132508e+01 -5.3540153923438139e+00 -1.6810507815965707e+01 1.1456492423621896e+01\n", + " 1 -3.4223408668857036e+02 6.3381573193028132e+01 -5.3994886842330390e+00 -1.6809171910816193e+01 1.1409683226583160e+01\n", + " 2 -3.8974871396179003e+02 7.2426146949478735e+01 -5.3814085036141313e+00 -1.6828887586678867e+01 1.1447479083064733e+01\n", + " 3 -4.7532687822719043e+02 8.8503563688476206e+01 -5.3707229145971089e+00 -1.6833847614727802e+01 1.1463124700130694e+01\n", + " 45 0 -2.6765090780525264e+02 4.9758107854452007e+01 -5.3790505413921998e+00 -1.6822289402164987e+01 1.1443238860772786e+01\n", + " 1 -3.3673188337955952e+02 6.2917013843217568e+01 -5.3520662506405055e+00 -1.6810346886754214e+01 1.1458280636113710e+01\n", + " 2 -4.7723051995924175e+02 8.9123296726070890e+01 -5.3546390950573519e+00 -1.6801320603484715e+01 1.1446681508427364e+01\n", + " 3 -3.8577828159086710e+02 7.0989687625144654e+01 -5.4342980033404160e+00 -1.6838498617726270e+01 1.1404200614385855e+01\n", + " 46 0 -3.1731760755510578e+02 5.9217895494757030e+01 -5.3584659146214859e+00 -1.6804519535212467e+01 1.1446053620590977e+01\n", + " 1 -3.0736004366650639e+02 5.6831833699978858e+01 -5.4079284830939391e+00 -1.6815370440681370e+01 1.1407441957587432e+01\n", + " 2 -3.0202850513684479e+02 5.6010172120187214e+01 -5.3916702915797581e+00 -1.6853450632971423e+01 1.1461780341391666e+01\n", + " 3 -3.6117919307015705e+02 6.7091884490908129e+01 -5.3838679784054326e+00 -1.6820579664714590e+01 1.1436711686309158e+01\n", + " 47 0 -3.0562548045102199e+02 5.6996696170094580e+01 -5.3621430029378931e+00 -1.6821948787875183e+01 1.1459805784937291e+01\n", + " 1 -3.4137671740727217e+02 6.3502920024907979e+01 -5.3757122874619085e+00 -1.6812393035544225e+01 1.1436680748082312e+01\n", + " 2 -4.3724235726679603e+02 8.1417072196848338e+01 -5.3698948098668486e+00 -1.6806658823542378e+01 1.1436764013675527e+01\n", + " 3 -5.4273747763360586e+02 1.0096596235906357e+02 -5.3753044245656110e+00 -1.6855727271606110e+01 1.1480422847040501e+01\n", + " 48 0 -3.0629702459103584e+02 5.7065881556171114e+01 -5.3674375746972105e+00 -1.6808250991273091e+01 1.1440813416575882e+01\n", + " 1 -3.6377798686908926e+02 6.7668050799494452e+01 -5.3759236455296699e+00 -1.6775986555429267e+01 1.1400062909899594e+01\n", + " 2 -4.0893099846400412e+02 7.5954485569425444e+01 -5.3839190324602288e+00 -1.6782628485864784e+01 1.1398709453404559e+01\n", + " 3 -6.0362725472106445e+02 1.1237164713175211e+02 -5.3708156864737626e+00 -1.6785267233106186e+01 1.1414451546632426e+01\n", + " 49 0 -2.6423712645744536e+02 4.9060232536098397e+01 -5.3859706248330497e+00 -1.6804501950078429e+01 1.1418531325245379e+01\n", + " 1 -2.6945318948857823e+02 4.9900005332623891e+01 -5.3999015800553058e+00 -1.6784728662620786e+01 1.1384827082565483e+01\n", + " 2 -3.1602592940223354e+02 5.8542841228985267e+01 -5.3980086649401002e+00 -1.6793587419952487e+01 1.1395578755012385e+01\n", + " 3 -3.6020682164592733e+02 6.6880957076457207e+01 -5.3847542474437402e+00 -1.6855872258499168e+01 1.1471118011055427e+01\n", + " 50 0 -3.0319267959428635e+02 5.6587984682808774e+01 -5.3579174219322585e+00 -1.6813887402857493e+01 1.1455969980925238e+01\n", + " 1 -3.8258532025891321e+02 7.1114641274372801e+01 -5.3798599410714907e+00 -1.6811937949726733e+01 1.1432078008655241e+01\n", + " 2 -4.8201194002009174e+02 8.9387766270089969e+01 -5.3924660414804562e+00 -1.6800492502932478e+01 1.1408026461452025e+01\n", + " 3 -8.3931188499389179e+02 1.5666155173804540e+02 -5.3574847479037535e+00 -1.6815703235190522e+01 1.1458218487286770e+01\n", + " 51 0 -3.1277540317220331e+02 5.8363393129718816e+01 -5.3590260972178765e+00 -1.6810309405066800e+01 1.1451283307848922e+01\n", + " 1 -3.8945532612558856e+02 7.2532121677701923e+01 -5.3694594229815200e+00 -1.6794977097628973e+01 1.1425517674647455e+01\n", + " 2 -4.4910593691241934e+02 8.3493017528779461e+01 -5.3788183495530788e+00 -1.6783708040619373e+01 1.1404889691066291e+01\n", + " 3 -7.0181798767308669e+02 1.3104490916624169e+02 -5.3555015812220130e+00 -1.6801172438806415e+01 1.1445670857584400e+01\n", + " 52 0 -3.1981774419115203e+02 5.9586630943181625e+01 -5.3672391862140119e+00 -1.6813679249360643e+01 1.1446440063146630e+01\n", + " 1 -3.4446418819181679e+02 6.3896144699744156e+01 -5.3909452165125940e+00 -1.6835442074590343e+01 1.1444496858077750e+01\n", + " 2 -3.9444877143572546e+02 7.2910377804758781e+01 -5.4100558968370409e+00 -1.6811912280992711e+01 1.1401856384155671e+01\n", + " 3 -5.6284361711479494e+02 1.0452510697056626e+02 -5.3848666237977065e+00 -1.6793808662495511e+01 1.1408942038697802e+01\n", + " 53 0 -2.6599217344190112e+02 4.9449606946306794e+01 -5.3789526634638163e+00 -1.6819970866151444e+01 1.1441018202687626e+01\n", + " 1 -2.4829483121883322e+02 4.5868722736012010e+01 -5.4129438187016250e+00 -1.6815457447502776e+01 1.1402513628801151e+01\n", + " 2 -2.5568879008458231e+02 4.7243937409482122e+01 -5.4116238046911445e+00 -1.6801862909895235e+01 1.1390239105204085e+01\n", + " 3 -3.3528939055516162e+02 6.2501295919305072e+01 -5.3641613634327205e+00 -1.6815778430965402e+01 1.1451617067532680e+01\n", + " 54 0 -2.8870154121864374e+02 5.3795313686008981e+01 -5.3666541067806977e+00 -1.6804883818489145e+01 1.1438229711708450e+01\n", + " 1 -3.5168011301478606e+02 6.5212803519570571e+01 -5.3927117767136901e+00 -1.6808682709872212e+01 1.1415970933158517e+01\n", + " 2 -4.3123145499320401e+02 8.0128141269904120e+01 -5.3817774155223317e+00 -1.6812597633852125e+01 1.1430820218329794e+01\n", + " 3 -4.9985520761947976e+02 9.2987912764399184e+01 -5.3754561161547203e+00 -1.6792766534610742e+01 1.1417310418456024e+01\n", + " 55 0 -3.2700640887788148e+02 6.0997543168759933e+01 -5.3609683423602981e+00 -1.6824134684222681e+01 1.1463166341862379e+01\n", + " 1 -4.4990621767894714e+02 8.3802958655108128e+01 -5.3686710348637501e+00 -1.6806393568245813e+01 1.1437722533382058e+01\n", + " 2 -5.1764826039990999e+02 9.6151252982469330e+01 -5.3837716402461879e+00 -1.6820051976621777e+01 1.1436280336375589e+01\n", + " 3 -6.1040283191006813e+02 1.1379801516659543e+02 -5.3635567710522780e+00 -1.6797749049557279e+01 1.1434192278505002e+01\n", + " 56 0 -2.9829995413312002e+02 5.5575987845370129e+01 -5.3674120395505343e+00 -1.6813809575229779e+01 1.1446397535679244e+01\n", + " 1 -3.2859292692062149e+02 6.0987928158245232e+01 -5.3877771343538612e+00 -1.6805301650831378e+01 1.1417524516477513e+01\n", + " 2 -4.0877332532216076e+02 7.6059684749482969e+01 -5.3744445031636392e+00 -1.6824126672576362e+01 1.1449682169412727e+01\n", + " 3 -5.2397372527101072e+02 9.6762108086030025e+01 -5.4140521284404963e+00 -1.6828172166039515e+01 1.1414120037599019e+01\n", + " 57 0 -2.5293629901644968e+02 4.6921266624947961e+01 -5.3906717164390212e+00 -1.6804864684682620e+01 1.1414192968243597e+01\n", + " 1 -3.4500134088194204e+02 6.4249547705973811e+01 -5.3695538679688521e+00 -1.6820495641375071e+01 1.1450941773406214e+01\n", + " 2 -4.3944459886304861e+02 8.1748951219868971e+01 -5.3756188008547063e+00 -1.6807776755358361e+01 1.1432157954503655e+01\n", + " 3 -5.6522621197245485e+02 1.0523721616548026e+02 -5.3708866201376111e+00 -1.6789295942676869e+01 1.1418409322539258e+01\n", + " 58 0 -2.6522046511771538e+02 4.9186633712354215e+01 -5.3921175639793191e+00 -1.6798641651401123e+01 1.1406524087421801e+01\n", + " 1 -3.4548578429796873e+02 6.4310423401590384e+01 -5.3717175966509227e+00 -1.6794710323095803e+01 1.1422992726444884e+01\n", + " 2 -4.5230764078794306e+02 8.4051742040973210e+01 -5.3810897024807183e+00 -1.6817250727320719e+01 1.1436161024840001e+01\n", + " 3 -5.7366625086470822e+02 1.0668423775490584e+02 -5.3772360850751681e+00 -1.6840668832527097e+01 1.1463432747451927e+01\n", + " 59 0 -2.7864381481547071e+02 5.1841232502415131e+01 -5.3749495447220115e+00 -1.6813201288435021e+01 1.1438251743713009e+01\n", + " 1 -3.3135354249425535e+02 6.1659486007896000e+01 -5.3739088197373510e+00 -1.6813421310064182e+01 1.1439512490326830e+01\n", + " 2 -5.4489582320571537e+02 1.0177694540620368e+02 -5.3538300577595663e+00 -1.6805864443644158e+01 1.1452034385884591e+01\n", + " 3 -6.7508404027821859e+02 1.2562791209886343e+02 -5.3736787402897805e+00 -1.6789541627471369e+01 1.1415862887181591e+01\n", + " 60 0 -2.8359296335863786e+02 5.2831523049202623e+01 -5.3678289928661762e+00 -1.6801286999513966e+01 1.1433458006647790e+01\n", + " 1 -3.9083135514707010e+02 7.3077221501513549e+01 -5.3478233220420321e+00 -1.6806603159057886e+01 1.1458779837015854e+01\n", + " 2 -4.7963062284253323e+02 8.9502020207047266e+01 -5.3591505461330797e+00 -1.6797155404319941e+01 1.1438004858186863e+01\n", + " 3 -4.5219566206870161e+02 8.3861842870674749e+01 -5.3923338547783590e+00 -1.6816825066278483e+01 1.1424491211500124e+01\n", + " 61 0 -3.0719842021924723e+02 5.7318489444061626e+01 -5.3594829795235341e+00 -1.6813323882992435e+01 1.1453840903468903e+01\n", + " 1 -3.7928471703142003e+02 7.0370847622707814e+01 -5.3897163257235965e+00 -1.6811279550515593e+01 1.1421563224791996e+01\n", + " 2 -4.5416759259724978e+02 8.4626823555138188e+01 -5.3665099369238680e+00 -1.6805149763857745e+01 1.1438639826933878e+01\n", + " 3 -4.7966930939032221e+02 8.9161628786717145e+01 -5.3790327456725811e+00 -1.6811876238150610e+01 1.1432843492478026e+01\n", + " 62 0 -2.6155806542507145e+02 4.8665106659481928e+01 -5.3746616458773335e+00 -1.6818860924708474e+01 1.1444199278831141e+01\n", + " 1 -2.9468408714493683e+02 5.4586238148189523e+01 -5.3984170067983417e+00 -1.6837140466616958e+01 1.1438723459818616e+01\n", + " 2 -4.5221830359365077e+02 8.4192315962787433e+01 -5.3711212580750649e+00 -1.6803839248434471e+01 1.1432717990359409e+01\n", + " 3 -3.4037690803746921e+02 6.2743496619198851e+01 -5.4208844933562110e+00 -1.6759556574097140e+01 1.1338672080740928e+01\n", + " 63 0 -2.7118336380365298e+02 5.0415282826780064e+01 -5.3789935287339734e+00 -1.6807943844374833e+01 1.1428950315640860e+01\n", + " 1 -3.3868645858350800e+02 6.2993647757463563e+01 -5.3765200064155136e+00 -1.6791624353430109e+01 1.1415104347014591e+01\n", + " 2 -5.2416791292922744e+02 9.7759011122188824e+01 -5.3619093959756983e+00 -1.6796330419508369e+01 1.1434421023532671e+01\n", + " 3 -6.6326482043641079e+02 1.2320819412870530e+02 -5.3833174025942219e+00 -1.6802283695365471e+01 1.1418966292771248e+01\n", + " 64 0 -3.1060626115990431e+02 5.7945198103289258e+01 -5.3603548190755603e+00 -1.6797675994543816e+01 1.1437321175468258e+01\n", + " 1 -3.7481335752099022e+02 6.9777273892419444e+01 -5.3715626648195407e+00 -1.6804925568824906e+01 1.1433362904005365e+01\n", + " 2 -4.3700529262289677e+02 8.1198307913090019e+01 -5.3820052622634984e+00 -1.6757840215805906e+01 1.1375834953542409e+01\n", + " 3 -5.0634775096768897e+02 9.4017492703813630e+01 -5.3849131589170653e+00 -1.6808776690769566e+01 1.1423863531852497e+01\n", + " 65 0 -2.8020572601607199e+02 5.2107605590188108e+01 -5.3774436468293514e+00 -1.6814163426570335e+01 1.1436719779740981e+01\n", + " 1 -2.7127036085659824e+02 5.0092763258663112e+01 -5.4150916720341300e+00 -1.6799808380804492e+01 1.1384716708770364e+01\n", + " 2 -2.9999711097533412e+02 5.5404554165465228e+01 -5.4143291143012444e+00 -1.6843012716068984e+01 1.1428683601767741e+01\n", + " 3 -3.3429539699084040e+02 6.1994912617647088e+01 -5.3920272245460508e+00 -1.6865541093458685e+01 1.1473513868912631e+01\n", + " 66 0 -3.1299482937347528e+02 5.8410924383089665e+01 -5.3584575373057310e+00 -1.6806026904929961e+01 1.1447569367624229e+01\n", + " 1 -4.1414885198106123e+02 7.7141351516142919e+01 -5.3686654954491226e+00 -1.6808251957451745e+01 1.1439586462002621e+01\n", + " 2 -5.5337330501405700e+02 1.0319709700570967e+02 -5.3622760128864613e+00 -1.6814639835542867e+01 1.1452363822656411e+01\n", + " 3 -8.6999201447888379e+02 1.6203188624058183e+02 -5.3687889612532711e+00 -1.6809991226766630e+01 1.1441202265513359e+01\n", + " 67 0 -2.8661887808014853e+02 5.3418818367829303e+01 -5.3655141327326481e+00 -1.6803214881841534e+01 1.1437700749108885e+01\n", + " 1 -2.9906066006127543e+02 5.5456213780988087e+01 -5.3927448521849506e+00 -1.6815147430908510e+01 1.1422402578723558e+01\n", + " 2 -3.9359274370914432e+02 7.3253520752848615e+01 -5.3725433619082557e+00 -1.6828192209560431e+01 1.1455648847652176e+01\n", + " 3 -4.3842858311634774e+02 8.1683205144683583e+01 -5.3674362548469663e+00 -1.6820502272057176e+01 1.1453066017210208e+01\n", + " 68 0 -2.6702519047455542e+02 4.9700552460239294e+01 -5.3726197856585118e+00 -1.6795948312066621e+01 1.1423328526408110e+01\n", + " 1 -3.1472797913274769e+02 5.8308955744312783e+01 -5.3970224754251044e+00 -1.6785954823683404e+01 1.1388932348258296e+01\n", + " 2 -3.2638022451990935e+02 6.0464917501817879e+01 -5.3976943431174806e+00 -1.6799565467969089e+01 1.1401871124851608e+01\n", + " 3 -3.2654914886952076e+02 6.0350520191171341e+01 -5.4108800695690755e+00 -1.6781474044501593e+01 1.1370593974932516e+01\n", + " 69 0 -3.3776790688367004e+02 6.3178864180928613e+01 -5.3462058230642482e+00 -1.6820517222756052e+01 1.1474311399691805e+01\n", + " 1 -3.7422921886746792e+02 6.9641289651284438e+01 -5.3736973820936482e+00 -1.6802914455614669e+01 1.1429217073521025e+01\n", + " 2 -5.8438674812498277e+02 1.0886511634387404e+02 -5.3679875591530832e+00 -1.6814622734629985e+01 1.1446635175476906e+01\n", + " 3 -5.7002365036896947e+02 1.0524520949239204e+02 -5.4161158437368693e+00 -1.6855168695595243e+01 1.1439052851858371e+01\n", + " 70 0 -2.4217069881726769e+02 4.4875726082226883e+01 -5.3964679830104565e+00 -1.6802085607068204e+01 1.1405617624057749e+01\n", + " 1 -3.5898725400806052e+02 6.6974137408661235e+01 -5.3600813893465649e+00 -1.6805522639491009e+01 1.1445441250144444e+01\n", + " 2 -4.4148972384570823e+02 8.1914494874419006e+01 -5.3892216067549024e+00 -1.6801907033939653e+01 1.1412685427184748e+01\n", + " 3 -6.2941744151107798e+02 1.1700066978155706e+02 -5.3796632976570393e+00 -1.6829723794463920e+01 1.1450060496806877e+01\n", + " 71 0 -2.8768251727502457e+02 5.3686513016961122e+01 -5.3585122609750293e+00 -1.6812887244912790e+01 1.1454374983937758e+01\n", + " 1 -3.2051136576395015e+02 5.9722570261462600e+01 -5.3666678081060493e+00 -1.6819732092296373e+01 1.1453064284190321e+01\n", + " 2 -3.0258807020360700e+02 5.5839472828157334e+01 -5.4187889410294190e+00 -1.6804565591646583e+01 1.1385776650617164e+01\n", + " 3 -3.4588995211942142e+02 6.3958984665275459e+01 -5.4080797066548874e+00 -1.6851133288874770e+01 1.1443053582219878e+01\n", + " 72 0 -2.9321128577148579e+02 5.4659506936643822e+01 -5.3643161486925797e+00 -1.6805493374558026e+01 1.1441177225865447e+01\n", + " 1 -3.3952957019801636e+02 6.3218868156667149e+01 -5.3706555424009297e+00 -1.6821196926752293e+01 1.1450541384351364e+01\n", + " 2 -4.2358418545741824e+02 7.8859014216904797e+01 -5.3712850654010769e+00 -1.6812503512487819e+01 1.1441218447086742e+01\n", + " 3 -5.9770823629522488e+02 1.1132251063263173e+02 -5.3692013100724125e+00 -1.6834425030822008e+01 1.1465223720749597e+01\n", + " 73 0 -2.9469154380137297e+02 5.4821183381428980e+01 -5.3754491976166348e+00 -1.6798635930686000e+01 1.1423186733069365e+01\n", + " 1 -3.3242535590476928e+02 6.1640945373765078e+01 -5.3930129386580123e+00 -1.6812723274586361e+01 1.1419710335928348e+01\n", + " 2 -3.9902310384250342e+02 7.4313574660428401e+01 -5.3691853658378772e+00 -1.6832611933798997e+01 1.1463426567961122e+01\n", + " 3 -4.0105211732924937e+02 7.4273873388480510e+01 -5.3994167969135658e+00 -1.6778225007670240e+01 1.1378808210756681e+01\n", + " 74 0 -3.4473545923126613e+02 6.4342569552994348e+01 -5.3577546252052652e+00 -1.6817086370857226e+01 1.1459331745651960e+01\n", + " 1 -3.5063173089599826e+02 6.4959233430852720e+01 -5.3977127002766334e+00 -1.6802514767846780e+01 1.1404802067570149e+01\n", + " 2 -4.4027891214084923e+02 8.1922358164045377e+01 -5.3743231395002935e+00 -1.6794874307671165e+01 1.1420551168170871e+01\n", + " 3 -5.2648362606588637e+02 9.7681634445001691e+01 -5.3890947191132641e+00 -1.6800381071437755e+01 1.1411286352324492e+01\n", + " 75 0 -3.0029338593823900e+02 5.5907867292489293e+01 -5.3712371289546956e+00 -1.6809165659391777e+01 1.1437928530437080e+01\n", + " 1 -3.1378759970438443e+02 5.8063540763074606e+01 -5.4040811696850204e+00 -1.6785339568469201e+01 1.1381258398784178e+01\n", + " 2 -3.8916125622136241e+02 7.2451808332532508e+01 -5.3710079306389344e+00 -1.6782743342942272e+01 1.1411735412303337e+01\n", + " 3 -4.3584370829768540e+02 8.0819634151803058e+01 -5.3926574495442869e+00 -1.6808648737087605e+01 1.1415991287543319e+01\n", + " 76 0 -2.7981073310970254e+02 5.2133498749809768e+01 -5.3671954059246643e+00 -1.6807976279899869e+01 1.1440780873975207e+01\n", + " 1 -3.0198355530476601e+02 5.6057307160081315e+01 -5.3868693741572526e+00 -1.6817098017031771e+01 1.1430228642874516e+01\n", + " 2 -3.4337205456546269e+02 6.3683373328822810e+01 -5.3918450112937597e+00 -1.6815534289944342e+01 1.1423689278650578e+01\n", + " 3 -4.5073375919252737e+02 8.3904830629890171e+01 -5.3720063955878201e+00 -1.6817678956181965e+01 1.1445672560594140e+01\n", + " 77 0 -2.9084864918509840e+02 5.4224377698464160e+01 -5.3637987243956866e+00 -1.6808424189826610e+01 1.1444625465430921e+01\n", + " 1 -3.4233305071127904e+02 6.3600386249006156e+01 -5.3825674620832036e+00 -1.6807904767037073e+01 1.1425337304953873e+01\n", + " 2 -4.6320206336521676e+02 8.6036865783327912e+01 -5.3837390203081972e+00 -1.6794415897916902e+01 1.1410676877608708e+01\n", + " 3 -5.0517312751880661e+02 9.3755672580953004e+01 -5.3864650667475518e+00 -1.6780297742196993e+01 1.1393832675449447e+01\n", + " 78 0 -3.0163056087523142e+02 5.6175684576948690e+01 -5.3694159954901179e+00 -1.6808317622591449e+01 1.1438901627101334e+01\n", + " 1 -3.8417753431808671e+02 7.1543518985136359e+01 -5.3699554623274057e+00 -1.6798045475772685e+01 1.1428090013445280e+01\n", + " 2 -3.9741744751308312e+02 7.3558068028652485e+01 -5.4027503382534796e+00 -1.6801734006491053e+01 1.1398983668237571e+01\n", + " 3 -4.7942025192837588e+02 8.8417349207498347e+01 -5.4223009052469955e+00 -1.6774950133398075e+01 1.1352649228151082e+01\n", + " 79 0 -2.9615577842135667e+02 5.5279759316344659e+01 -5.3574532373070936e+00 -1.6813721265475159e+01 1.1456268028168063e+01\n", + " 1 -3.7996736421049735e+02 7.0844921022713820e+01 -5.3633192789905033e+00 -1.6811978570001752e+01 1.1448659291011253e+01\n", + " 2 -4.9569707381753653e+02 9.2543873682916271e+01 -5.3558298801757038e+00 -1.6808445073269858e+01 1.1452615193094157e+01\n", + " 3 -7.4573429960187434e+02 1.3929379246322259e+02 -5.3536857451146744e+00 -1.6817899367128870e+01 1.1464213622014196e+01\n", + " 80 0 -2.8016567892727170e+02 5.2228135163395500e+01 -5.3642742992838439e+00 -1.6799840614873560e+01 1.1435566315589718e+01\n", + " 1 -3.7206526147259495e+02 6.9119652334586988e+01 -5.3829511604440103e+00 -1.6822602417837722e+01 1.1439651257393713e+01\n", + " 2 -4.1980889328394267e+02 7.7880409633669331e+01 -5.3900970145573046e+00 -1.6807581979579243e+01 1.1417484965021940e+01\n", + " 3 -5.2535972724884505e+02 9.7786884920757927e+01 -5.3723372016801436e+00 -1.6803621843245697e+01 1.1431284641565552e+01\n", + " 81 0 -3.2246270113353955e+02 6.0231191242199401e+01 -5.3536892299407191e+00 -1.6813029408099126e+01 1.1459340178158405e+01\n", + " 1 -3.3609545031405423e+02 6.2326418346663750e+01 -5.3925041338176793e+00 -1.6793923415614962e+01 1.1401419281797278e+01\n", + " 2 -3.6406088748191291e+02 6.7337445779722898e+01 -5.4063762285763692e+00 -1.6808355140820563e+01 1.1401978912244196e+01\n", + " 3 -3.5090665437980380e+02 6.4868126722482771e+01 -5.4094973326964562e+00 -1.6776131057154515e+01 1.1366633724458060e+01\n", + " 82 0 -2.8680325414728259e+02 5.3554913878736819e+01 -5.3552659028477843e+00 -1.6803412185452011e+01 1.1448146282604229e+01\n", + " 1 -2.9426850265191933e+02 5.4737046759042542e+01 -5.3760447703787744e+00 -1.6808721017533443e+01 1.1432676247154669e+01\n", + " 2 -3.5940392516365785e+02 6.6856913432796546e+01 -5.3754355614981906e+00 -1.6806560279915189e+01 1.1431124718416999e+01\n", + " 3 -4.0434526129204318e+02 7.5055557166203741e+01 -5.3871011312933259e+00 -1.6838078495012709e+01 1.1450977363719385e+01\n", + " 83 0 -3.3605744995220738e+02 6.2886542756025818e+01 -5.3438726841761355e+00 -1.6814079557652271e+01 1.1470206873476133e+01\n", + " 1 -4.0167936164143288e+02 7.4920363431083459e+01 -5.3613954952889173e+00 -1.6814284114656772e+01 1.1452888619367855e+01\n", + " 2 -4.1339776067988231e+02 7.6851342353504236e+01 -5.3791806367990294e+00 -1.6818303716682383e+01 1.1439123079883354e+01\n", + " 3 -3.8856136535877761e+02 7.1432256827557296e+01 -5.4389616252039295e+00 -1.6804590728045955e+01 1.1365629102842025e+01\n", + " 84 0 -3.2082084626281613e+02 5.9795562913355710e+01 -5.3652912895531228e+00 -1.6818915962017215e+01 1.1453624672464091e+01\n", + " 1 -3.4994295352730444e+02 6.5055892760107298e+01 -5.3791787179254440e+00 -1.6810341487587248e+01 1.1431162769661805e+01\n", + " 2 -3.9351103866211901e+02 7.3299682247208793e+01 -5.3684201369499549e+00 -1.6788094222524986e+01 1.1419674085575028e+01\n", + " 3 -4.4498593648047103e+02 8.2716572837180323e+01 -5.3793138669488831e+00 -1.6795255180945059e+01 1.1415941313996173e+01\n", + " 85 0 -3.2185099815680803e+02 6.0109216995135974e+01 -5.3544232821457767e+00 -1.6804938909301399e+01 1.1450515627155623e+01\n", + " 1 -2.8949141793916618e+02 5.3356572027703137e+01 -5.4254422491156484e+00 -1.6781387526654118e+01 1.1355945277538467e+01\n", + " 2 -3.2855670589253469e+02 6.0800873333651204e+01 -5.4036724658766762e+00 -1.6774622790160780e+01 1.1370950324284101e+01\n", + " 3 -4.3708898287301599e+02 8.1260341561953936e+01 -5.3791025238424135e+00 -1.6800011978262503e+01 1.1420909454420091e+01\n", + " 86 0 -3.1048336475608198e+02 5.7855628626593344e+01 -5.3664995841691709e+00 -1.6826459086660382e+01 1.1459959502491213e+01\n", + " 1 -3.5743890767137708e+02 6.6333044629680543e+01 -5.3885543040430512e+00 -1.6831527970571262e+01 1.1442973666528209e+01\n", + " 2 -4.0620365378843690e+02 7.5455365119187803e+01 -5.3833242368234036e+00 -1.6785641758935942e+01 1.1402317522112547e+01\n", + " 3 -5.3272164512035715e+02 9.9229914450416103e+01 -5.3686156286172828e+00 -1.6797538279581779e+01 1.1428922650964491e+01\n", + " 87 0 -3.2261894637477985e+02 6.0171809211758678e+01 -5.3615315607669523e+00 -1.6821894198368955e+01 1.1460362637602001e+01\n", + " 1 -4.0917233875085236e+02 7.6120761059318269e+01 -5.3753307772482630e+00 -1.6804855208844167e+01 1.1429524431595908e+01\n", + " 2 -5.8127386756033411e+02 1.0805746440258157e+02 -5.3792291732505646e+00 -1.6800790910725691e+01 1.1421561737475132e+01\n", + " 3 -6.8122060150583764e+02 1.2617577264989835e+02 -5.3971804786331319e+00 -1.6799496956744889e+01 1.1402316478111754e+01\n", + " 88 0 -3.3041296798216456e+02 6.1637917725062522e+01 -5.3605527499897523e+00 -1.6794146227740889e+01 1.1433593477751138e+01\n", + " 1 -3.6179399499865690e+02 6.7119784912964136e+01 -5.3901424548615324e+00 -1.6795113687915038e+01 1.1404971233053507e+01\n", + " 2 -5.2689413670690863e+02 9.7739901492695367e+01 -5.3902413428518461e+00 -1.6800724433692245e+01 1.1410483090840399e+01\n", + " 3 -6.8166919981358876e+02 1.2689215293491647e+02 -5.3715007702964259e+00 -1.6793719788602264e+01 1.1422219018305837e+01\n", + " 89 0 -2.6987481317777309e+02 5.0230109641033586e+01 -5.3727674553096545e+00 -1.6804996858855912e+01 1.1432229403546261e+01\n", + " 1 -3.6891213415114532e+02 6.8843044163223595e+01 -5.3587585636346802e+00 -1.6823578656434542e+01 1.1464820092799863e+01\n", + " 2 -4.4614826615512834e+02 8.2987525974264514e+01 -5.3755366808567455e+00 -1.6816490793898886e+01 1.1440954113042137e+01\n", + " 3 -6.6375947195465847e+02 1.2369968755236235e+02 -5.3658775687300384e+00 -1.6817338269023594e+01 1.1451460700293552e+01\n", + " 90 0 -3.0259333091126553e+02 5.6353069261790651e+01 -5.3695687992398327e+00 -1.6803963742419377e+01 1.1434394943179543e+01\n", + " 1 -3.5314712715034511e+02 6.5504414649395841e+01 -5.3912106082357578e+00 -1.6802036033738059e+01 1.1410825425502299e+01\n", + " 2 -3.7526647346581404e+02 6.9675847531742079e+01 -5.3855503371067357e+00 -1.6796669699845442e+01 1.1411119362738706e+01\n", + " 3 -4.0808451428269376e+02 7.5615490454657035e+01 -5.3959788378485856e+00 -1.6823265776976793e+01 1.1427286939128205e+01\n", + " 91 0 -3.1672672157206233e+02 5.9083009305203852e+01 -5.3607050734328432e+00 -1.6806536566104651e+01 1.1445831492671809e+01\n", + " 1 -4.2982642735870826e+02 8.0070598306685895e+01 -5.3680021238649571e+00 -1.6818545415316756e+01 1.1450543291451798e+01\n", + " 2 -5.0170806470515220e+02 9.3382637654703004e+01 -5.3725949292131530e+00 -1.6822493835619252e+01 1.1449898906406098e+01\n", + " 3 -7.1861456496338292e+02 1.3354240266437264e+02 -5.3811290905117435e+00 -1.6837257194617486e+01 1.1456128104105744e+01\n", + " 92 0 -3.3441853461171411e+02 6.2371449261278968e+01 -5.3616996328240925e+00 -1.6805562289833688e+01 1.1443862657009603e+01\n", + " 1 -3.4007021743589979e+02 6.2915520865319607e+01 -5.4053416635944940e+00 -1.6825075409833698e+01 1.1419733746239201e+01\n", + " 2 -4.1210317621617287e+02 7.6486453104729065e+01 -5.3883275414608125e+00 -1.6826457145759747e+01 1.1438129604298940e+01\n", + " 3 -6.6574458958898219e+02 1.2385602694560831e+02 -5.3741525567495163e+00 -1.6844116843098650e+01 1.1469964286349139e+01\n", + " 93 0 -2.9318169794654079e+02 5.4630270347054221e+01 -5.3666651891403507e+00 -1.6814523344159554e+01 1.1447858155019203e+01\n", + " 1 -3.6033049607404695e+02 6.6998791623441704e+01 -5.3782402052234914e+00 -1.6808406660842984e+01 1.1430166455619487e+01\n", + " 2 -4.7101233693752823e+02 8.7592629843027979e+01 -5.3774539164348125e+00 -1.6804559270206973e+01 1.1427105353772161e+01\n", + " 3 -5.5047657331032531e+02 1.0178732103079675e+02 -5.4081849411064624e+00 -1.6797517397861913e+01 1.1389332456755456e+01\n", + " 94 0 -2.6305860913284931e+02 4.8803116856982612e+01 -5.3899797218797127e+00 -1.6809456611846446e+01 1.1419476889966733e+01\n", + " 1 -2.6224929573666503e+02 4.8493329643823316e+01 -5.4078611238117249e+00 -1.6831376893148477e+01 1.1423515769336749e+01\n", + " 2 -3.2176732832438699e+02 6.0047941625181068e+01 -5.3577727983374421e+00 -1.6801888576314887e+01 1.1444115777977450e+01\n", + " 3 -4.5448851391616859e+02 8.4732980742073991e+01 -5.3638020460992086e+00 -1.6853184014385317e+01 1.1489381968286112e+01\n", + " 95 0 -3.1586823281352486e+02 5.8927576357850526e+01 -5.3602355190556805e+00 -1.6829200497752634e+01 1.1468964978696949e+01\n", + " 1 -4.2473289213303809e+02 7.9277296545176824e+01 -5.3575519303330150e+00 -1.6817056971234468e+01 1.1459505040901451e+01\n", + " 2 -4.5669192761730670e+02 8.4757343709648069e+01 -5.3873381456517677e+00 -1.6787853313639904e+01 1.1400515167988134e+01\n", + " 3 -5.1223578706393516e+02 9.5236279743014293e+01 -5.3782987399005444e+00 -1.6809503206945386e+01 1.1431204467044843e+01\n", + " 96 0 -2.7627853092490483e+02 5.1466708803912049e+01 -5.3680988175261639e+00 -1.6803161366694482e+01 1.1435062549168318e+01\n", + " 1 -2.6245379819044655e+02 4.8576662211842795e+01 -5.4028689628101070e+00 -1.6785661460806008e+01 1.1382792497995899e+01\n", + " 2 -3.7050755412826561e+02 6.8813818316327669e+01 -5.3841530981571744e+00 -1.6784384573713190e+01 1.1400231475556019e+01\n", + " 3 -5.2624984237394960e+02 9.8038936557410906e+01 -5.3677639869537561e+00 -1.6778123878176725e+01 1.1410359891222962e+01\n", + " 97 0 -3.2611132558683255e+02 6.0877342587697690e+01 -5.3568792701467123e+00 -1.6806983047576836e+01 1.1450103777430121e+01\n", + " 1 -4.0146957512390810e+02 7.4717821051338476e+01 -5.3730927257914800e+00 -1.6807083393056274e+01 1.1433990667264796e+01\n", + " 2 -6.1153431088085847e+02 1.1414172034916504e+02 -5.3577233729537479e+00 -1.6810323683526367e+01 1.1452600310572615e+01\n", + " 3 -4.7301891706204390e+02 8.7091175196437874e+01 -5.4314982999058579e+00 -1.6804424933389260e+01 1.1372926633483400e+01\n", + " 98 0 -3.3912267655354583e+02 6.3314785004096684e+01 -5.3561651592307618e+00 -1.6808781971292561e+01 1.1452616812061800e+01\n", + " 1 -4.6581406107569001e+02 8.6588003272031287e+01 -5.3794508258660922e+00 -1.6821165435801877e+01 1.1441714609935786e+01\n", + " 2 -6.3768319972850531e+02 1.1843091820258188e+02 -5.3844239981907682e+00 -1.6801670436309742e+01 1.1417246438118974e+01\n", + " 3 -7.2314371942497041e+02 1.3415633375969094e+02 -5.3889869353955140e+00 -1.6806535705981769e+01 1.1417548770586254e+01\n", + " 99 0 -3.1127670919227717e+02 5.8083107967760974e+01 -5.3591592072290606e+00 -1.6795351042786862e+01 1.1436191835557802e+01\n", + " 1 -3.6805548452995350e+02 6.8404798607860897e+01 -5.3802730784197257e+00 -1.6803676635565512e+01 1.1423403557145791e+01\n", + " 2 -4.5379789758854429e+02 8.4406779461239680e+01 -5.3760520696595471e+00 -1.6829113573283124e+01 1.1453061503623575e+01\n", + " 3 -7.5339057517761898e+02 1.4102817860161360e+02 -5.3423012949799356e+00 -1.6809608008219218e+01 1.1467306713239285e+01\n", + "\n", + "Energy statistics at time 1.5:\n", + "Complex mean: -5.36446553e+00-3.19970989e-04j\n", + "Mean: -5.36446560e+00\n", + "Stochastic error: 1.09498852e-03\n", + "\n", + "Energy statistics at time 3.0:\n", + "Complex mean: -5.38121091e+00-3.12655951e-04j\n", + "Mean: -5.38121105e+00\n", + "Stochastic error: 1.58990178e-03\n", + "\n", + "Energy statistics at time 4.5:\n", + "Complex mean: -5.38156710e+00-1.67885050e-03j\n", + "Mean: -5.38156727e+00\n", + "Stochastic error: 1.64655610e-03\n", + "\n", + "Energy statistics at time 6.0:\n", + "Complex mean: -5.38297835e+00-1.23799215e-03j\n", + "Mean: -5.38297860e+00\n", + "Stochastic error: 2.04412838e-03\n" + ] + } + ], + "source": [ + "from ipie.qmc.calc import build_fpafqmc_driver\n", + "from ipie.config import MPI\n", + "from ipie.utils.from_pyscf import gen_ipie_input_from_pyscf_chk\n", + "from ipie.analysis.blocking import jackknife_ratios\n", + "\n", + "comm = MPI.COMM_WORLD\n", + "\n", + "gen_ipie_input_from_pyscf_chk(umf.chkfile, verbose=0)\n", + "qmc_options = {\n", + " \"num_iterations_fp\": 100,\n", + " \"num_blocks\": 4,\n", + " \"num_steps\": 30,\n", + " \"num_walkers\": 50,\n", + " \"dt\": 0.05,\n", + "}\n", + "afqmc = build_fpafqmc_driver(\n", + " comm,\n", + " nelec=mol.nelec,\n", + " seed=212503,\n", + " qmc_options=qmc_options,\n", + ")\n", + "afqmc.run()\n", + "\n", + "# analysis\n", + "from ipie.analysis.extraction import extract_observable_complex\n", + "\n", + "for i in range(afqmc.params.num_blocks):\n", + " print(\n", + " f\"\\nEnergy statistics at time {(i+1) * afqmc.params.num_steps_per_block * afqmc.params.timestep}:\"\n", + " )\n", + " qmc_data = extract_observable_complex(afqmc.estimators[i].filename, \"energy\")\n", + " jackknife_ratios(qmc_data[\"ENumer\"], qmc_data[\"EDenom\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phaseless AFQMC" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# Note: batched not specified. Setting to default value of True.\n", + "# MPIHandler detected 1 groups with 1 members each\n", + "# Parsing input options for systems.Generic.\n", + "# Number of alpha electrons: 5\n", + "# Number of beta electrons: 5\n", + "# Setting integrals to hamiltonian.h5.\n", + "# Note: symmetry not specified. Setting to default value of True.\n", + "# Have shared memory: True\n", + "# Time to read integrals: 0.001227\n", + "# Time to pack Cholesky vectors: 0.000163\n", + "# Number of orbitals: 10\n", + "# Approximate memory required by Cholesky vectors 0.000020 GB\n", + "# Approximate memory required by packed Cholesky vectors 0.000011 GB\n", + "# Approximate memory required total 0.000031 GB\n", + "# Number of Cholesky vectors: 27\n", + "# Number of fields: 27\n", + "# Finished setting up GenericRealChol object.\n", + "# random seed is 41100801\n", + "QMCParams(num_walkers=100, total_num_walkers=100, timestep=0.005, num_steps_per_block=25, num_blocks=1000, num_stblz=5, pop_control_freq=5, rng_seed=41100801)\n", + "# Using pair_branch population control algorithm.\n", + "# target weight is 100\n", + "# total weight is 100\n", + "# ipie version: 0.7.1.dev0\n", + "# Git hash: e4163010b903af9fcab8f8f4180e4b1d18c7a46d-dirty.\n", + "# Git branch: develop.\n", + "# Found uncommitted changes and/or untracked files.\n", + "# Modified : ipie/analysis/blocking.py\n", + "# Modified : ipie/analysis/extraction.py\n", + "# Modified : ipie/propagation/free_propagation.py\n", + "# Modified : ipie/propagation/tests/test_generic.py\n", + "# Modified : ipie/qmc/calc.py\n", + "# Modified : ipie/qmc/options.py\n", + "# Modified : ipie/qmc/tests/test_afqmc_single_det_batch.py\n", + "# Modified : ipie/utils/testing.py\n", + "# Modified : ipie/walkers/base_walkers.py\n", + "# Modified : ipie/walkers/tests/test_single_det_uhf.py\n", + "# Modified : ipie/walkers/uhf_walkers.py\n", + "# Calculation uuid: cbc37efc-d12e-11ee-a4b0-f678500c90cd.\n", + "# Approximate memory available per node: 16.0000 GB.\n", + "# Running on 1 MPI rank.\n", + "# Root processor name: MacBook-Air-500\n", + "# Python interpreter: 3.11.5 (main, Sep 11 2023, 08:19:27) [Clang 14.0.6 ]\n", + "# Using numpy v1.25.2 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/numpy.\n", + "# - BLAS lib: openblas64_ openblas64_\n", + "# - BLAS dir: /usr/local/lib\n", + "# Using scipy v1.10.1 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/scipy.\n", + "# Using h5py v3.9.0 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/h5py.\n", + "# Using mpi4py v3.1.4 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/mpi4py.\n", + "# - mpicc: /Users/ankitmahajan/miniconda3/envs/py311/bin/mpicc\n", + "# Package cupy not found.\n", + "# MPI communicator : \n", + "# Available memory on the node is 16.000 GB\n", + "# Setting up estimator object.\n", + "# Writing estimator data to estimates.0.h5\n", + "# Finished settting up estimator object.\n", + " Block Weight WeightFactor HybridEnergy ENumer EDenom ETotal E1Body E2Body\n", + " 0 1.0000000000000000e+02 1.0000000000000000e+02 0.0000000000000000e+00 -5.2562812924896775e+02 1.0000000000000000e+02 -5.2562812924896773e+00 -1.6806346430770070e+01 1.1550065138280390e+01\n", + " 1 1.0233230732089780e+02 1.0503324920147141e+02 -2.3893903008095756e+00 -5.2799970569641800e+02 1.0000000000000001e+02 -5.2799970569641790e+00 -1.6805728130086028e+01 1.1525731073121850e+01\n", + " 2 1.0003309224580626e+02 1.0106220029088173e+02 -2.4235408437373080e+00 -5.2993465174639243e+02 1.0000000000000001e+02 -5.2993465174639232e+00 -1.6806798800585526e+01 1.1507452283121598e+01\n", + " 3 9.9979009933633662e+01 9.9995196868309321e+01 -2.4040566440689308e+00 -5.3105751076316608e+02 1.0000000000000003e+02 -5.3105751076316592e+00 -1.6807906117597707e+01 1.1497331009966050e+01\n", + " 4 1.0003053082685588e+02 1.0004479823298736e+02 -2.4415339397342053e+00 -5.3208802632361471e+02 9.9999999999999986e+01 -5.3208802632361483e+00 -1.6807116148492081e+01 1.1486235885255937e+01\n", + " 5 1.0000070019370369e+02 1.0003453858968047e+02 -2.4483953164666832e+00 -5.3299474877515365e+02 9.9999999999999972e+01 -5.3299474877515385e+00 -1.6807144850438249e+01 1.1477197362686713e+01\n", + " 6 1.0000835273605213e+02 9.9962201363950186e+01 -2.4468766608634533e+00 -5.3411537270730162e+02 1.0000000000000000e+02 -5.3411537270730163e+00 -1.6806026723050401e+01 1.1464872995977387e+01\n", + " 7 1.0000038299233280e+02 1.0002838251190610e+02 -2.4498422547600955e+00 -5.3389840326401452e+02 1.0000000000000001e+02 -5.3389840326401448e+00 -1.6808270931926437e+01 1.1469286899286294e+01\n", + " 8 1.0000352819803197e+02 1.0000390762375109e+02 -2.4582653163721773e+00 -5.3443526211619223e+02 1.0000000000000000e+02 -5.3443526211619226e+00 -1.6811287025095783e+01 1.1466934403933859e+01\n", + " 9 1.0000775803233138e+02 9.9985814288980535e+01 -2.4602364211846988e+00 -5.3443515295344719e+02 9.9999999999999972e+01 -5.3443515295344737e+00 -1.6813638794876109e+01 1.1469287265341631e+01\n", + " 10 1.0001657521910140e+02 1.0005894706148403e+02 -2.4808953652449621e+00 -5.3524841757166917e+02 1.0000000000000000e+02 -5.3524841757166914e+00 -1.6809809851281251e+01 1.1457325675564560e+01\n", + " 11 9.9971141451337246e+01 9.9933820127136187e+01 -2.4654971053938142e+00 -5.3514916047180407e+02 9.9999999999999986e+01 -5.3514916047180421e+00 -1.6805452561003346e+01 1.1453960956285307e+01\n", + " 12 1.0001504743107584e+02 1.0000492440239401e+02 -2.4795602383453699e+00 -5.3649980116089910e+02 9.9999999999999986e+01 -5.3649980116089919e+00 -1.6802924265312441e+01 1.1437926253703452e+01\n", + " 13 1.0001923474193113e+02 1.0003702715415339e+02 -2.4978638329776848e+00 -5.3652239528629480e+02 1.0000000000000000e+02 -5.3652239528629480e+00 -1.6807249451825477e+01 1.1442025498962524e+01\n", + " 14 1.0000042895975686e+02 1.0001139924793212e+02 -2.5042843382904132e+00 -5.3708020109934841e+02 9.9999999999999986e+01 -5.3708020109934855e+00 -1.6807860788267988e+01 1.1437058777274499e+01\n", + " 15 9.9968296907066730e+01 9.9935392872122307e+01 -2.4822095254224164e+00 -5.3705513876775365e+02 1.0000000000000000e+02 -5.3705513876775361e+00 -1.6811828323121883e+01 1.1441276935444353e+01\n", + " 16 9.9995165636922863e+01 9.9994591361464970e+01 -2.4789649979400825e+00 -5.3760925404967827e+02 1.0000000000000001e+02 -5.3760925404967823e+00 -1.6810647480816431e+01 1.1434554940319652e+01\n", + " 17 1.0001184677854509e+02 1.0001466731592556e+02 -2.5060575251898474e+00 -5.3785927101359653e+02 1.0000000000000000e+02 -5.3785927101359654e+00 -1.6814010723555516e+01 1.1435418013419548e+01\n", + " 18 1.0000707528899544e+02 1.0004350407547741e+02 -2.5282385381220913e+00 -5.3698818548931320e+02 1.0000000000000001e+02 -5.3698818548931309e+00 -1.6814438633547315e+01 1.1444556778654185e+01\n", + " 19 9.9961852345489987e+01 9.9897583868590502e+01 -2.4901897952122471e+00 -5.3734562549036525e+02 1.0000000000000000e+02 -5.3734562549036529e+00 -1.6814666216599697e+01 1.1441209961696044e+01\n", + " 20 9.9983897364317983e+01 9.9973018555080984e+01 -2.4956468430033207e+00 -5.3879460046474128e+02 1.0000000000000001e+02 -5.3879460046474117e+00 -1.6811289480626595e+01 1.1423343475979184e+01\n", + " 21 9.9992009477542055e+01 1.0001288292513686e+02 -2.4990858862772294e+00 -5.3733449825033176e+02 9.9999999999999957e+01 -5.3733449825033199e+00 -1.6806364623668877e+01 1.1433019641165556e+01\n", + " 22 9.9968582074403500e+01 9.9896073458101100e+01 -2.4657780482341818e+00 -5.3762248925820529e+02 1.0000000000000003e+02 -5.3762248925820515e+00 -1.6807590311203437e+01 1.1431365418621388e+01\n", + " 23 9.9995208098557768e+01 9.9962938483789642e+01 -2.4649373366561509e+00 -5.3669679404739929e+02 9.9999999999999986e+01 -5.3669679404739936e+00 -1.6806409264251844e+01 1.1439441323777851e+01\n", + " 24 1.0002906288785618e+02 1.0004957110205193e+02 -2.5024009628067017e+00 -5.3671412737338517e+02 1.0000000000000000e+02 -5.3671412737338517e+00 -1.6809521567477468e+01 1.1442380293743616e+01\n", + " 25 9.9980733268648436e+01 9.9969100023930523e+01 -2.4938470895942686e+00 -5.3710578279000345e+02 1.0000000000000001e+02 -5.3710578279000334e+00 -1.6809077203791258e+01 1.1438019375891230e+01\n", + " 26 9.9969304518766691e+01 9.9958316404041057e+01 -2.4840857283780569e+00 -5.3681642053354108e+02 1.0000000000000000e+02 -5.3681642053354111e+00 -1.6806902606373782e+01 1.1438738401038373e+01\n", + " 27 9.9998980136015746e+01 1.0000131412071870e+02 -2.4951389427308679e+00 -5.3817235164763372e+02 9.9999999999999972e+01 -5.3817235164763391e+00 -1.6808277097128030e+01 1.1426553580651690e+01\n", + " 28 1.0002082460806011e+02 1.0005643697080860e+02 -2.5201477928704987e+00 -5.3752287338066446e+02 1.0000000000000000e+02 -5.3752287338066447e+00 -1.6809970167726902e+01 1.1434741433920259e+01\n", + " 29 9.9951399125716279e+01 9.9887817052001097e+01 -2.4773355159755059e+00 -5.3736900282846716e+02 1.0000000000000001e+02 -5.3736900282846705e+00 -1.6810363232246040e+01 1.1436673203961371e+01\n", + " 30 9.9988297760684787e+01 9.9977439453460718e+01 -2.4854512971393823e+00 -5.3819307211509920e+02 1.0000000000000000e+02 -5.3819307211509919e+00 -1.6810169741488206e+01 1.1428239020337220e+01\n", + " 31 1.0001098467192824e+02 1.0002263937880514e+02 -2.5090094388315944e+00 -5.3762262239203153e+02 9.9999999999999986e+01 -5.3762262239203160e+00 -1.6806557219179638e+01 1.1430330995259322e+01\n", + " 32 1.0000907359340860e+02 1.0001468565600632e+02 -2.5144046482150708e+00 -5.3725710527631986e+02 9.9999999999999972e+01 -5.3725710527632007e+00 -1.6808277880758233e+01 1.1435706827995032e+01\n", + " 33 9.9961009650346369e+01 9.9900283881279194e+01 -2.4999391575536980e+00 -5.4201603313363296e+02 9.9999999999999986e+01 -5.4201603313363309e+00 -1.6811172022540852e+01 1.1391011691204524e+01\n", + " 34 9.9986687037524845e+01 9.9963720305973411e+01 -2.4943453746435229e+00 -5.3786975472782206e+02 9.9999999999999986e+01 -5.3786975472782217e+00 -1.6816258232504062e+01 1.1437560685225840e+01\n", + " 35 9.9986500754984775e+01 9.9997668800652988e+01 -2.4960295226648790e+00 -5.3886982549995889e+02 9.9999999999999986e+01 -5.3886982549995901e+00 -1.6818776490581396e+01 1.1430078235581805e+01\n", + " 36 9.9989084945344516e+01 9.9974033646829668e+01 -2.5151776417604457e+00 -5.3875769258470700e+02 1.0000000000000000e+02 -5.3875769258470703e+00 -1.6820457049742409e+01 1.1432880123895336e+01\n", + " 37 9.9958681485947181e+01 9.9957720940068427e+01 -2.4834460987040354e+00 -5.3789551005351598e+02 9.9999999999999986e+01 -5.3789551005351610e+00 -1.6823096380310389e+01 1.1444141279775224e+01\n", + " 38 1.0001721240525272e+02 9.9979852983281830e+01 -2.5024641014407214e+00 -5.3868792652413708e+02 9.9999999999999986e+01 -5.3868792652413715e+00 -1.6819965835997674e+01 1.1433086570756307e+01\n", + " 39 9.9965790674894350e+01 9.9989002473171425e+01 -2.4940782758875084e+00 -5.3913306626650979e+02 1.0000000000000000e+02 -5.3913306626650979e+00 -1.6821593373421877e+01 1.1430262710756780e+01\n", + " 40 1.0001793530742427e+02 9.9975915472154668e+01 -2.5137821110645371e+00 -5.3896433236669054e+02 1.0000000000000000e+02 -5.3896433236669052e+00 -1.6822001555806491e+01 1.1432358232139581e+01\n", + " 41 1.0001263160998892e+02 1.0002324345421181e+02 -2.5287985814856691e+00 -5.3906283742877076e+02 1.0000000000000001e+02 -5.3906283742877070e+00 -1.6817794358889081e+01 1.1427165984601377e+01\n", + " 42 9.9998874494972043e+01 9.9980502014718098e+01 -2.5330421482795926e+00 -5.3820755448985631e+02 1.0000000000000001e+02 -5.3820755448985622e+00 -1.6813271744813537e+01 1.1431196199914973e+01\n", + " 43 9.9987426166252817e+01 9.9981128045490721e+01 -2.5261610620921306e+00 -5.3784739423639758e+02 1.0000000000000000e+02 -5.3784739423639758e+00 -1.6818435935475790e+01 1.1439961993111815e+01\n", + " 44 9.9990972700895497e+01 9.9968138387457401e+01 -2.5273852183644494e+00 -5.3774994079216015e+02 1.0000000000000001e+02 -5.3774994079216007e+00 -1.6816974219385369e+01 1.1439474811463770e+01\n", + " 45 9.9946054120050448e+01 9.9886358939493348e+01 -2.4845853720505851e+00 -5.3699671998705458e+02 1.0000000000000001e+02 -5.3699671998705449e+00 -1.6822713473289564e+01 1.1452746273419020e+01\n", + " 46 1.0000859381529767e+02 1.0000617613042256e+02 -2.5020721145078628e+00 -5.3644749444783224e+02 1.0000000000000003e+02 -5.3644749444783209e+00 -1.6821150508799789e+01 1.1456675564321463e+01\n", + " 47 9.9992292512414551e+01 9.9974701421454299e+01 -2.5085072722356436e+00 -5.3713311431417958e+02 1.0000000000000001e+02 -5.3713311431417949e+00 -1.6825980827555316e+01 1.1454649684413521e+01\n", + " 48 9.9989278812081835e+01 9.9997694985177645e+01 -2.5088430015202210e+00 -5.3709964507041593e+02 1.0000000000000001e+02 -5.3709964507041583e+00 -1.6824390791065536e+01 1.1453394340361379e+01\n", + " 49 9.9979300971392135e+01 9.9965588251458655e+01 -2.5029038676726576e+00 -5.3747898755092194e+02 9.9999999999999986e+01 -5.3747898755092205e+00 -1.6824224222577520e+01 1.1449434347068296e+01\n", + " 50 9.9979826528915197e+01 9.9936890342513450e+01 -2.4904613025099969e+00 -5.3759623850776529e+02 1.0000000000000001e+02 -5.3759623850776519e+00 -1.6828145417957600e+01 1.1452183032879949e+01\n", + " 51 1.0002558857440013e+02 1.0002588316581527e+02 -2.5139868683362767e+00 -5.3821173904488762e+02 9.9999999999999986e+01 -5.3821173904488768e+00 -1.6830874226021539e+01 1.1448756835572663e+01\n", + " 52 9.9983597514152805e+01 9.9963566430464198e+01 -2.5046329809304377e+00 -5.3841072967109164e+02 1.0000000000000000e+02 -5.3841072967109165e+00 -1.6823705833958499e+01 1.1439598537247585e+01\n", + " 53 9.9979502184971551e+01 9.9942639659196558e+01 -2.5030329829102897e+00 -5.3801174734639869e+02 1.0000000000000001e+02 -5.3801174734639865e+00 -1.6827938372590562e+01 1.1447820899126583e+01\n", + " 54 9.9959445834937597e+01 9.9938345845335277e+01 -2.4775305548554654e+00 -5.3732267298023100e+02 1.0000000000000000e+02 -5.3732267298023100e+00 -1.6824563818305180e+01 1.1451337088502870e+01\n", + " 55 1.0001380526958413e+02 1.0003828049629234e+02 -2.5002771452224488e+00 -5.3697052332314240e+02 1.0000000000000000e+02 -5.3697052332314241e+00 -1.6828343375843364e+01 1.1458638142611937e+01\n", + " 56 9.9980810403945725e+01 9.9943337575389961e+01 -2.4890430169348576e+00 -5.3742927341211271e+02 1.0000000000000001e+02 -5.3742927341211262e+00 -1.6825593990981439e+01 1.1451301256860313e+01\n", + " 57 1.0000607370779736e+02 9.9993051544210999e+01 -2.5107810236989048e+00 -5.3837871670269453e+02 1.0000000000000001e+02 -5.3837871670269442e+00 -1.6832433290392821e+01 1.1448646123365871e+01\n", + " 58 9.9965604353874156e+01 9.9964285270101612e+01 -2.4908008300249103e+00 -5.3732764155620123e+02 9.9999999999999986e+01 -5.3732764155620130e+00 -1.6830191398899107e+01 1.1456914983337096e+01\n", + " 59 9.9977762418358893e+01 9.9960385763703798e+01 -2.4809173797447195e+00 -5.3698400568688112e+02 1.0000000000000001e+02 -5.3698400568688101e+00 -1.6828861798689815e+01 1.1459021741821008e+01\n", + " 60 9.9977385310556187e+01 9.9911815519781470e+01 -2.4655140915297671e+00 -5.3619135538867647e+02 9.9999999999999986e+01 -5.3619135538867662e+00 -1.6824947955210614e+01 1.1463034401323851e+01\n", + " 61 1.0002728957851571e+02 1.0008955076399423e+02 -2.5062215425800352e+00 -5.3679070408884968e+02 9.9999999999999986e+01 -5.3679070408884977e+00 -1.6823488901505062e+01 1.1455581860616565e+01\n", + " 62 9.9969707988550226e+01 9.9964247398118644e+01 -2.4827651746136357e+00 -5.3645496837855183e+02 1.0000000000000000e+02 -5.3645496837855182e+00 -1.6824778483223405e+01 1.1460228799437884e+01\n", + " 63 9.9970201497188242e+01 9.9890412673261579e+01 -2.4667523197845691e+00 -5.3736869006125619e+02 1.0000000000000000e+02 -5.3736869006125616e+00 -1.6822033571415684e+01 1.1448346670803128e+01\n", + " 64 1.0002087827298615e+02 1.0005512882261617e+02 -2.5030215591240550e+00 -5.3699663333712363e+02 1.0000000000000000e+02 -5.3699663333712362e+00 -1.6816016412427331e+01 1.1446050079056095e+01\n", + " 65 1.0001093311989091e+02 9.9979305718373382e+01 -2.5074942010905326e+00 -5.3630643024592086e+02 9.9999999999999972e+01 -5.3630643024592111e+00 -1.6817720549322235e+01 1.1454656246863026e+01\n", + " 66 9.9989026312220346e+01 9.9974849258921836e+01 -2.4929685695333772e+00 -5.3582387827434354e+02 9.9999999999999986e+01 -5.3582387827434363e+00 -1.6818681748077235e+01 1.1460442965333796e+01\n", + " 67 9.9978121676691430e+01 9.9907025730421267e+01 -2.4739456966796900e+00 -5.3665885024022589e+02 9.9999999999999972e+01 -5.3665885024022613e+00 -1.6820016832423381e+01 1.1453428330021117e+01\n", + " 68 1.0000161810427667e+02 1.0001276333419452e+02 -2.4801645509857173e+00 -5.3681886432846773e+02 1.0000000000000000e+02 -5.3681886432846770e+00 -1.6817211404739552e+01 1.1449022761454872e+01\n", + " 69 9.9977255907238373e+01 9.9953877495710856e+01 -2.4695049817139876e+00 -5.3678668790512722e+02 1.0000000000000000e+02 -5.3678668790512720e+00 -1.6816085779028782e+01 1.1448218899977503e+01\n", + " 70 1.0002533305587083e+02 1.0008099739172816e+02 -2.5092057639655212e+00 -5.3795851529057427e+02 1.0000000000000001e+02 -5.3795851529057419e+00 -1.6817954383765798e+01 1.1438369230860056e+01\n", + " 71 9.9980235479344685e+01 9.9947706104482407e+01 -2.4979878936257638e+00 -5.3785117080364557e+02 1.0000000000000000e+02 -5.3785117080364557e+00 -1.6812300831995106e+01 1.1433789123958650e+01\n", + " 72 1.0001256841742880e+02 1.0000759684590868e+02 -2.5177283594489577e+00 -5.3681514597842454e+02 9.9999999999999986e+01 -5.3681514597842463e+00 -1.6812310663023581e+01 1.1444159203239337e+01\n", + " 73 9.9950547574118744e+01 9.9899851289477070e+01 -2.4786163442842257e+00 -5.3671822128770884e+02 9.9999999999999986e+01 -5.3671822128770899e+00 -1.6812558344377134e+01 1.1445376131500048e+01\n", + " 74 9.9983357890698116e+01 9.9937091595263098e+01 -2.4672248039551969e+00 -5.3608605176830292e+02 1.0000000000000000e+02 -5.3608605176830295e+00 -1.6808997024999293e+01 1.1448136507316262e+01\n", + " 75 1.0002158670797967e+02 1.0001520725076605e+02 -2.4833716224926841e+00 -5.3652742239551173e+02 1.0000000000000003e+02 -5.3652742239551152e+00 -1.6816373099459174e+01 1.1451098875504059e+01\n", + " 76 1.0001205090150187e+02 1.0002808379885670e+02 -2.5040318897882536e+00 -5.3693258620845938e+02 1.0000000000000000e+02 -5.3693258620845938e+00 -1.6820421069260057e+01 1.1451095207175465e+01\n", + " 77 9.9978670888407706e+01 9.9969160593302860e+01 -2.4994250189071701e+00 -5.3767699595976876e+02 9.9999999999999986e+01 -5.3767699595976888e+00 -1.6817360272166688e+01 1.1440590312569002e+01\n", + " 78 9.9968853299740204e+01 9.9934963681020534e+01 -2.4697770255512914e+00 -5.3636434055369193e+02 1.0000000000000003e+02 -5.3636434055369175e+00 -1.6819369010449059e+01 1.1455725604912139e+01\n", + " 79 1.0001464469243470e+02 9.9993091593696505e+01 -2.4982874696529564e+00 -5.3587650980825697e+02 9.9999999999999972e+01 -5.3587650980825714e+00 -1.6813822648459826e+01 1.1455057550377253e+01\n", + " 80 9.9982923019125963e+01 9.9995205323545832e+01 -2.4888563468258313e+00 -5.3683705308928688e+02 1.0000000000000000e+02 -5.3683705308928689e+00 -1.6811687559348687e+01 1.1443317028455819e+01\n", + " 81 9.9992318496150517e+01 9.9970623233804332e+01 -2.4940483541319782e+00 -5.3729077342815515e+02 9.9999999999999986e+01 -5.3729077342815525e+00 -1.6810080365830402e+01 1.1437172631548853e+01\n", + " 82 9.9995070349715604e+01 1.0000854337495389e+02 -2.5007105830925833e+00 -5.3698942751910897e+02 9.9999999999999986e+01 -5.3698942751910907e+00 -1.6814218959707642e+01 1.1444324684516548e+01\n", + " 83 9.9998357534434490e+01 9.9984036291734810e+01 -2.5108212545881110e+00 -5.3585740730315308e+02 9.9999999999999986e+01 -5.3585740730315319e+00 -1.6813722567764696e+01 1.1455148494733164e+01\n", + " 84 9.9980770343014925e+01 9.9962715106091110e+01 -2.4960125727166953e+00 -5.3613364364710083e+02 9.9999999999999972e+01 -5.3613364364710101e+00 -1.6810876740334891e+01 1.1449540303863882e+01\n", + " 85 9.9976763621852939e+01 9.9958763287029328e+01 -2.4958844865525531e+00 -5.3608472892597695e+02 1.0000000000000000e+02 -5.3608472892597696e+00 -1.6807114748560736e+01 1.1446267459300971e+01\n", + " 86 9.9994574802571407e+01 9.9993395961215128e+01 -2.4927313468564947e+00 -5.3774666822818619e+02 9.9999999999999986e+01 -5.3774666822818631e+00 -1.6807447975808810e+01 1.1429981293526946e+01\n", + " 87 9.9986125499373429e+01 9.9961936216752221e+01 -2.4971591250318417e+00 -5.3750750825323041e+02 9.9999999999999972e+01 -5.3750750825323061e+00 -1.6808237994442695e+01 1.1433162911910392e+01\n", + " 88 1.0001524456655862e+02 1.0003480024848812e+02 -2.5127620218177880e+00 -5.3650225089600008e+02 1.0000000000000000e+02 -5.3650225089600010e+00 -1.6811982607487337e+01 1.1446960098527335e+01\n", + " 89 9.9945227931561064e+01 9.9888507425395815e+01 -2.4776480695459187e+00 -5.3680762588165817e+02 1.0000000000000000e+02 -5.3680762588165818e+00 -1.6809428577600450e+01 1.1441352318783871e+01\n", + " 90 1.0000074697118608e+02 9.9995425075275733e+01 -2.4801992307809670e+00 -5.3669245970205861e+02 1.0000000000000003e+02 -5.3669245970205841e+00 -1.6812087487868258e+01 1.1445162890847675e+01\n", + " 91 9.9960398044156079e+01 9.9945091199333788e+01 -2.4687770895817436e+00 -5.3659671099618652e+02 9.9999999999999986e+01 -5.3659671099618658e+00 -1.6808910812818578e+01 1.1442943702856708e+01\n", + " 92 1.0001444625165652e+02 1.0001886356228617e+02 -2.4918755651355715e+00 -5.3680687691514754e+02 9.9999999999999986e+01 -5.3680687691514768e+00 -1.6809001351596208e+01 1.1440932582444734e+01\n", + " 93 9.9994506171821968e+01 9.9979510016510503e+01 -2.4877659807951984e+00 -5.3590444825660006e+02 1.0000000000000000e+02 -5.3590444825660004e+00 -1.6814061733183468e+01 1.1455017250617468e+01\n", + " 94 9.9975514876805121e+01 9.9924711431894764e+01 -2.4694117452441495e+00 -5.3647411629263331e+02 1.0000000000000000e+02 -5.3647411629263333e+00 -1.6810400238577799e+01 1.1445659075651459e+01\n", + " 95 9.9994337740687428e+01 9.9960256274134963e+01 -2.4730007574558033e+00 -5.3778691953684154e+02 9.9999999999999986e+01 -5.3778691953684161e+00 -1.6808809104796712e+01 1.1430939909428298e+01\n", + " 96 1.0002333573385197e+02 1.0005594445870186e+02 -2.5049191209919526e+00 -5.3810409450810153e+02 9.9999999999999957e+01 -5.3810409450810175e+00 -1.6808346108864111e+01 1.1427305163783094e+01\n", + " 97 9.9983475778383820e+01 9.9978381883689821e+01 -2.5064511975300454e+00 -5.3859661957865103e+02 1.0000000000000004e+02 -5.3859661957865077e+00 -1.6810161718485578e+01 1.1424195522699071e+01\n", + " 98 1.0002288713664173e+02 1.0004079134806058e+02 -2.5349986882839985e+00 -5.3803163774947188e+02 1.0000000000000003e+02 -5.3803163774947169e+00 -1.6812155123987793e+01 1.1431838746493078e+01\n", + " 99 9.9981931644381547e+01 9.9975453808878157e+01 -2.5301309596937482e+00 -5.3955489791275727e+02 1.0000000000000000e+02 -5.3955489791275726e+00 -1.6811634147558003e+01 1.1416085168430431e+01\n", + " 100 9.9979695840143137e+01 9.9938233354207483e+01 -2.5127054465234018e+00 -5.3821127283340627e+02 1.0000000000000000e+02 -5.3821127283340626e+00 -1.6807151454913534e+01 1.1425038726579473e+01\n", + " 101 9.9982050360501717e+01 9.9937241558315932e+01 -2.5179597176639490e+00 -5.4053228939653843e+02 1.0000000000000001e+02 -5.4053228939653835e+00 -1.6806033348489926e+01 1.1400710454524543e+01\n", + " 102 1.0001409650018115e+02 1.0003278992717834e+02 -2.5359352442807248e+00 -5.3841349253244982e+02 9.9999999999999972e+01 -5.3841349253245001e+00 -1.6805056082190085e+01 1.1420921156865591e+01\n", + " 103 9.9939305446857276e+01 9.9866100477039495e+01 -2.4975548252029265e+00 -5.3725057017739562e+02 1.0000000000000003e+02 -5.3725057017739548e+00 -1.6802992291177503e+01 1.1430486589403548e+01\n", + " 104 1.0000547380474950e+02 1.0000218690105808e+02 -2.5125990435140175e+00 -5.3881317405194795e+02 9.9999999999999972e+01 -5.3881317405194817e+00 -1.6803383960695967e+01 1.1415252220176484e+01\n", + " 105 9.9998254359585658e+01 1.0000356513340931e+02 -2.5215069820736744e+00 -5.3869068348426867e+02 9.9999999999999986e+01 -5.3869068348426881e+00 -1.6800676466200844e+01 1.1413769631358161e+01\n", + " 106 9.9971231519310820e+01 9.9952708367525247e+01 -2.5087153905925335e+00 -5.3829638185482725e+02 1.0000000000000000e+02 -5.3829638185482729e+00 -1.6804266984196961e+01 1.1421303165648688e+01\n", + " 107 9.9989382121719231e+01 9.9928948904385237e+01 -2.5062512903124174e+00 -5.3742890384937368e+02 1.0000000000000001e+02 -5.3742890384937363e+00 -1.6806573766864499e+01 1.1432284728370762e+01\n", + " 108 9.9941318721995557e+01 9.9905113034359474e+01 -2.4593504901876218e+00 -5.3786084258616472e+02 9.9999999999999986e+01 -5.3786084258616480e+00 -1.6808479721241781e+01 1.1429871295380130e+01\n", + " 109 1.0006256704452163e+02 1.0005422252339645e+02 -2.5084430584236710e+00 -5.3789470424432852e+02 1.0000000000000000e+02 -5.3789470424432855e+00 -1.6805336352178198e+01 1.1426389309734914e+01\n", + " 110 9.9979942037298898e+01 9.9979745868703276e+01 -2.5051777815305032e+00 -5.3802301173229716e+02 1.0000000000000001e+02 -5.3802301173229710e+00 -1.6805589910514861e+01 1.1425359793191891e+01\n", + " 111 9.9997692915897204e+01 9.9976259982412756e+01 -2.5050128367670217e+00 -5.3731400814599556e+02 9.9999999999999986e+01 -5.3731400814599564e+00 -1.6802338285618315e+01 1.1429198204158361e+01\n", + " 112 9.9971623181744178e+01 9.9927790512869436e+01 -2.4790945754192375e+00 -5.3801542407884642e+02 9.9999999999999972e+01 -5.3801542407884666e+00 -1.6803352304218045e+01 1.1423198063429577e+01\n", + " 113 1.0003940105091590e+02 1.0003459732005101e+02 -2.5198192761906579e+00 -5.3828010158289828e+02 1.0000000000000001e+02 -5.3828010158289823e+00 -1.6798559382933178e+01 1.1415758367104198e+01\n", + " 114 9.9975886471119807e+01 9.9964765183886399e+01 -2.5130474685939035e+00 -5.3835299201923726e+02 1.0000000000000000e+02 -5.3835299201923723e+00 -1.6794023024418941e+01 1.1410493104226564e+01\n", + " 115 9.9986759570042167e+01 9.9961620788548231e+01 -2.5081505508098410e+00 -5.3823576086234016e+02 1.0000000000000000e+02 -5.3823576086234013e+00 -1.6794200846881374e+01 1.1411843238257973e+01\n", + " 116 9.9966712328296254e+01 9.9937134914666757e+01 -2.4842261252254034e+00 -5.3721789653361259e+02 9.9999999999999972e+01 -5.3721789653361283e+00 -1.6793406622506403e+01 1.1421227657170276e+01\n", + " 117 9.9977690113689590e+01 9.9905603441215987e+01 -2.4716863756751923e+00 -5.3653887324786376e+02 1.0000000000000000e+02 -5.3653887324786380e+00 -1.6799101495310030e+01 1.1433712762831389e+01\n", + " 118 1.0000688778122033e+02 1.0000993416432397e+02 -2.4909211312589212e+00 -5.3629983944419018e+02 1.0000000000000001e+02 -5.3629983944419006e+00 -1.6802988346634049e+01 1.1439989952192150e+01\n", + " 119 1.0000066171551119e+02 9.9989069874257055e+01 -2.5109490840254436e+00 -5.3700778939234613e+02 9.9999999999999972e+01 -5.3700778939234635e+00 -1.6803641197220802e+01 1.1433563303297335e+01\n", + " 120 9.9962498906115442e+01 9.9941485569934301e+01 -2.4878584710059957e+00 -5.3848966808678040e+02 9.9999999999999986e+01 -5.3848966808678052e+00 -1.6799723951075133e+01 1.1414827270207327e+01\n", + " 121 1.0001279363776352e+02 1.0004169540774456e+02 -2.5208949402649052e+00 -5.3803736108094631e+02 1.0000000000000003e+02 -5.3803736108094613e+00 -1.6798523620881657e+01 1.1418150010072194e+01\n", + " 122 9.9951392282161265e+01 9.9899229503968670e+01 -2.4921076178454773e+00 -5.3918805025678205e+02 1.0000000000000001e+02 -5.3918805025678198e+00 -1.6792441857276884e+01 1.1400561354709064e+01\n", + " 123 9.9998002531532592e+01 9.9988707792267306e+01 -2.5310875558222676e+00 -5.3963811649714330e+02 1.0000000000000001e+02 -5.3963811649714319e+00 -1.6797269148427382e+01 1.1400887983455956e+01\n", + " 124 9.9907591377607247e+01 1.0053883035481385e+02 -2.4519975163390573e+00 -5.3742392444156701e+02 9.9999999999999986e+01 -5.3742392444156710e+00 -1.6805095982548291e+01 1.1430856738132618e+01\n", + " 125 1.0002249433968375e+02 1.0000100002337224e+02 -2.4862326145741900e+00 -5.3775398240892844e+02 1.0000000000000000e+02 -5.3775398240892844e+00 -1.6810509013398178e+01 1.1432969189308892e+01\n", + " 126 9.9996308115759476e+01 9.9990019716041843e+01 -2.4982060663831844e+00 -5.3680260318599392e+02 1.0000000000000001e+02 -5.3680260318599382e+00 -1.6812666994800924e+01 1.1444640962940985e+01\n", + " 127 1.0001126475700028e+02 9.9992671259982714e+01 -2.5055674557439001e+00 -5.3721332755588139e+02 9.9999999999999986e+01 -5.3721332755588147e+00 -1.6812422438172387e+01 1.1440289162613567e+01\n", + " 128 1.0001099691049514e+02 1.0000905591430829e+02 -2.5162332513300987e+00 -5.3807055304798803e+02 9.9999999999999986e+01 -5.3807055304798812e+00 -1.6813094594536341e+01 1.1432389064056457e+01\n", + " 129 9.9966745822558721e+01 9.9934170549163341e+01 -2.4890754669568658e+00 -5.3683608722535371e+02 1.0000000000000000e+02 -5.3683608722535370e+00 -1.6800861606444862e+01 1.1432500734191320e+01\n", + " 130 9.9988988901300203e+01 9.9969368205417823e+01 -2.4973425945180341e+00 -5.3646283060398844e+02 9.9999999999999986e+01 -5.3646283060398856e+00 -1.6803241509074716e+01 1.1438613203034834e+01\n", + " 131 9.9986942614869747e+01 9.9979765948930378e+01 -2.5055540641885421e+00 -5.3780603049765784e+02 1.0000000000000003e+02 -5.3780603049765769e+00 -1.6807727955428870e+01 1.1429667650452291e+01\n", + " 132 9.9980064575467281e+01 9.9961469735925391e+01 -2.4893067508040914e+00 -5.3728985845304248e+02 1.0000000000000000e+02 -5.3728985845304251e+00 -1.6808708894267443e+01 1.1435810309737024e+01\n", + " 133 9.9994467663830690e+01 9.9971504489891814e+01 -2.4874900378644962e+00 -5.3820575530302904e+02 9.9999999999999986e+01 -5.3820575530302914e+00 -1.6809209265387050e+01 1.1427151712356761e+01\n", + " 134 9.9983020421512506e+01 9.9941140142032708e+01 -2.4831877364102097e+00 -5.3823072392234928e+02 1.0000000000000000e+02 -5.3823072392234925e+00 -1.6812638640573759e+01 1.1430331401350271e+01\n", + " 135 1.0001857072404046e+02 1.0004192116293773e+02 -2.5052784652541824e+00 -5.3728058832340867e+02 1.0000000000000001e+02 -5.3728058832340855e+00 -1.6813549214006763e+01 1.1440743330772676e+01\n", + " 136 9.9984349724014081e+01 9.9959568239409620e+01 -2.4970018466154880e+00 -5.3709417910115906e+02 9.9999999999999986e+01 -5.3709417910115915e+00 -1.6813223820741932e+01 1.1442282029730345e+01\n", + " 137 1.0001889806709789e+02 1.0000813415241095e+02 -2.5120057912881042e+00 -5.3765136589333656e+02 1.0000000000000000e+02 -5.3765136589333657e+00 -1.6811404762942274e+01 1.1434891104008907e+01\n", + " 138 9.9962605430500631e+01 9.9911079076553477e+01 -2.4825251834845181e+00 -5.3620176612869636e+02 1.0000000000000000e+02 -5.3620176612869637e+00 -1.6806842535519415e+01 1.1444824874232452e+01\n", + " 139 9.9993474583895278e+01 9.9969638382349018e+01 -2.4837003609604609e+00 -5.3628226344633549e+02 1.0000000000000000e+02 -5.3628226344633552e+00 -1.6804187780262502e+01 1.1441365145799146e+01\n", + " 140 1.0001500556241326e+02 1.0003838213589123e+02 -2.5191514380651494e+00 -5.3631190607633062e+02 1.0000000000000000e+02 -5.3631190607633066e+00 -1.6806884506456008e+01 1.1443765445692698e+01\n", + " 141 9.9968120322670728e+01 9.9951265876441468e+01 -2.4965999043882983e+00 -5.3726921897562625e+02 1.0000000000000001e+02 -5.3726921897562621e+00 -1.6812052403557786e+01 1.1439360213801519e+01\n", + " 142 9.9992622569248908e+01 9.9973918200260727e+01 -2.5075494167483852e+00 -5.3801040508253823e+02 1.0000000000000001e+02 -5.3801040508253815e+00 -1.6811409837645115e+01 1.1431305786819735e+01\n", + " 143 9.9986439682306752e+01 9.9953205273008024e+01 -2.4972810389687861e+00 -5.3701809589658330e+02 1.0000000000000000e+02 -5.3701809589658334e+00 -1.6815301889076061e+01 1.1445120930110225e+01\n", + " 144 9.9990967114923464e+01 9.9953298256558455e+01 -2.4940140004335349e+00 -5.3670325301707260e+02 9.9999999999999986e+01 -5.3670325301707269e+00 -1.6819320828680119e+01 1.1452288298509391e+01\n", + " 145 9.9960046007579763e+01 9.9921714351454327e+01 -2.4664915553237368e+00 -5.3756407956727162e+02 1.0000000000000003e+02 -5.3756407956727141e+00 -1.6821108044864996e+01 1.1445467249192280e+01\n", + " 146 9.9997567363002759e+01 9.9987254191104299e+01 -2.4762699140810192e+00 -5.3675686980776743e+02 9.9999999999999986e+01 -5.3675686980776751e+00 -1.6820215430186860e+01 1.1452646732109184e+01\n", + " 147 9.9991100379886419e+01 9.9952323169410633e+01 -2.4733811272544872e+00 -5.3725047372427866e+02 9.9999999999999957e+01 -5.3725047372427888e+00 -1.6820128546202262e+01 1.1447623808959474e+01\n", + " 148 1.0000261285467201e+02 1.0002379790873813e+02 -2.4978656643678283e+00 -5.3836905318596814e+02 1.0000000000000003e+02 -5.3836905318596795e+00 -1.6814721799682729e+01 1.1431031267823048e+01\n", + " 149 9.9992605815204314e+01 9.9972890995466500e+01 -2.5063315505037917e+00 -5.3802424328194172e+02 1.0000000000000000e+02 -5.3802424328194176e+00 -1.6817480237838001e+01 1.1437237805018590e+01\n", + " 150 9.9978706155158804e+01 9.9967619417029027e+01 -2.4983138378981233e+00 -5.3786467560542349e+02 9.9999999999999957e+01 -5.3786467560542368e+00 -1.6816497779014657e+01 1.1437851022960421e+01\n", + " 151 9.9965273135538553e+01 9.9908835852669014e+01 -2.4799764946411389e+00 -5.4363531278915207e+02 1.0000000000000000e+02 -5.4363531278915209e+00 -1.6845155391975908e+01 1.1408802264084384e+01\n", + " 152 9.9964887588430088e+01 9.9956719048786468e+01 -2.5383310560861774e+00 -5.4137386726959869e+02 9.9999999999999986e+01 -5.4137386726959882e+00 -1.6815321385920544e+01 1.1401582713224556e+01\n", + " 153 1.0001774807771557e+02 1.0005829472705666e+02 -2.5707164855655495e+00 -5.3946062813071944e+02 1.0000000000000001e+02 -5.3946062813071940e+00 -1.6806231660310576e+01 1.1411625379003384e+01\n", + " 154 9.9944476046988655e+01 9.9875662978136603e+01 -2.5319494297567897e+00 -5.3890390020643565e+02 1.0000000000000001e+02 -5.3890390020643553e+00 -1.6808413034441251e+01 1.1419374032376895e+01\n", + " 155 9.9970449618165574e+01 9.9910808675097854e+01 -2.5084232226178900e+00 -5.3791759677708137e+02 1.0000000000000001e+02 -5.3791759677708129e+00 -1.6809876976110502e+01 1.1430701008339687e+01\n", + " 156 9.9992649128076636e+01 9.9957184273450736e+01 -2.5085456558032377e+00 -5.3769104547831830e+02 1.0000000000000000e+02 -5.3769104547831832e+00 -1.6808000120965033e+01 1.1431089666181849e+01\n", + " 157 9.9990547776725251e+01 9.9969574699532629e+01 -2.5174807453842387e+00 -5.3774476325085425e+02 9.9999999999999986e+01 -5.3774476325085434e+00 -1.6811296123423652e+01 1.1433848490915111e+01\n", + " 158 9.9932486330864165e+01 9.9868382164337405e+01 -2.4671151949023269e+00 -5.3649017125991793e+02 1.0000000000000001e+02 -5.3649017125991785e+00 -1.6807404093029596e+01 1.1442502380430419e+01\n", + " 159 1.0002617567388468e+02 1.0002607869481609e+02 -2.5077737677051579e+00 -5.3674974663582464e+02 1.0000000000000000e+02 -5.3674974663582464e+00 -1.6800619173175299e+01 1.1433121706817051e+01\n", + " 160 9.9969035559163430e+01 9.9941586362629025e+01 -2.4795329967232269e+00 -5.3728457296166596e+02 1.0000000000000000e+02 -5.3728457296166594e+00 -1.6792469421574815e+01 1.1419623691958153e+01\n", + " 161 1.0000363148550234e+02 1.0000523066549813e+02 -2.4938082694192660e+00 -5.3767282455274437e+02 1.0000000000000000e+02 -5.3767282455274437e+00 -1.6792432797087137e+01 1.1415704551559694e+01\n", + " 162 9.9994520758891667e+01 9.9944946061184837e+01 -2.4904510123798245e+00 -5.3828545239935079e+02 9.9999999999999986e+01 -5.3828545239935091e+00 -1.6790269536076980e+01 1.1407415012083471e+01\n", + " 163 1.0000420768621231e+02 9.9983038063763075e+01 -2.4996077180092655e+00 -5.3836992556280597e+02 1.0000000000000000e+02 -5.3836992556280601e+00 -1.6792398189760757e+01 1.1408698934132694e+01\n", + " 164 1.0000539283359618e+02 1.0000946955216347e+02 -2.5244694910698819e+00 -5.3787785105935234e+02 1.0000000000000000e+02 -5.3787785105935235e+00 -1.6793467348166324e+01 1.1414688837572800e+01\n", + " 165 9.9959175499908980e+01 9.9930441926335675e+01 -2.4946138037869292e+00 -5.3708987243789886e+02 1.0000000000000004e+02 -5.3708987243789856e+00 -1.6789528704851495e+01 1.1418629980472510e+01\n", + " 166 9.9978184090078599e+01 9.9939589000510878e+01 -2.4792631275789252e+00 -5.3858613357702075e+02 1.0000000000000000e+02 -5.3858613357702074e+00 -1.6793373751714800e+01 1.1407512415944593e+01\n", + " 167 1.0000868008222967e+02 9.9989859896848174e+01 -2.5046824501256060e+00 -5.3901167720167541e+02 9.9999999999999986e+01 -5.3901167720167553e+00 -1.6796581942555537e+01 1.1406465170538784e+01\n", + " 168 9.9992609784403598e+01 9.9982559232149399e+01 -2.5197547237081670e+00 -5.3946460096245551e+02 9.9999999999999986e+01 -5.3946460096245561e+00 -1.6795603368009431e+01 1.1400957358384876e+01\n", + " 169 9.9954510234298141e+01 9.9915195003090233e+01 -2.4813034854206473e+00 -5.3856054862293956e+02 9.9999999999999986e+01 -5.3856054862293963e+00 -1.6791905217882611e+01 1.1406299731653213e+01\n", + " 170 1.0003587181392801e+02 1.0005930181420689e+02 -2.5214283616854418e+00 -5.3762240380850312e+02 1.0000000000000001e+02 -5.3762240380850308e+00 -1.6786379376172075e+01 1.1410155338087039e+01\n", + " 171 9.9949698238534836e+01 9.9895961195862711e+01 -2.4917163588860105e+00 -5.3875638807950099e+02 9.9999999999999986e+01 -5.3875638807950113e+00 -1.6785676304660097e+01 1.1398112423865079e+01\n", + " 172 1.0003154553659729e+02 1.0003996808907199e+02 -2.5249078841013177e+00 -5.3797989243727602e+02 1.0000000000000000e+02 -5.3797989243727606e+00 -1.6790275597192895e+01 1.1410476672820135e+01\n", + " 173 9.9961481257620804e+01 9.9944426276071567e+01 -2.5045019737507626e+00 -5.3892929831242020e+02 9.9999999999999943e+01 -5.3892929831242053e+00 -1.6793314796287824e+01 1.1404021813163622e+01\n", + " 174 1.0000906886476307e+02 9.9987923912562493e+01 -2.5296516795610025e+00 -5.3943733507044556e+02 9.9999999999999972e+01 -5.3943733507044573e+00 -1.6803536920765236e+01 1.1409163570060777e+01\n", + " 175 9.9959873619490409e+01 9.9932729053868798e+01 -2.4973974425579422e+00 -5.3832924959783259e+02 1.0000000000000003e+02 -5.3832924959783242e+00 -1.6803658920753826e+01 1.1420366424775501e+01\n", + " 176 9.9987709063951129e+01 9.9956378565780781e+01 -2.4953757581624258e+00 -5.3799845525416777e+02 9.9999999999999986e+01 -5.3799845525416785e+00 -1.6806681679584049e+01 1.1426697127042370e+01\n", + " 177 1.0002335372838976e+02 1.0002206470140359e+02 -2.5084657889722104e+00 -5.3799049960080129e+02 1.0000000000000000e+02 -5.3799049960080128e+00 -1.6804947929096478e+01 1.1425042933088461e+01\n", + " 178 9.9980298021276397e+01 9.9969901484077013e+01 -2.5099548967369927e+00 -5.3719069768905592e+02 1.0000000000000001e+02 -5.3719069768905587e+00 -1.6806297742936543e+01 1.1434390766045988e+01\n", + " 179 9.9995652957767021e+01 1.0001273773064635e+02 -2.5120987072918624e+00 -5.3685622606153481e+02 9.9999999999999986e+01 -5.3685622606153496e+00 -1.6806135155324466e+01 1.1437572894709115e+01\n", + " 180 9.9966488299988868e+01 9.9930079297753565e+01 -2.4960142874713038e+00 -5.3686617553209226e+02 9.9999999999999986e+01 -5.3686617553209235e+00 -1.6803006864792916e+01 1.1434345109471995e+01\n", + " 181 9.9973609616329270e+01 9.9923405115513674e+01 -2.4823058152096338e+00 -5.3692374939616798e+02 1.0000000000000000e+02 -5.3692374939616796e+00 -1.6803183430068756e+01 1.1433945936107078e+01\n", + " 182 1.0001493760631766e+02 1.0000422823912653e+02 -2.5058689730779418e+00 -5.3769500091120972e+02 1.0000000000000000e+02 -5.3769500091120976e+00 -1.6800721881830366e+01 1.1423771872718271e+01\n", + " 183 1.0000965939844923e+02 1.0004067507731008e+02 -2.5180012501153919e+00 -5.3892989891267814e+02 1.0000000000000000e+02 -5.3892989891267815e+00 -1.6800894917964037e+01 1.1411595928837253e+01\n", + " 184 9.9973324137226669e+01 9.9958272718407315e+01 -2.5067406797578986e+00 -5.3866302543767563e+02 1.0000000000000000e+02 -5.3866302543767564e+00 -1.6804694324244959e+01 1.1418064069868203e+01\n", + " 185 9.9998227886208298e+01 9.9965533396386874e+01 -2.5101788350779870e+00 -5.4191171356131917e+02 1.0000000000000000e+02 -5.4191171356131917e+00 -1.6807372082623001e+01 1.1388254947009807e+01\n", + " 186 1.0004636441980561e+02 1.0009694148900782e+02 -2.5836528260125222e+00 -5.4313359078580481e+02 1.0000000000000000e+02 -5.4313359078580481e+00 -1.6797778569377758e+01 1.1366442661519709e+01\n", + " 187 9.9973895529569972e+01 9.9943611653793710e+01 -2.5508556847885346e+00 -5.4581601630660225e+02 1.0000000000000000e+02 -5.4581601630660224e+00 -1.6797862546418461e+01 1.1339702383352442e+01\n", + " 188 1.0003520767072841e+02 1.0011014034112263e+02 -2.6159602834413529e+00 -5.4221121294955560e+02 1.0000000000000000e+02 -5.4221121294955559e+00 -1.6802824110403002e+01 1.1380711980907442e+01\n", + " 189 9.9873684826635198e+01 9.8947619450809796e+01 -2.4964126607329660e+00 -5.3825579017416612e+02 9.9999999999999986e+01 -5.3825579017416620e+00 -1.6805980504510792e+01 1.1423422602769135e+01\n", + " 190 1.0000516686573459e+02 9.9932252836796224e+01 -2.4955711607369948e+00 -5.3827228453812984e+02 1.0000000000000000e+02 -5.3827228453812985e+00 -1.6806696990788893e+01 1.1423974145407596e+01\n", + " 191 9.9965602929565705e+01 9.9942387761233576e+01 -2.4838170202192624e+00 -5.3808456861711397e+02 1.0000000000000000e+02 -5.3808456861711402e+00 -1.6806398002555216e+01 1.1425552316384074e+01\n", + " 192 1.0000055152067716e+02 9.9979184316927572e+01 -2.4946690479774563e+00 -5.3669828212891093e+02 1.0000000000000000e+02 -5.3669828212891098e+00 -1.6810134117976087e+01 1.1443151296686976e+01\n", + " 193 9.9992658363468905e+01 9.9964865065554605e+01 -2.4911507233388055e+00 -5.3821051888534237e+02 1.0000000000000000e+02 -5.3821051888534237e+00 -1.6809683299190706e+01 1.1427578110337281e+01\n", + " 194 9.9999705167173744e+01 9.9961511392524869e+01 -2.4969316340854490e+00 -5.3801163301880717e+02 1.0000000000000000e+02 -5.3801163301880717e+00 -1.6812018416281969e+01 1.1431902086093899e+01\n", + " 195 1.0001395383416006e+02 1.0005267632781998e+02 -2.5097068772750157e+00 -5.3783181535018593e+02 1.0000000000000000e+02 -5.3783181535018594e+00 -1.6807579412748293e+01 1.1429261259246433e+01\n", + " 196 1.0000708287364371e+02 9.9971909961161998e+01 -2.5189884931526683e+00 -5.3765252986336748e+02 1.0000000000000000e+02 -5.3765252986336751e+00 -1.6805377034089211e+01 1.1428851735455535e+01\n", + " 197 9.9976144969457863e+01 9.9935626690733244e+01 -2.4912105788470362e+00 -5.3697763015346811e+02 1.0000000000000000e+02 -5.3697763015346816e+00 -1.6804611239668944e+01 1.1434834938134259e+01\n", + " 198 9.9967480385434570e+01 9.9946662111369207e+01 -2.4632061667099934e+00 -5.3755152606402589e+02 1.0000000000000000e+02 -5.3755152606402588e+00 -1.6803626610861400e+01 1.1428111350221140e+01\n", + " 199 1.0001359621921013e+02 1.0001863553529849e+02 -2.5011613103824399e+00 -5.3818850136898459e+02 1.0000000000000001e+02 -5.3818850136898453e+00 -1.6804985533870166e+01 1.1423100520180322e+01\n", + " 200 1.0000553135166163e+02 1.0002075821982193e+02 -2.5233608903302964e+00 -5.3899932181133363e+02 1.0000000000000000e+02 -5.3899932181133368e+00 -1.6804750461389968e+01 1.1414757243276624e+01\n", + " 201 9.9951956126159473e+01 9.9906835145606379e+01 -2.4941052512821358e+00 -5.3869055869184945e+02 1.0000000000000000e+02 -5.3869055869184947e+00 -1.6812846614426878e+01 1.1425941027508387e+01\n", + " 202 1.0003706531897184e+02 1.0006594360703581e+02 -2.5245844832171374e+00 -5.3768977823790533e+02 9.9999999999999986e+01 -5.3768977823790545e+00 -1.6808807938410201e+01 1.1431910156031147e+01\n", + " 203 9.9929313427754607e+01 9.9878664756007495e+01 -2.4835584025392285e+00 -5.3745154361149400e+02 9.9999999999999986e+01 -5.3745154361149412e+00 -1.6808516538498971e+01 1.1434001102384032e+01\n", + " 204 1.0000139895032626e+02 9.9958512965111225e+01 -2.4856728482389312e+00 -5.3720477066502156e+02 9.9999999999999986e+01 -5.3720477066502168e+00 -1.6806186016588256e+01 1.1434138309938046e+01\n", + " 205 9.9984543960713395e+01 9.9968819303054943e+01 -2.4764946638268386e+00 -5.3744475984760754e+02 1.0000000000000000e+02 -5.3744475984760758e+00 -1.6805842702069146e+01 1.1431395103593065e+01\n", + " 206 1.0002848147683834e+02 1.0008058055331139e+02 -2.5109987817355042e+00 -5.3715301676016429e+02 1.0000000000000000e+02 -5.3715301676016427e+00 -1.6808285294723763e+01 1.1436755127122122e+01\n", + " 207 9.9971833609016272e+01 9.9952293483590637e+01 -2.5036058088119777e+00 -5.3708935538850812e+02 1.0000000000000000e+02 -5.3708935538850815e+00 -1.6806044507872276e+01 1.1435150953987193e+01\n", + " 208 9.9978788006600467e+01 9.9922519263001746e+01 -2.4812402255700867e+00 -5.3690811599782376e+02 1.0000000000000003e+02 -5.3690811599782355e+00 -1.6802451217973694e+01 1.1433370057995456e+01\n", + " 209 9.9989324642189828e+01 9.9973450885522055e+01 -2.4827262173303701e+00 -5.3636617106331698e+02 1.0000000000000000e+02 -5.3636617106331697e+00 -1.6803556588587693e+01 1.1439894877954528e+01\n", + " 210 1.0000662292843177e+02 9.9987646954699997e+01 -2.4948164874423764e+00 -5.3710784447348669e+02 1.0000000000000001e+02 -5.3710784447348665e+00 -1.6803561861376910e+01 1.1432483416642039e+01\n", + " 211 9.9981373482945912e+01 9.9979357446128091e+01 -2.4803293309362413e+00 -5.3669856238593502e+02 9.9999999999999986e+01 -5.3669856238593514e+00 -1.6804762991468237e+01 1.1437777367608888e+01\n", + " 212 9.9993508458706714e+01 9.9994773035287068e+01 -2.4842344155888889e+00 -5.3654179194283893e+02 9.9999999999999972e+01 -5.3654179194283911e+00 -1.6807011832528609e+01 1.1441593913100217e+01\n", + " 213 9.9991702722059415e+01 9.9955108682805246e+01 -2.4835596301206189e+00 -5.3625177152308265e+02 1.0000000000000000e+02 -5.3625177152308270e+00 -1.6808696435026317e+01 1.1446178719795492e+01\n", + " 214 1.0000406480011080e+02 1.0000208029969357e+02 -2.4935444491760572e+00 -5.3617731474449226e+02 1.0000000000000004e+02 -5.3617731474449197e+00 -1.6811795812819046e+01 1.1450022665374128e+01\n", + " 215 9.9966799513897882e+01 9.9935484829683745e+01 -2.4726815446096504e+00 -5.3597452233334855e+02 1.0000000000000000e+02 -5.3597452233334852e+00 -1.6813501657051280e+01 1.1453756433717793e+01\n", + " 216 1.0000542989876003e+02 1.0003068269817412e+02 -2.4889897865734545e+00 -5.3491462841533064e+02 1.0000000000000001e+02 -5.3491462841533055e+00 -1.6813129865152003e+01 1.1463983580998695e+01\n", + " 217 9.9940618209265011e+01 9.9906758946312365e+01 -2.4454353942702634e+00 -5.3668229281335346e+02 1.0000000000000000e+02 -5.3668229281335345e+00 -1.6811490531816297e+01 1.1444667603682758e+01\n", + " 218 1.0002506695650180e+02 1.0003503389979427e+02 -2.4857865387173681e+00 -5.3631852968732824e+02 1.0000000000000000e+02 -5.3631852968732820e+00 -1.6816911540459820e+01 1.1453726243586537e+01\n", + " 219 9.9998373984590216e+01 9.9996313967385547e+01 -2.4953311076786640e+00 -5.3642187769776820e+02 9.9999999999999986e+01 -5.3642187769776832e+00 -1.6814443778969526e+01 1.1450225001991845e+01\n", + " 220 9.9946546386168819e+01 9.9889238227049617e+01 -2.4505066055361913e+00 -5.3713471622418683e+02 1.0000000000000001e+02 -5.3713471622418671e+00 -1.6815496465372341e+01 1.1444149303130471e+01\n", + " 221 1.0003641758696274e+02 1.0007168962405568e+02 -2.4974830171314744e+00 -5.3613842288431624e+02 1.0000000000000001e+02 -5.3613842288431615e+00 -1.6816115111403363e+01 1.1454730882560204e+01\n", + " 222 9.9971293542854724e+01 9.9958488800975104e+01 -2.4815540851694777e+00 -5.3609020223952746e+02 1.0000000000000000e+02 -5.3609020223952744e+00 -1.6816317391429667e+01 1.1455415369034396e+01\n", + " 223 9.9987400832416668e+01 9.9990922112551402e+01 -2.4780141290242987e+00 -5.3664820941439064e+02 1.0000000000000000e+02 -5.3664820941439064e+00 -1.6817927488059080e+01 1.1451445393915176e+01\n", + " 224 1.0000968450981038e+02 9.9996961133437253e+01 -2.4889388357807793e+00 -5.3628480874393779e+02 1.0000000000000000e+02 -5.3628480874393780e+00 -1.6818096009881927e+01 1.1455247922442551e+01\n", + " 225 9.9994004853629363e+01 9.9983965725618333e+01 -2.4853873782699378e+00 -5.3645314738383365e+02 1.0000000000000000e+02 -5.3645314738383370e+00 -1.6816556665721123e+01 1.1452025191882790e+01\n", + " 226 9.9988602019812348e+01 9.9957579220779621e+01 -2.4926197729796864e+00 -5.3592034682487463e+02 1.0000000000000000e+02 -5.3592034682487464e+00 -1.6815626492756124e+01 1.1456423024507378e+01\n", + " 227 9.9985031066832832e+01 1.0002020354250051e+02 -2.4929153732997746e+00 -5.3614819753418942e+02 1.0000000000000001e+02 -5.3614819753418930e+00 -1.6815107654524759e+01 1.1453625679182867e+01\n", + " 228 9.9973258617255127e+01 9.9904965713078056e+01 -2.4641683073134106e+00 -5.3564247576597575e+02 9.9999999999999986e+01 -5.3564247576597586e+00 -1.6815840682339335e+01 1.1459415924679574e+01\n", + " 229 9.9983483891980484e+01 9.9940684177976280e+01 -2.4567825754124817e+00 -5.3644219427929238e+02 9.9999999999999986e+01 -5.3644219427929247e+00 -1.6813950156362960e+01 1.1449528213570035e+01\n", + " 230 1.0000579334305813e+02 1.0002919364240698e+02 -2.4798722332028182e+00 -5.3688478187406417e+02 1.0000000000000003e+02 -5.3688478187406403e+00 -1.6815419624784788e+01 1.1446571806044151e+01\n", + " 231 1.0000260311552671e+02 1.0002414243423398e+02 -2.4961603275355619e+00 -5.3714024247595125e+02 1.0000000000000000e+02 -5.3714024247595127e+00 -1.6811872156058147e+01 1.1440469731298636e+01\n", + " 232 9.9974792704279793e+01 9.9939964311850815e+01 -2.4746102406879218e+00 -5.3708720953452314e+02 1.0000000000000000e+02 -5.3708720953452316e+00 -1.6810829373831215e+01 1.1439957278485984e+01\n", + " 233 9.9982151239675460e+01 9.9956285128962961e+01 -2.4704803915158964e+00 -5.3788034033315489e+02 1.0000000000000000e+02 -5.3788034033315490e+00 -1.6811100827549470e+01 1.1432297424217920e+01\n", + " 234 1.0003270788666802e+02 1.0006487735273190e+02 -2.5131703105496199e+00 -5.3863100176646515e+02 1.0000000000000000e+02 -5.3863100176646519e+00 -1.6814530921937859e+01 1.1428220904273207e+01\n", + " 235 9.9970445421088939e+01 9.9951880493517962e+01 -2.4901460410190954e+00 -5.3835352462939227e+02 1.0000000000000003e+02 -5.3835352462939206e+00 -1.6812753904772507e+01 1.1429218658478588e+01\n", + " 236 1.0001946140303124e+02 1.0007257337749219e+02 -2.5293728187506881e+00 -5.3879003289342620e+02 1.0000000000000001e+02 -5.3879003289342613e+00 -1.6814137466458636e+01 1.1426237137524375e+01\n", + " 237 9.9966557580619209e+01 9.9933475471022817e+01 -2.5056830969189905e+00 -5.3886157177921950e+02 1.0000000000000000e+02 -5.3886157177921952e+00 -1.6809976611104894e+01 1.1421360893312698e+01\n", + " 238 1.0001956144900427e+02 1.0000346793143575e+02 -2.5355207932352699e+00 -5.3819754143425450e+02 1.0000000000000000e+02 -5.3819754143425449e+00 -1.6803537438837484e+01 1.1421562024494941e+01\n", + " 239 9.9935677169596914e+01 9.9879666889680237e+01 -2.4727250069619275e+00 -5.3677517455328154e+02 1.0000000000000001e+02 -5.3677517455328143e+00 -1.6805232739895331e+01 1.1437480994362513e+01\n", + " 240 1.0001219481026172e+02 9.9983089746030473e+01 -2.4799658646160081e+00 -5.3731230561786072e+02 1.0000000000000000e+02 -5.3731230561786072e+00 -1.6807149947268364e+01 1.1434026891089754e+01\n", + " 241 9.9969551031089964e+01 9.9992273799581724e+01 -2.4801023183325470e+00 -5.3729553476971637e+02 9.9999999999999972e+01 -5.3729553476971654e+00 -1.6802461441457904e+01 1.1429506093760738e+01\n", + " 242 9.9983409857723288e+01 9.9971601297470286e+01 -2.4915210047717533e+00 -5.3746115012505288e+02 1.0000000000000001e+02 -5.3746115012505280e+00 -1.6807052654712646e+01 1.1432441153462118e+01\n", + " 243 9.9995043208999732e+01 9.9992666926940188e+01 -2.4900019056420102e+00 -5.3765895295719736e+02 1.0000000000000001e+02 -5.3765895295719730e+00 -1.6812258863320654e+01 1.1435669333748681e+01\n", + " 244 9.9970181049578898e+01 9.9934810561398592e+01 -2.4691546880512143e+00 -5.3775740389752673e+02 9.9999999999999972e+01 -5.3775740389752693e+00 -1.6811915784905423e+01 1.1434341745930157e+01\n", + " 245 1.0000576311513579e+02 1.0000586999912002e+02 -2.4904902046259187e+00 -5.3765446115267866e+02 1.0000000000000003e+02 -5.3765446115267848e+00 -1.6814209151995421e+01 1.1437664540468635e+01\n", + " 246 9.9992263833232073e+01 1.0000529634712295e+02 -2.4978318615557442e+00 -5.3763768166867487e+02 1.0000000000000003e+02 -5.3763768166867472e+00 -1.6811249243446348e+01 1.1434872426759604e+01\n", + " 247 9.9967683016732209e+01 9.9914797051750469e+01 -2.4721901161938122e+00 -5.3867646973701710e+02 1.0000000000000001e+02 -5.3867646973701699e+00 -1.6800969101441403e+01 1.1414204404071231e+01\n", + " 248 1.0004235376180490e+02 1.0009242881170860e+02 -2.5473547483540413e+00 -5.4117377623766447e+02 1.0000000000000000e+02 -5.4117377623766449e+00 -1.6804293126980312e+01 1.1392555364603664e+01\n", + " 249 9.9972381948005207e+01 9.9976327914318887e+01 -2.5079267406918300e+00 -5.3761711637690723e+02 1.0000000000000003e+02 -5.3761711637690706e+00 -1.6809259661292160e+01 1.1433088497523089e+01\n", + " 250 9.9982448249761418e+01 9.9908804201697592e+01 -2.5033240531194014e+00 -5.3692478880093961e+02 1.0000000000000000e+02 -5.3692478880093963e+00 -1.6808840543384832e+01 1.1439592655375431e+01\n", + " 251 9.9972998221592860e+01 9.9941937830605966e+01 -2.4905435941471050e+00 -5.3836677161532214e+02 1.0000000000000003e+02 -5.3836677161532194e+00 -1.6815632608515369e+01 1.1431964892362146e+01\n", + " 252 9.9999257481538777e+01 9.9996454346792277e+01 -2.4889214223711957e+00 -5.3850974963725946e+02 9.9999999999999986e+01 -5.3850974963725955e+00 -1.6811744148707330e+01 1.1426646652334734e+01\n", + " 253 9.9992991053206353e+01 9.9980739319318488e+01 -2.5082432745757912e+00 -5.3744709562706146e+02 1.0000000000000001e+02 -5.3744709562706134e+00 -1.6810321268405382e+01 1.1435850312134766e+01\n", + " 254 9.9988513610620984e+01 9.9967927574846797e+01 -2.4950024822752677e+00 -5.3749758131197746e+02 9.9999999999999972e+01 -5.3749758131197769e+00 -1.6808821807884165e+01 1.1433845994764381e+01\n", + " 255 9.9961722148531550e+01 9.9921023612339212e+01 -2.4737852651773489e+00 -5.3834515047883121e+02 9.9999999999999986e+01 -5.3834515047883134e+00 -1.6807825231160798e+01 1.1424373726372483e+01\n", + " 256 1.0004532734995881e+02 1.0004739368733746e+02 -2.5204204725775363e+00 -5.3768109911967645e+02 9.9999999999999986e+01 -5.3768109911967654e+00 -1.6809494218039426e+01 1.1432683226842659e+01\n", + " 257 1.0000934289577748e+02 1.0003584456534742e+02 -2.5348536668762942e+00 -5.3752877514341117e+02 1.0000000000000000e+02 -5.3752877514341115e+00 -1.6808287966490489e+01 1.1433000215056374e+01\n", + " 258 9.9948086108563331e+01 9.9853905395858789e+01 -2.4882053054768849e+00 -5.3704544314132352e+02 1.0000000000000000e+02 -5.3704544314132354e+00 -1.6808733458544047e+01 1.1438279027130809e+01\n", + " 259 1.0001106948199629e+02 1.0000115980536144e+02 -2.4982173953109381e+00 -5.3676684961287822e+02 1.0000000000000001e+02 -5.3676684961287817e+00 -1.6807061385520655e+01 1.1439392889391875e+01\n", + " 260 9.9944200723043906e+01 9.9881702959965338e+01 -2.4645434125679575e+00 -5.3683785697170333e+02 1.0000000000000001e+02 -5.3683785697170325e+00 -1.6806953337497344e+01 1.1438574767780306e+01\n", + " 261 1.0001616454421162e+02 1.0002965365105908e+02 -2.4818128326815629e+00 -5.3697301209369994e+02 1.0000000000000000e+02 -5.3697301209369996e+00 -1.6809107597448318e+01 1.1439377476511318e+01\n", + " 262 1.0001694897148094e+02 9.9997260374230024e+01 -2.5015203965385950e+00 -5.3686152046303675e+02 9.9999999999999972e+01 -5.3686152046303697e+00 -1.6807184761933772e+01 1.1438569557303401e+01\n", + " 263 9.9951253873692366e+01 9.9927186089176445e+01 -2.4703207657281059e+00 -5.3631719827159236e+02 1.0000000000000001e+02 -5.3631719827159232e+00 -1.6804211378137015e+01 1.1441039395421091e+01\n", + " 264 1.0000680864276511e+02 9.9978148068839658e+01 -2.4768937585305610e+00 -5.3595727480914127e+02 1.0000000000000000e+02 -5.3595727480914128e+00 -1.6807802267672077e+01 1.1448229519580666e+01\n", + " 265 9.9970830661280402e+01 9.9961534350171419e+01 -2.4615548443330901e+00 -5.3576420607031253e+02 9.9999999999999986e+01 -5.3576420607031263e+00 -1.6801518364758277e+01 1.1443876304055152e+01\n", + " 266 1.0001447803363459e+02 9.9988437806194952e+01 -2.4792758306962606e+00 -5.3599693110665646e+02 1.0000000000000001e+02 -5.3599693110665640e+00 -1.6799044642380395e+01 1.1439075331313834e+01\n", + " 267 1.0001500643232858e+02 1.0005758020158956e+02 -2.5045091811558660e+00 -5.3704418013073803e+02 1.0000000000000001e+02 -5.3704418013073791e+00 -1.6798660166072160e+01 1.1428218364764783e+01\n", + " 268 9.9948018226082695e+01 9.9876029391693905e+01 -2.4517450882341638e+00 -5.3726537218732835e+02 1.0000000000000001e+02 -5.3726537218732826e+00 -1.6796898307873267e+01 1.1424244585999979e+01\n", + " 269 1.0004051590315403e+02 1.0005870065763219e+02 -2.5075302308965735e+00 -5.3835008765335488e+02 9.9999999999999986e+01 -5.3835008765335495e+00 -1.6796963605393646e+01 1.1413462728860093e+01\n", + " 270 1.0001271084160672e+02 1.0003478318558555e+02 -2.5334492677456271e+00 -5.3900992915658298e+02 1.0000000000000000e+02 -5.3900992915658303e+00 -1.6797448591036993e+01 1.1407349299471162e+01\n", + " 271 9.9941182968942741e+01 9.9904542442916650e+01 -2.4961804862942727e+00 -5.3884479900396207e+02 9.9999999999999986e+01 -5.3884479900396220e+00 -1.6797975018669110e+01 1.1409527028629489e+01\n", + " 272 1.0003902507394248e+02 1.0004630824713173e+02 -2.5365001249861363e+00 -5.3809450530122899e+02 9.9999999999999986e+01 -5.3809450530122911e+00 -1.6803252319625628e+01 1.1422307266613336e+01\n", + " 273 9.9973430473277986e+01 9.9972704365956929e+01 -2.5295020511374497e+00 -5.3748062031264453e+02 9.9999999999999986e+01 -5.3748062031264467e+00 -1.6804612068657175e+01 1.1429805865530732e+01\n", + " 274 9.9914904710724230e+01 9.9814510008171979e+01 -2.4553975987970720e+00 -5.3754598997803805e+02 1.0000000000000000e+02 -5.3754598997803802e+00 -1.6801684359204479e+01 1.1426224459424095e+01\n", + " 275 9.9994466559888494e+01 9.9979852914402144e+01 -2.4773153225620814e+00 -5.3794375917033528e+02 1.0000000000000001e+02 -5.3794375917033523e+00 -1.6795545673022588e+01 1.1416108081319230e+01\n", + " 276 9.9979078126461999e+01 9.9963059736908832e+01 -2.4742634752767625e+00 -5.3768344469783131e+02 1.0000000000000000e+02 -5.3768344469783136e+00 -1.6803372315857015e+01 1.1426537868878704e+01\n", + " 277 9.9991351735502391e+01 9.9967357453624459e+01 -2.4779152615060944e+00 -5.3729573500735705e+02 1.0000000000000000e+02 -5.3729573500735706e+00 -1.6799551030521336e+01 1.1426593680447764e+01\n", + " 278 9.9976231597016493e+01 9.9983101979727564e+01 -2.4655266856381419e+00 -5.3657996662784990e+02 1.0000000000000000e+02 -5.3657996662784990e+00 -1.6803389545435106e+01 1.1437589879156610e+01\n", + " 279 9.9981352482260718e+01 9.9932549732644802e+01 -2.4727491914857236e+00 -5.3616474568173578e+02 1.0000000000000003e+02 -5.3616474568173560e+00 -1.6802522175705374e+01 1.1440874718888018e+01\n", + " 280 1.0001921290364500e+02 1.0004240039663020e+02 -2.4908047250070546e+00 -5.3626827580939369e+02 9.9999999999999986e+01 -5.3626827580939382e+00 -1.6802840423627895e+01 1.1440157665533954e+01\n", + " 281 9.9978940327346862e+01 9.9943425756090932e+01 -2.4749124346434646e+00 -5.3677328793986203e+02 1.0000000000000000e+02 -5.3677328793986208e+00 -1.6803516756468238e+01 1.1435783877069616e+01\n", + " 282 1.0000561801084683e+02 9.9995389083250487e+01 -2.4925574071826930e+00 -5.3677074895877297e+02 9.9999999999999972e+01 -5.3677074895877315e+00 -1.6807061826548711e+01 1.1439354336960978e+01\n", + " 283 9.9971772039470395e+01 9.9932169709237641e+01 -2.4657081198620245e+00 -5.3742404904663545e+02 1.0000000000000000e+02 -5.3742404904663550e+00 -1.6810138286758910e+01 1.1435897796292553e+01\n", + " 284 1.0004226755515883e+02 1.0007485321402150e+02 -2.5144807510780933e+00 -5.3829437740118692e+02 1.0000000000000000e+02 -5.3829437740118697e+00 -1.6814371667708528e+01 1.1431427893696657e+01\n", + " 285 9.9943647589470999e+01 9.9906794636524083e+01 -2.4756525260784001e+00 -5.3867820876173982e+02 1.0000000000000001e+02 -5.3867820876173971e+00 -1.6817486728494377e+01 1.1430704640876982e+01\n", + " 286 1.0005917731258778e+02 1.0009416293061442e+02 -2.5387831157810594e+00 -5.3795162102432357e+02 1.0000000000000000e+02 -5.3795162102432359e+00 -1.6812498299758733e+01 1.1432982089515502e+01\n", + " 287 9.9917881422370996e+01 9.9855209826333180e+01 -2.4729644321023287e+00 -5.3796059987820695e+02 1.0000000000000000e+02 -5.3796059987820692e+00 -1.6814953729541379e+01 1.1435347730759311e+01\n", + " 288 1.0001807150440840e+02 1.0000119104444795e+02 -2.4969003479380900e+00 -5.3954217262480881e+02 1.0000000000000000e+02 -5.3954217262480881e+00 -1.6817080372804970e+01 1.1421658646556882e+01\n", + " 289 9.9997024227377409e+01 9.9972541718414604e+01 -2.5100592200819976e+00 -5.3892632855587851e+02 1.0000000000000003e+02 -5.3892632855587834e+00 -1.6814837229156353e+01 1.1425573943597570e+01\n", + " 290 9.9965202655726628e+01 9.9926589754407814e+01 -2.4793242323755393e+00 -5.3709761480599468e+02 9.9999999999999972e+01 -5.3709761480599489e+00 -1.6811938726230899e+01 1.1440962578170952e+01\n", + " 291 1.0002668891868433e+02 1.0002383940472737e+02 -2.5159966270653058e+00 -5.3760842497233102e+02 1.0000000000000003e+02 -5.3760842497233083e+00 -1.6811431957273921e+01 1.1435347707550612e+01\n", + " 292 9.9986190380648665e+01 1.0001833400959245e+02 -2.5158750699027688e+00 -5.3819651916666919e+02 9.9999999999999986e+01 -5.3819651916666933e+00 -1.6809418499257507e+01 1.1427453307590817e+01\n", + " 293 9.9940795291858578e+01 9.9874655724736485e+01 -2.4795192591938395e+00 -5.3717720026501036e+02 1.0000000000000000e+02 -5.3717720026501032e+00 -1.6814012728928976e+01 1.1442240726278873e+01\n", + " 294 1.0000866899314767e+02 9.9983420197677148e+01 -2.4895584984046777e+00 -5.3682080698078494e+02 9.9999999999999986e+01 -5.3682080698078503e+00 -1.6814769547958083e+01 1.1446561478150235e+01\n", + " 295 1.0000677361224587e+02 1.0001272823642960e+02 -2.5030777260900301e+00 -5.3635734500491992e+02 9.9999999999999986e+01 -5.3635734500492003e+00 -1.6816281561309758e+01 1.1452708111260556e+01\n", + " 296 9.9959171380650105e+01 9.9889614354061848e+01 -2.4500288839050572e+00 -5.3653681657956167e+02 9.9999999999999957e+01 -5.3653681657956191e+00 -1.6815542041287500e+01 1.1450173875491886e+01\n", + " 297 1.0001832687208218e+02 1.0001636246914624e+02 -2.4792331846986824e+00 -5.3579464635436216e+02 9.9999999999999986e+01 -5.3579464635436223e+00 -1.6811585438970791e+01 1.1453638975427166e+01\n", + " 298 9.9985398881009118e+01 9.9990583177572489e+01 -2.4835554631685941e+00 -5.3629421194094130e+02 1.0000000000000001e+02 -5.3629421194094125e+00 -1.6816893560579370e+01 1.1453951441169959e+01\n", + " 299 9.9980377152279090e+01 9.9971474569247363e+01 -2.4758387312583774e+00 -5.3654302708279840e+02 1.0000000000000000e+02 -5.3654302708279840e+00 -1.6815320213179987e+01 1.1449889942352002e+01\n", + " 300 9.9992127051181271e+01 9.9988307922560679e+01 -2.4776331406867693e+00 -5.3660295949572458e+02 1.0000000000000000e+02 -5.3660295949572463e+00 -1.6815939123707516e+01 1.1449909528750270e+01\n", + " 301 1.0002372086014518e+02 1.0003798580764452e+02 -2.5068646742857186e+00 -5.3684730421626659e+02 9.9999999999999986e+01 -5.3684730421626670e+00 -1.6817496452526015e+01 1.1449023410363349e+01\n", + " 302 9.9983187998204500e+01 1.0000642818132030e+02 -2.5042167136549125e+00 -5.3646450274997915e+02 1.0000000000000000e+02 -5.3646450274997912e+00 -1.6818192800804827e+01 1.1453547773305036e+01\n", + " 303 9.9970981766441113e+01 9.9916685053733218e+01 -2.4810304558835745e+00 -5.3719151049502750e+02 1.0000000000000004e+02 -5.3719151049502720e+00 -1.6812152190050469e+01 1.1440237085100197e+01\n", + " 304 9.9993923987440311e+01 9.9972160293840204e+01 -2.4909870299398622e+00 -5.3732645065795214e+02 1.0000000000000001e+02 -5.3732645065795204e+00 -1.6809430337312072e+01 1.1436165830732554e+01\n", + " 305 1.0002554178281977e+02 1.0006270630467962e+02 -2.5230426408877711e+00 -5.3886552064110833e+02 1.0000000000000003e+02 -5.3886552064110820e+00 -1.6808813615125903e+01 1.1420158408714821e+01\n", + " 306 9.9997495062346204e+01 9.9980397652855672e+01 -2.5326051831085841e+00 -5.3961758167928008e+02 1.0000000000000000e+02 -5.3961758167928009e+00 -1.6810371943673175e+01 1.1414196126880375e+01\n", + " 307 9.9965708337755046e+01 9.9919725180608367e+01 -2.5005859963699661e+00 -5.3996248865939435e+02 9.9999999999999972e+01 -5.3996248865939451e+00 -1.6814622188737633e+01 1.1414997302143687e+01\n", + " 308 9.9994515623315380e+01 9.9993103056989227e+01 -2.5101769526432758e+00 -5.3852580027832096e+02 1.0000000000000001e+02 -5.3852580027832087e+00 -1.6808679543738027e+01 1.1423421540954815e+01\n", + " 309 9.9984618105781436e+01 1.0071834614539672e+02 -2.4919149017677680e+00 -5.3678909813369364e+02 1.0000000000000000e+02 -5.3678909813369362e+00 -1.6806370410396060e+01 1.1438479429059122e+01\n", + " 310 9.9988881661531920e+01 9.9950406656624679e+01 -2.4834938804460682e+00 -5.3584804815506243e+02 9.9999999999999986e+01 -5.3584804815506253e+00 -1.6812910806024998e+01 1.1454430324474377e+01\n", + " 311 1.0000361506053572e+02 1.0001135047068398e+02 -2.5017845012565476e+00 -5.3597125091902592e+02 1.0000000000000003e+02 -5.3597125091902571e+00 -1.6810759090337903e+01 1.1451046581147653e+01\n", + " 312 9.9982718336903815e+01 9.9960694487788956e+01 -2.4909793319786506e+00 -5.3566042185354081e+02 1.0000000000000001e+02 -5.3566042185354075e+00 -1.6811492051052355e+01 1.1454887832516947e+01\n", + " 313 9.9970824503980253e+01 9.9961108658528289e+01 -2.4798683223270124e+00 -5.3595492280538303e+02 1.0000000000000000e+02 -5.3595492280538304e+00 -1.6811225416119047e+01 1.1451676188065218e+01\n", + " 314 1.0000998500871370e+02 9.9988178577145405e+01 -2.4991022397490821e+00 -5.3585938685809720e+02 1.0000000000000000e+02 -5.3585938685809724e+00 -1.6814895421849293e+01 1.1456301553268316e+01\n", + " 315 9.9960800857309010e+01 9.9956614440412039e+01 -2.4676457049423539e+00 -5.3530520124714178e+02 9.9999999999999972e+01 -5.3530520124714194e+00 -1.6814515387797297e+01 1.1461463375325875e+01\n", + " 316 9.9989549348185108e+01 9.9961157265218262e+01 -2.4775577670244751e+00 -5.3598008968373711e+02 9.9999999999999986e+01 -5.3598008968373723e+00 -1.6814444532897184e+01 1.1454643636059814e+01\n", + " 317 1.0002459038556771e+02 1.0007616166677956e+02 -2.5084941158313292e+00 -5.3594515737896540e+02 9.9999999999999986e+01 -5.3594515737896549e+00 -1.6813242107788859e+01 1.1453790533999202e+01\n", + " 318 9.9984588160244783e+01 9.9965347548872671e+01 -2.4907906759326992e+00 -5.3707894859488692e+02 1.0000000000000000e+02 -5.3707894859488690e+00 -1.6816213351961448e+01 1.1445423866012575e+01\n", + " 319 9.9991430703264854e+01 9.9964230663504594e+01 -2.5059082424639891e+00 -5.3824121785537227e+02 1.0000000000000001e+02 -5.3824121785537216e+00 -1.6811041073000219e+01 1.1428628894446497e+01\n", + " 320 9.9953723565433720e+01 9.9962691520259867e+01 -2.4751513224023518e+00 -5.3638192145421965e+02 9.9999999999999986e+01 -5.3638192145421977e+00 -1.6807891176560123e+01 1.1444071962017924e+01\n", + " 321 1.0000094487169618e+02 9.9938105417714979e+01 -2.4815681309886743e+00 -5.3725561976177539e+02 1.0000000000000001e+02 -5.3725561976177527e+00 -1.6808629311844239e+01 1.1436073114226486e+01\n", + " 322 1.0000994179706930e+02 1.0003400564788785e+02 -2.5054832988363391e+00 -5.3776372806349741e+02 1.0000000000000000e+02 -5.3776372806349739e+00 -1.6811093686168970e+01 1.1433456405534001e+01\n", + " 323 9.9974041514857802e+01 9.9935091539535875e+01 -2.4825167015533354e+00 -5.3708852231301910e+02 1.0000000000000000e+02 -5.3708852231301911e+00 -1.6810067811557143e+01 1.1439182588426950e+01\n", + " 324 9.9983570546615681e+01 9.9955380013218260e+01 -2.4736966448412274e+00 -5.3701320921980800e+02 1.0000000000000000e+02 -5.3701320921980802e+00 -1.6815921781158533e+01 1.1445789688960447e+01\n", + " 325 9.9991854063094479e+01 9.9971952440811464e+01 -2.4778395170979866e+00 -5.3800824837298626e+02 9.9999999999999986e+01 -5.3800824837298640e+00 -1.6816926373682314e+01 1.1436843889952451e+01\n", + " 326 1.0001586992726450e+02 1.0002373595229508e+02 -2.4992939727000616e+00 -5.3766258433460655e+02 9.9999999999999986e+01 -5.3766258433460665e+00 -1.6813698376900863e+01 1.1437072533554794e+01\n", + " 327 9.9997993362792755e+01 9.9995078809907099e+01 -2.4982009642040643e+00 -5.3889645569313427e+02 1.0000000000000000e+02 -5.3889645569313425e+00 -1.6815011655739596e+01 1.1426047098808253e+01\n", + " 328 9.9985308421865014e+01 9.9966693653012570e+01 -2.5157959755727455e+00 -5.4102921399310173e+02 1.0000000000000000e+02 -5.4102921399310171e+00 -1.6815187580128104e+01 1.1404895440197086e+01\n", + " 329 9.9997924841191448e+01 1.0003312393541356e+02 -2.5287202566509652e+00 -5.4004446242159611e+02 1.0000000000000001e+02 -5.4004446242159601e+00 -1.6810058999975055e+01 1.1409614375759096e+01\n", + " 330 9.9963052965208362e+01 9.9965686942363519e+01 -2.5182824722052994e+00 -5.3846642086154202e+02 1.0000000000000001e+02 -5.3846642086154191e+00 -1.6811431442615788e+01 1.1426767234000366e+01\n", + " 331 9.9997949765913091e+01 9.9976589341920871e+01 -2.5257982012759070e+00 -5.3859986579245538e+02 1.0000000000000000e+02 -5.3859986579245538e+00 -1.6817505153605229e+01 1.1431506495680678e+01\n", + " 332 9.9981926367569216e+01 9.9972500542522781e+01 -2.5209498322604746e+00 -5.4124096198954931e+02 1.0000000000000001e+02 -5.4124096198954925e+00 -1.6816911592008065e+01 1.1404501972112572e+01\n", + " 333 1.0000575042799876e+02 1.0005103640628262e+02 -2.5581544100375266e+00 -5.4076537730646760e+02 1.0000000000000000e+02 -5.4076537730646761e+00 -1.6812821276680523e+01 1.1405167503615846e+01\n", + " 334 9.9977826522382202e+01 9.9927590660390820e+01 -2.5330112587712987e+00 -5.3859462909432045e+02 1.0000000000000003e+02 -5.3859462909432025e+00 -1.6807754218961989e+01 1.1421807928018785e+01\n", + " 335 9.9954214036100382e+01 9.9866247052412788e+01 -2.4879113691993133e+00 -5.3868400919493445e+02 9.9999999999999986e+01 -5.3868400919493453e+00 -1.6809857567678435e+01 1.1423017475729091e+01\n", + " 336 1.0001538573828864e+02 9.9997563989120607e+01 -2.5206763620636097e+00 -5.3870773523699359e+02 1.0000000000000001e+02 -5.3870773523699347e+00 -1.6810082410975046e+01 1.1423005058605108e+01\n", + " 337 9.9962099439103298e+01 9.9966955337552079e+01 -2.4982755143461732e+00 -5.3890162775144142e+02 9.9999999999999986e+01 -5.3890162775144157e+00 -1.6810154695184565e+01 1.1421138417670150e+01\n", + " 338 9.9966517626712630e+01 9.9927331459213264e+01 -2.4845936048505974e+00 -5.3721929504650086e+02 1.0000000000000003e+02 -5.3721929504650072e+00 -1.6810796164259290e+01 1.1438603213794284e+01\n", + " 339 1.0001969795237262e+02 1.0002250741095760e+02 -2.5129453706696707e+00 -5.3643402573631556e+02 9.9999999999999986e+01 -5.3643402573631569e+00 -1.6811571838020566e+01 1.1447231580657414e+01\n", + " 340 9.9980267137466470e+01 9.9948381763899178e+01 -2.4981573846064706e+00 -5.3626939107172893e+02 1.0000000000000000e+02 -5.3626939107172893e+00 -1.6810279817419723e+01 1.1447585906702434e+01\n", + " 341 9.9984697699007754e+01 9.9986939136808488e+01 -2.4832188048131236e+00 -5.3607852031220864e+02 1.0000000000000000e+02 -5.3607852031220862e+00 -1.6815814412141837e+01 1.1455029209019749e+01\n", + " 342 9.9979988335055054e+01 9.9938104163232225e+01 -2.4826626838901116e+00 -5.3754899895153369e+02 9.9999999999999972e+01 -5.3754899895153390e+00 -1.6815221034545427e+01 1.1439731045030088e+01\n", + " 343 9.9994576005478649e+01 9.9991247190507153e+01 -2.4894507989279155e+00 -5.3823959734714208e+02 9.9999999999999986e+01 -5.3823959734714215e+00 -1.6814757442683032e+01 1.1432361469211607e+01\n", + " 344 1.0000739705706724e+02 1.0000719036614743e+02 -2.5001082689156999e+00 -5.3768580251259061e+02 1.0000000000000000e+02 -5.3768580251259062e+00 -1.6814094121504944e+01 1.1437236096379037e+01\n", + " 345 9.9976153807715562e+01 9.9963887661184472e+01 -2.5018089583492515e+00 -5.3742790541619706e+02 1.0000000000000001e+02 -5.3742790541619696e+00 -1.6819803899269726e+01 1.1445524845107757e+01\n", + " 346 9.9986614384987973e+01 1.0074087213051000e+02 -2.4876130199472439e+00 -5.3942957424176973e+02 9.9999999999999986e+01 -5.3942957424176985e+00 -1.6820608061642393e+01 1.1426312319224694e+01\n", + " 347 1.0000745957108106e+02 1.0003762790860594e+02 -2.5252354591024435e+00 -5.4065406449488580e+02 1.0000000000000000e+02 -5.4065406449488584e+00 -1.6825672800165314e+01 1.1419132155216460e+01\n", + " 348 9.9977857929728330e+01 9.9957453197979817e+01 -2.5187174090641133e+00 -5.4185032586457953e+02 1.0000000000000001e+02 -5.4185032586457949e+00 -1.6826984200271667e+01 1.1408480941625871e+01\n", + " 349 1.0003142960426167e+02 1.0007066531546192e+02 -2.5771349723424017e+00 -5.4051893153970377e+02 1.0000000000000001e+02 -5.4051893153970365e+00 -1.6824784370988919e+01 1.1419595055591879e+01\n", + " 350 9.9940803564000660e+01 9.9875804787693852e+01 -2.5240272508804007e+00 -5.4001773081476460e+02 1.0000000000000001e+02 -5.4001773081476454e+00 -1.6823477098973175e+01 1.1423299790825528e+01\n", + " 351 1.0000267826251951e+02 9.9939824670832863e+01 -2.5280070505657730e+00 -5.3814527399383064e+02 9.9999999999999972e+01 -5.3814527399383083e+00 -1.6823471091480904e+01 1.1442018351542595e+01\n", + " 352 9.9913605920871419e+01 9.9085570678950589e+01 -2.4734637871206568e+00 -5.3614000565664389e+02 1.0000000000000000e+02 -5.3614000565664393e+00 -1.6819351159898524e+01 1.1457951103332082e+01\n", + " 353 1.0003017355258503e+02 1.0004561114936801e+02 -2.5021542854805143e+00 -5.3623893206480591e+02 1.0000000000000001e+02 -5.3623893206480586e+00 -1.6818597433140429e+01 1.1456208112492364e+01\n", + " 354 9.9980988672988531e+01 9.9936970930082410e+01 -2.4959583382070272e+00 -5.3651928250919934e+02 1.0000000000000000e+02 -5.3651928250919934e+00 -1.6812805896545221e+01 1.1447613071453230e+01\n", + " 355 9.9997235994135025e+01 9.9970110561258153e+01 -2.4963578440331289e+00 -5.3594434589287437e+02 1.0000000000000000e+02 -5.3594434589287436e+00 -1.6817150569525541e+01 1.1457707110596793e+01\n", + " 356 9.9947579763299061e+01 9.9925120083620641e+01 -2.4542095667000483e+00 -5.3550470178141654e+02 9.9999999999999972e+01 -5.3550470178141678e+00 -1.6819071686208584e+01 1.1464024668394416e+01\n", + " 357 1.0002256730299935e+02 1.0000851750368916e+02 -2.4802620748880546e+00 -5.3525833655567499e+02 1.0000000000000000e+02 -5.3525833655567503e+00 -1.6817939251333947e+01 1.1465355885777194e+01\n", + " 358 1.0000454037100378e+02 1.0000920108366667e+02 -2.4868327808177013e+00 -5.3591841848791466e+02 1.0000000000000001e+02 -5.3591841848791457e+00 -1.6813698491004637e+01 1.1454514306125494e+01\n", + " 359 9.9979413348165508e+01 9.9940964982214396e+01 -2.4839774838299107e+00 -5.3599867678943951e+02 9.9999999999999986e+01 -5.3599867678943962e+00 -1.6811635048045684e+01 1.1451648280151288e+01\n", + " 360 9.9997847994815729e+01 9.9992879940303922e+01 -2.4864982289092326e+00 -5.3596271168622877e+02 1.0000000000000000e+02 -5.3596271168622875e+00 -1.6808481371011617e+01 1.1448854254149326e+01\n", + " 361 9.9972542102795728e+01 9.9955300882478497e+01 -2.4664830636354154e+00 -5.3820111983569848e+02 9.9999999999999972e+01 -5.3820111983569872e+00 -1.6812186461555704e+01 1.1430175263198716e+01\n", + " 362 1.0003866119934024e+02 1.0007242231507982e+02 -2.5364560728024368e+00 -5.3915661897189716e+02 1.0000000000000001e+02 -5.3915661897189704e+00 -1.6812120453394826e+01 1.1420554263675857e+01\n", + " 363 9.9990478447435834e+01 1.0002256901476831e+02 -2.5293035455158108e+00 -5.4054802481957313e+02 1.0000000000000000e+02 -5.4054802481957314e+00 -1.6818019921653704e+01 1.1412539673457969e+01\n", + " 364 9.9992365900524192e+01 9.9966463495102360e+01 -2.5378908067578578e+00 -5.4071332166677576e+02 9.9999999999999986e+01 -5.4071332166677584e+00 -1.6814729381495482e+01 1.1407596164827719e+01\n", + " 365 9.9998315459032298e+01 1.0000728380254264e+02 -2.5409873884189533e+00 -5.4026520662237101e+02 1.0000000000000001e+02 -5.4026520662237090e+00 -1.6815277473151173e+01 1.1412625406927463e+01\n", + " 366 9.9980185485926086e+01 9.9952662066829134e+01 -2.5318812353006650e+00 -5.4011265505476115e+02 1.0000000000000000e+02 -5.4011265505476116e+00 -1.6819842746040564e+01 1.1418716195492950e+01\n", + " 367 9.9985688001098609e+01 9.9935988901870076e+01 -2.5158418377924670e+00 -5.3895498300905183e+02 1.0000000000000001e+02 -5.3895498300905178e+00 -1.6820822544819173e+01 1.1431272714728655e+01\n", + " 368 9.9981593256913371e+01 9.9957090639381903e+01 -2.5100261663864649e+00 -5.3798931208583929e+02 9.9999999999999986e+01 -5.3798931208583936e+00 -1.6825382567728095e+01 1.1445489446869701e+01\n", + " 369 1.0001999292130351e+02 1.0001713162775046e+02 -2.5305893788847902e+00 -5.3880161843503549e+02 1.0000000000000000e+02 -5.3880161843503549e+00 -1.6824249759047269e+01 1.1436233574696912e+01\n", + " 370 9.9958764972011906e+01 9.9908888290044132e+01 -2.5082410918056000e+00 -5.4029931208163225e+02 1.0000000000000001e+02 -5.4029931208163218e+00 -1.6830719291065925e+01 1.1427726170249604e+01\n", + " 371 9.9992653779339761e+01 9.9978465289754311e+01 -2.5116900882019939e+00 -5.3817667936078385e+02 9.9999999999999986e+01 -5.3817667936078397e+00 -1.6830029525733195e+01 1.1448262732125356e+01\n", + " 372 9.9991347686189272e+01 9.9954308892558174e+01 -2.5076772374593124e+00 -5.3846228161444890e+02 9.9999999999999972e+01 -5.3846228161444909e+00 -1.6828864929500313e+01 1.1444242113355825e+01\n", + " 373 9.9975182213590458e+01 9.9949611279273739e+01 -2.4908500937334326e+00 -5.3894750618351907e+02 1.0000000000000000e+02 -5.3894750618351912e+00 -1.6833765902028759e+01 1.1444290840193567e+01\n", + " 374 1.0001612107328017e+02 1.0003270526160624e+02 -2.5318521732164294e+00 -5.3993251089527632e+02 1.0000000000000001e+02 -5.3993251089527625e+00 -1.6834577120456892e+01 1.1435252011504131e+01\n", + " 375 9.9986438615398825e+01 9.9994034155156442e+01 -2.5326218540161505e+00 -5.3847787924532372e+02 1.0000000000000001e+02 -5.3847787924532362e+00 -1.6833694010728198e+01 1.1448915218274959e+01\n", + " 376 9.9959734194493080e+01 9.9900748497221159e+01 -2.5004677047048105e+00 -5.3866711483688368e+02 1.0000000000000000e+02 -5.3866711483688370e+00 -1.6833857375499591e+01 1.1447186227130755e+01\n", + " 377 9.9986972874230275e+01 9.9963011830678767e+01 -2.4954202972439341e+00 -5.3809078391336288e+02 1.0000000000000000e+02 -5.3809078391336289e+00 -1.6834905011579504e+01 1.1453997172445876e+01\n", + " 378 9.9994822419946985e+01 9.9971514438282853e+01 -2.5084241918099375e+00 -5.3803882503698492e+02 1.0000000000000000e+02 -5.3803882503698492e+00 -1.6832944999006187e+01 1.1452556748636338e+01\n", + " 379 9.9969279890439566e+01 9.9964894963034880e+01 -2.4907105422911227e+00 -5.3898890812761874e+02 9.9999999999999986e+01 -5.3898890812761886e+00 -1.6839030912032683e+01 1.1449141830756494e+01\n", + " 380 1.0000515720389038e+02 9.9974095824198216e+01 -2.5060043502568119e+00 -5.3967329228757046e+02 1.0000000000000001e+02 -5.3967329228757039e+00 -1.6843379920997872e+01 1.1446646998122175e+01\n", + " 381 9.9993325574937558e+01 9.9972352131520552e+01 -2.5123993552680997e+00 -5.3767125302188776e+02 1.0000000000000001e+02 -5.3767125302188772e+00 -1.6830664852330280e+01 1.1453952322111400e+01\n", + " 382 9.9953184626886156e+01 9.9913164791108613e+01 -2.4809875750151820e+00 -5.3835183535815179e+02 1.0000000000000001e+02 -5.3835183535815174e+00 -1.6824387317157040e+01 1.1440868963575522e+01\n", + " 383 1.0000076589574019e+02 1.0001265887347961e+02 -2.5012970902978879e+00 -5.3878944252180827e+02 9.9999999999999972e+01 -5.3878944252180849e+00 -1.6822455344368798e+01 1.1434560919150714e+01\n", + " 384 1.0000759730890941e+02 1.0001060473413546e+02 -2.5224442502276001e+00 -5.3966919259533574e+02 9.9999999999999972e+01 -5.3966919259533590e+00 -1.6822663351960774e+01 1.1425971426007415e+01\n", + " 385 9.9989324282881540e+01 9.9994602033394912e+01 -2.5131929161458593e+00 -5.3893017780513821e+02 1.0000000000000001e+02 -5.3893017780513812e+00 -1.6825232423237743e+01 1.1435930645186358e+01\n", + " 386 9.9980257090275586e+01 9.9939510527585142e+01 -2.5143926226825060e+00 -5.4060755192804186e+02 1.0000000000000001e+02 -5.4060755192804182e+00 -1.6817988464901457e+01 1.1411912945621037e+01\n", + " 387 1.0000013557088552e+02 1.0000654700595473e+02 -2.5306480760040877e+00 -5.4058355273458676e+02 1.0000000000000001e+02 -5.4058355273458671e+00 -1.6813692792342984e+01 1.1407857264997119e+01\n", + " 388 9.9962337938463833e+01 9.9916309670090712e+01 -2.5019720604571138e+00 -5.3987953008485385e+02 9.9999999999999943e+01 -5.3987953008485414e+00 -1.6812305312096580e+01 1.1413510011248041e+01\n", + " 389 1.0001681130239901e+02 1.0000314937622480e+02 -2.5184660747168701e+00 -5.3960240678397770e+02 1.0000000000000001e+02 -5.3960240678397762e+00 -1.6817596250327998e+01 1.1421572182488219e+01\n", + " 390 1.0003315286618701e+02 1.0003787545568106e+02 -2.5490692251235196e+00 -5.3826161846870650e+02 1.0000000000000000e+02 -5.3826161846870653e+00 -1.6814962550866397e+01 1.1432346366179333e+01\n", + " 391 9.9926682492735608e+01 9.9897834800549433e+01 -2.4906372169456814e+00 -5.3824322732316432e+02 1.0000000000000000e+02 -5.3824322732316432e+00 -1.6808961001333714e+01 1.1426528728102069e+01\n", + " 392 1.0000580937384979e+02 9.9946172189217521e+01 -2.5031325085356682e+00 -5.3757174380711126e+02 1.0000000000000001e+02 -5.3757174380711117e+00 -1.6811791617394643e+01 1.1436074179323530e+01\n", + " 393 9.9981160866112475e+01 9.9992347055857095e+01 -2.5021512282683056e+00 -5.3741407029766833e+02 9.9999999999999986e+01 -5.3741407029766846e+00 -1.6805538073114381e+01 1.1431397370137697e+01\n", + " 394 9.9981089117869729e+01 9.9944007049320135e+01 -2.4899405819655476e+00 -5.3651026292684344e+02 9.9999999999999986e+01 -5.3651026292684358e+00 -1.6805455217804163e+01 1.1440352588535729e+01\n", + " 395 1.0002299000397637e+02 1.0008118082645899e+02 -2.5330710604052573e+00 -5.3729454121134802e+02 1.0000000000000001e+02 -5.3729454121134790e+00 -1.6806677745038993e+01 1.1433732332925521e+01\n", + " 396 9.9950182247483681e+01 9.9914376870722506e+01 -2.4930849703713500e+00 -5.3740612920756519e+02 9.9999999999999986e+01 -5.3740612920756528e+00 -1.6808512895569752e+01 1.1434451603494098e+01\n", + " 397 9.9976883603800871e+01 9.9914658235784316e+01 -2.4825173752755876e+00 -5.3655476002317107e+02 9.9999999999999986e+01 -5.3655476002317117e+00 -1.6813034686080940e+01 1.1447487085849229e+01\n", + " 398 1.0000471020071220e+02 1.0001041624862805e+02 -2.4928453037407845e+00 -5.3667844797907435e+02 1.0000000000000000e+02 -5.3667844797907440e+00 -1.6809360275897461e+01 1.1442575796106716e+01\n", + " 399 9.9965549831098798e+01 9.9917191087705049e+01 -2.4753756527422599e+00 -5.3615435574170317e+02 1.0000000000000001e+02 -5.3615435574170309e+00 -1.6810254514612446e+01 1.1448710957195415e+01\n", + " 400 1.0000088946775675e+02 9.9984393640461974e+01 -2.4786361623407731e+00 -5.3643194739150465e+02 1.0000000000000000e+02 -5.3643194739150468e+00 -1.6807873252054360e+01 1.1443553778139314e+01\n", + "# Reblock based on autocorrelation time\n", + "nsamples, tac = 2, 0.0\n", + "nsamples, tac = 5, 0.06030527329960722\n", + "nsamples, tac = 10, 0.1866211266811364\n", + "nsamples, tac = 21, 1.8346308527135862\n", + "nsamples, tac = 43, 2.4045455125234874\n", + "nsamples, tac = 87, 5.404683504019605\n", + "nsamples, tac = 175, 5.786482775276736\n", + "nsamples, tac = 351, 5.463382431375136\n", + "ETotal_ac,ETotal_error_ac,ETotal_nsamp_ac,ac\n", + "-5.377138918577865,0.0013808392047723354,58,6\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/ankitmahajan/softwares/ipie/ipie/analysis/autocorr.py:92: FutureWarning: The behavior of `series[i:j]` with an integer-dtype index is deprecated. In a future version, this will be treated as *label-based* indexing, consistent with e.g. `series[i]` lookups. To retain the old behavior, use `series.iloc[i:j]`. To get the future behavior, use `series.loc[i:j]`.\n", + " tacs += [autocorr_gw2010(y[:n])]\n", + "/Users/ankitmahajan/softwares/ipie/ipie/analysis/autocorr.py:107: FutureWarning: The behavior of `series[i:j]` with an integer-dtype index is deprecated. In a future version, this will be treated as *label-based* indexing, consistent with e.g. `series[i]` lookups. To retain the old behavior, use `series.iloc[i:j]`. To get the future behavior, use `series.loc[i:j]`.\n", + " yblocked += [numpy.mean(y[offset : offset + block_size])]\n", + "/Users/ankitmahajan/softwares/ipie/ipie/analysis/autocorr.py:105: FutureWarning: The behavior of `series[i:j]` with an integer-dtype index is deprecated. In a future version, this will be treated as *label-based* indexing, consistent with e.g. `series[i]` lookups. To retain the old behavior, use `series.iloc[i:j]`. To get the future behavior, use `series.loc[i:j]`.\n", + " yblocked += [numpy.mean(y[offset:])]\n" + ] + } + ], + "source": [ + "from ipie.qmc.calc import build_afqmc_driver\n", + "from ipie.config import MPI\n", + "from ipie.utils.from_pyscf import gen_ipie_input_from_pyscf_chk\n", + "\n", + "comm = MPI.COMM_WORLD\n", + "\n", + "gen_ipie_input_from_pyscf_chk(mf.chkfile, verbose=0)\n", + "\n", + "# fixing random seed for reproducibility\n", + "afqmc = build_afqmc_driver(comm, nelec=mol.nelec, num_walkers_per_task=100, seed=41100801)\n", + "if comm.rank == 0:\n", + " print(afqmc.params) # Inspect the default qmc options\n", + "\n", + "# Let us override the number of blocks to keep it short\n", + "afqmc.params.num_blocks = 400\n", + "afqmc.run()\n", + "\n", + "if comm.rank == 0:\n", + " # We can extract the qmc data as as a pandas data frame like so\n", + " from ipie.analysis.extraction import extract_observable\n", + "\n", + " qmc_data = extract_observable(afqmc.estimators.filename, \"energy\")\n", + " y = qmc_data[\"ETotal\"]\n", + " y = y[50:] # discard first 50 blocks\n", + "\n", + " from ipie.analysis.autocorr import reblock_by_autocorr\n", + "\n", + " df = reblock_by_autocorr(y, verbose=1)\n", + " print(df.to_csv(index=False))\n", + " # assert np.isclose(df.at[0,'ETotal_ac'], -5.325611614468466)\n", + " # assert np.isclose(df.at[0,'ETotal_error_ac'], 0.00938082351500978)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/13-free_projection/run_afqmc.py b/examples/13-free_projection/run_afqmc.py index 93d8ab5a..a686302c 100644 --- a/examples/13-free_projection/run_afqmc.py +++ b/examples/13-free_projection/run_afqmc.py @@ -21,21 +21,20 @@ gen_ipie_input_from_pyscf_chk(mf.chkfile, verbose=0) comm.barrier() -from ipie.qmc.calc import build_afqmc_driver +from ipie.qmc.calc import build_fpafqmc_driver qmc_options = { - "free_projection": True, - "num_iterations_fp": 10, + "num_iterations_fp": 100, "num_blocks": 5, "num_steps": 20, + "num_walkers": 10, "dt": 0.05, } -afqmc = build_afqmc_driver( +afqmc = build_fpafqmc_driver( comm, nelec=mol.nelec, - num_walkers_per_task=100, seed=41100801, - extra_qmc_options=qmc_options, + qmc_options=qmc_options, ) if comm.rank == 0: print(afqmc.params) # Inspect the default qmc options @@ -43,7 +42,7 @@ # analysis if comm.rank == 0: - from ipie.analysis.blocking import block_ratios + from ipie.analysis.blocking import jackknife_ratios from ipie.analysis.extraction import extract_observable for i in range(afqmc.params.num_blocks): @@ -51,4 +50,4 @@ f"\nEnergy statistics at time {(i+1) * afqmc.params.num_steps_per_block * afqmc.params.timestep}:" ) qmc_data = extract_observable(afqmc.estimators[i].filename, "energy", complexQ=True) - block_ratios(qmc_data["ENumer"], qmc_data["EDenom"]) + jackknife_ratios(qmc_data["ENumer"], qmc_data["EDenom"]) From cbb7562a339b7f3006be93a8a9b2b10b6d9265a8 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Fri, 23 Feb 2024 00:40:45 -0500 Subject: [PATCH 06/11] fixed lint error --- ipie/qmc/calc.py | 2 -- ipie/qmc/options.py | 1 - 2 files changed, 3 deletions(-) diff --git a/ipie/qmc/calc.py b/ipie/qmc/calc.py index 9665c773..69a6a7c5 100644 --- a/ipie/qmc/calc.py +++ b/ipie/qmc/calc.py @@ -184,8 +184,6 @@ def build_fpafqmc_driver( seed: int = None, qmc_options: dict = None, ): - if comm.rank != 0: - verbosity = 0 options = { "system": {"nup": nelec[0], "ndown": nelec[1]}, "qmc": {"rng_seed": seed}, diff --git a/ipie/qmc/options.py b/ipie/qmc/options.py index 2934c6df..0a49a818 100644 --- a/ipie/qmc/options.py +++ b/ipie/qmc/options.py @@ -172,7 +172,6 @@ class QMCParams: pop_control_freq: Frequency at which population control occurs. rng_seed: The random number seed. If run in parallel the seeds on other cores / threads are determined from this. - num_iterations_fp: Number of free projection iterations per task. """ num_walkers: int From 7ae4c77a24815cc472c2768e867078679dc1c561 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Fri, 23 Feb 2024 00:41:09 -0500 Subject: [PATCH 07/11] fixed example --- examples/13-free_projection/run_afqmc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/13-free_projection/run_afqmc.py b/examples/13-free_projection/run_afqmc.py index a686302c..29688944 100644 --- a/examples/13-free_projection/run_afqmc.py +++ b/examples/13-free_projection/run_afqmc.py @@ -43,11 +43,11 @@ # analysis if comm.rank == 0: from ipie.analysis.blocking import jackknife_ratios - from ipie.analysis.extraction import extract_observable + from ipie.analysis.extraction import extract_observable_complex for i in range(afqmc.params.num_blocks): print( f"\nEnergy statistics at time {(i+1) * afqmc.params.num_steps_per_block * afqmc.params.timestep}:" ) - qmc_data = extract_observable(afqmc.estimators[i].filename, "energy", complexQ=True) + qmc_data = extract_observable_complex(afqmc.estimators[i].filename, "energy") jackknife_ratios(qmc_data["ENumer"], qmc_data["EDenom"]) From 51f51fa0605dc61eb565c73380875f4bfe3efeaf Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Tue, 5 Mar 2024 16:44:41 -0500 Subject: [PATCH 08/11] formatting --- ipie/estimators/estimator_base.py | 10 ++++------ ipie/estimators/generic.py | 4 +--- ipie/trial_wavefunction/noci.py | 3 +-- ipie/trial_wavefunction/wavefunction_base.py | 12 ++++-------- ipie/utils/from_dice.py | 1 + ipie/walkers/pop_controller.py | 14 +++++--------- 6 files changed, 16 insertions(+), 28 deletions(-) diff --git a/ipie/estimators/estimator_base.py b/ipie/estimators/estimator_base.py index c78c9322..13a9e12c 100644 --- a/ipie/estimators/estimator_base.py +++ b/ipie/estimators/estimator_base.py @@ -15,13 +15,13 @@ # Author: Fionn Malone # -from abc import abstractmethod, ABCMeta +from abc import ABCMeta, abstractmethod import numpy as np -from ipie.utils.io import format_fixed_width_strings, format_fixed_width_floats from ipie.utils.backend import arraylib as xp from ipie.utils.backend import to_host +from ipie.utils.io import format_fixed_width_floats, format_fixed_width_strings class EstimatorBase(metaclass=ABCMeta): @@ -89,8 +89,7 @@ def shape(self, shape) -> tuple: self._shape = shape @abstractmethod - def compute_estimator(self, system, walkers, hamiltonian, trial) -> np.ndarray: - ... + def compute_estimator(self, system, walkers, hamiltonian, trial) -> np.ndarray: ... @property def names(self): @@ -142,5 +141,4 @@ def zero(self): else: self._data[k] = 0.0j - def post_reduce_hook(self, data) -> None: - ... + def post_reduce_hook(self, data) -> None: ... diff --git a/ipie/estimators/generic.py b/ipie/estimators/generic.py index 6f69d085..469abc3c 100644 --- a/ipie/estimators/generic.py +++ b/ipie/estimators/generic.py @@ -33,9 +33,7 @@ def local_energy_generic_opt(system, G, Ghalf=None, eri=None): assert eri is not None vipjq_aa = eri[0, : na**2 * M**2].reshape((na, M, na, M)) - vipjq_bb = eri[0, na**2 * M**2 : na**2 * M**2 + nb**2 * M**2].reshape( - (nb, M, nb, M) - ) + vipjq_bb = eri[0, na**2 * M**2 : na**2 * M**2 + nb**2 * M**2].reshape((nb, M, nb, M)) vipjq_ab = eri[0, na**2 * M**2 + nb**2 * M**2 :].reshape((na, M, nb, M)) Ga, Gb = Ghalf[0], Ghalf[1] diff --git a/ipie/trial_wavefunction/noci.py b/ipie/trial_wavefunction/noci.py index b369fef6..c18c91d1 100644 --- a/ipie/trial_wavefunction/noci.py +++ b/ipie/trial_wavefunction/noci.py @@ -31,8 +31,7 @@ def __init__(self, wavefunction, num_elec, num_basis, verbose=False): self.psib = self.psi[:, :, self.nalpha :] self.G = self.build_one_rdm() - def build(self) -> None: - ... + def build(self) -> None: ... def calculate_energy(self, system, hamiltonian): return variational_energy_noci(system, hamiltonian, self) diff --git a/ipie/trial_wavefunction/wavefunction_base.py b/ipie/trial_wavefunction/wavefunction_base.py index c8779559..fcc9eb49 100644 --- a/ipie/trial_wavefunction/wavefunction_base.py +++ b/ipie/trial_wavefunction/wavefunction_base.py @@ -46,8 +46,7 @@ def cast_to_cupy(self, verbose=False): cast_to_device(self, verbose=verbose) @abstractmethod - def build(self) -> None: - ... + def build(self) -> None: ... @property def num_dets(self) -> int: @@ -71,16 +70,13 @@ def half_rotated(self, is_half_rotated) -> None: self._half_rotated = is_half_rotated @abstractmethod - def half_rotate(self, hamiltonian, comm: Optional[CommType] = MPI.COMM_WORLD) -> None: - ... + def half_rotate(self, hamiltonian, comm: Optional[CommType] = MPI.COMM_WORLD) -> None: ... @abstractmethod - def calc_overlap(self, walkers) -> np.ndarray: - ... + def calc_overlap(self, walkers) -> np.ndarray: ... @abstractmethod - def calc_greens_function(self, walkers) -> np.ndarray: - ... + def calc_greens_function(self, walkers) -> np.ndarray: ... @abstractmethod def calc_force_bias(self, hamiltonian, walkers, mpi_handler) -> np.ndarray: diff --git a/ipie/utils/from_dice.py b/ipie/utils/from_dice.py index 433ee501..566bc0ef 100644 --- a/ipie/utils/from_dice.py +++ b/ipie/utils/from_dice.py @@ -1,4 +1,5 @@ """Utilities for runnning dice through the shciscf plugin.""" + import glob import os import struct diff --git a/ipie/walkers/pop_controller.py b/ipie/walkers/pop_controller.py index cb519852..de9cf8ef 100644 --- a/ipie/walkers/pop_controller.py +++ b/ipie/walkers/pop_controller.py @@ -341,17 +341,13 @@ def pair_branch(walkers, comm, max_weight, min_weight, timer=PopControllerTimer( # Rescale weights. glob_inf = numpy.zeros((walkers.nwalkers * comm.size, 4), dtype=numpy.float64) glob_inf[:, 0] = glob_inf_0.ravel() # contains walker |w_i| - glob_inf[ - :, 1 - ] = glob_inf_1.ravel() # all initialized to 1 when it becomes 2 then it will be "branched" - glob_inf[ - :, 2 - ] = ( + glob_inf[:, 1] = ( + glob_inf_1.ravel() + ) # all initialized to 1 when it becomes 2 then it will be "branched" + glob_inf[:, 2] = ( glob_inf_2.ravel() ) # contain processor+walker indices (initial) (i.e., where walkers live) - glob_inf[ - :, 3 - ] = ( + glob_inf[:, 3] = ( glob_inf_3.ravel() ) # contain processor+walker indices (final) (i.e., where walkers live) sort = numpy.argsort(glob_inf[:, 0], kind="mergesort") From 0076a55c7d7bdf18c1b0a527ee709ebaff095857 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Tue, 5 Mar 2024 18:56:11 -0500 Subject: [PATCH 09/11] moved free projection to addons --- examples/13-free_projection/fp_afqmc.ipynb | 73 ++++---- examples/13-free_projection/run_afqmc.py | 11 +- ipie/addons/free_projection/__init__.py | 17 ++ .../free_projection/analysis/__init__.py | 17 ++ .../free_projection/analysis/extraction.py | 65 +++++++ .../free_projection/analysis/jackknife.py | 52 ++++++ .../analysis/tests/__init__.py | 17 ++ .../analysis/tests/test_jackknife.py | 36 ++++ .../free_projection/estimators/__init__.py | 17 ++ .../free_projection/estimators/energy.py | 42 +++++ .../free_projection/estimators/handler.py | 135 +++++++++++++++ .../estimators/tests/__init__.py | 17 ++ .../estimators/tests/test_estimators.py | 77 +++++++++ .../free_projection/propagation/__init__.py | 17 ++ .../propagation/free_propagation.py | 0 .../propagation/tests/__init__.py | 17 ++ .../propagation/tests/test_generic.py | 70 ++++++++ ipie/addons/free_projection/qmc/__init__.py | 17 ++ ipie/addons/free_projection/qmc/calc.py | 160 ++++++++++++++++++ .../free_projection}/qmc/fp_afqmc.py | 12 +- ipie/addons/free_projection/qmc/options.py | 26 +++ .../free_projection/qmc/tests/__init__.py | 17 ++ .../qmc/tests/test_afqmc_single_det_batch.py | 98 +++++++++++ ipie/addons/free_projection/utils/__init__.py | 17 ++ ipie/addons/free_projection/utils/testing.py | 155 +++++++++++++++++ .../free_projection/walkers/__init__.py | 17 ++ .../free_projection/walkers/tests/__init__.py | 17 ++ .../walkers/tests/test_single_det_uhf.py | 51 ++++++ .../free_projection/walkers/uhf_walkers.py | 82 +++++++++ ipie/analysis/blocking.py | 34 ---- ipie/analysis/extraction.py | 43 ----- ipie/estimators/energy.py | 32 ---- ipie/estimators/handler.py | 106 +----------- ipie/estimators/tests/test_estimators.py | 54 +----- ipie/propagation/tests/test_generic.py | 44 ----- ipie/qmc/calc.py | 132 +-------------- ipie/qmc/options.py | 5 - ipie/qmc/tests/test_afqmc_single_det_batch.py | 50 +----- ipie/utils/testing.py | 128 +------------- ipie/walkers/tests/test_single_det_uhf.py | 28 +-- ipie/walkers/uhf_walkers.py | 60 ------- 41 files changed, 1312 insertions(+), 753 deletions(-) create mode 100644 ipie/addons/free_projection/__init__.py create mode 100644 ipie/addons/free_projection/analysis/__init__.py create mode 100755 ipie/addons/free_projection/analysis/extraction.py create mode 100755 ipie/addons/free_projection/analysis/jackknife.py create mode 100644 ipie/addons/free_projection/analysis/tests/__init__.py create mode 100644 ipie/addons/free_projection/analysis/tests/test_jackknife.py create mode 100644 ipie/addons/free_projection/estimators/__init__.py create mode 100644 ipie/addons/free_projection/estimators/energy.py create mode 100644 ipie/addons/free_projection/estimators/handler.py create mode 100644 ipie/addons/free_projection/estimators/tests/__init__.py create mode 100644 ipie/addons/free_projection/estimators/tests/test_estimators.py create mode 100644 ipie/addons/free_projection/propagation/__init__.py rename ipie/{ => addons/free_projection}/propagation/free_propagation.py (100%) create mode 100644 ipie/addons/free_projection/propagation/tests/__init__.py create mode 100644 ipie/addons/free_projection/propagation/tests/test_generic.py create mode 100644 ipie/addons/free_projection/qmc/__init__.py create mode 100644 ipie/addons/free_projection/qmc/calc.py rename ipie/{ => addons/free_projection}/qmc/fp_afqmc.py (96%) create mode 100644 ipie/addons/free_projection/qmc/options.py create mode 100644 ipie/addons/free_projection/qmc/tests/__init__.py create mode 100644 ipie/addons/free_projection/qmc/tests/test_afqmc_single_det_batch.py create mode 100644 ipie/addons/free_projection/utils/__init__.py create mode 100644 ipie/addons/free_projection/utils/testing.py create mode 100644 ipie/addons/free_projection/walkers/__init__.py create mode 100644 ipie/addons/free_projection/walkers/tests/__init__.py create mode 100644 ipie/addons/free_projection/walkers/tests/test_single_det_uhf.py create mode 100644 ipie/addons/free_projection/walkers/uhf_walkers.py diff --git a/examples/13-free_projection/fp_afqmc.ipynb b/examples/13-free_projection/fp_afqmc.ipynb index 0b29dcf7..4d05b5a7 100644 --- a/examples/13-free_projection/fp_afqmc.ipynb +++ b/examples/13-free_projection/fp_afqmc.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -40,7 +40,21 @@ ".SecondOrderUHF'> wavefunction is stable in the internal stability analysis\n", ".SecondOrderUHF'> wavefunction is stable in the real -> complex stability analysis\n", ".SecondOrderUHF'> wavefunction is stable in the UHF/UKS -> GHF/GKS stability analysis\n", - "converged SCF energy = -5.25628158758202 = 3.0198066e-14 2S+1 = 1\n", + "converged SCF energy = -5.25628158758202 = 3.0198066e-14 2S+1 = 1\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/pyscf/dft/libxc.py:772: UserWarning: Since PySCF-2.3, B3LYP (and B3P86) are changed to the VWN-RPA variant, the same to the B3LYP functional in Gaussian and ORCA (issue 1480). To restore the VWN5 definition, you can put the setting \"B3LYP_WITH_VWN5 = True\" in pyscf_conf.py\n", + " warnings.warn('Since PySCF-2.3, B3LYP (and B3P86) are changed to the VWN-RPA variant, '\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "FCI energy: -5.3843610660956\n" ] } @@ -87,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -102,8 +116,8 @@ "# Setting integrals to hamiltonian.h5.\n", "# Note: symmetry not specified. Setting to default value of True.\n", "# Have shared memory: True\n", - "# Time to read integrals: 0.001281\n", - "# Time to pack Cholesky vectors: 0.000158\n", + "# Time to read integrals: 0.002338\n", + "# Time to pack Cholesky vectors: 0.000175\n", "# Number of orbitals: 10\n", "# Approximate memory required by Cholesky vectors 0.000020 GB\n", "# Approximate memory required by packed Cholesky vectors 0.000011 GB\n", @@ -113,24 +127,14 @@ "# Finished setting up GenericRealChol object.\n", "# random seed is 212503\n", "# ipie version: 0.7.1.dev0\n", - "# Git hash: e4163010b903af9fcab8f8f4180e4b1d18c7a46d-dirty.\n", + "# Git hash: 743ca0f2a8dc97c96be4811c68904374b324d4ef.\n", "# Git branch: develop.\n", "# Found uncommitted changes and/or untracked files.\n", - "# Modified : ipie/analysis/blocking.py\n", - "# Modified : ipie/analysis/extraction.py\n", - "# Modified : ipie/propagation/free_propagation.py\n", - "# Modified : ipie/propagation/tests/test_generic.py\n", - "# Modified : ipie/qmc/calc.py\n", - "# Modified : ipie/qmc/options.py\n", - "# Modified : ipie/qmc/tests/test_afqmc_single_det_batch.py\n", - "# Modified : ipie/utils/testing.py\n", - "# Modified : ipie/walkers/base_walkers.py\n", - "# Modified : ipie/walkers/tests/test_single_det_uhf.py\n", - "# Modified : ipie/walkers/uhf_walkers.py\n", - "# Calculation uuid: 20ad8f3a-d12e-11ee-a4b0-f678500c90cd.\n", + "# Untracked : ipie/addons/free_projection/\n", + "# Calculation uuid: 8da74bd6-db46-11ee-aeee-f678500c90cd.\n", "# Approximate memory available per node: 16.0000 GB.\n", "# Running on 1 MPI rank.\n", - "# Root processor name: MacBook-Air-500\n", + "# Root processor name: MacBook-Air-500.local\n", "# Python interpreter: 3.11.5 (main, Sep 11 2023, 08:19:27) [Clang 14.0.6 ]\n", "# Using numpy v1.25.2 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/numpy.\n", "# - BLAS lib: openblas64_ openblas64_\n", @@ -557,32 +561,23 @@ " 3 -7.5339057517761898e+02 1.4102817860161360e+02 -5.3423012949799356e+00 -1.6809608008219218e+01 1.1467306713239285e+01\n", "\n", "Energy statistics at time 1.5:\n", - "Complex mean: -5.36446553e+00-3.19970989e-04j\n", - "Mean: -5.36446560e+00\n", - "Stochastic error: 1.09498852e-03\n", + " Energy: -5.36446560e+00+0.00000000e+00j +- 1.09498852e-03\n", "\n", "Energy statistics at time 3.0:\n", - "Complex mean: -5.38121091e+00-3.12655951e-04j\n", - "Mean: -5.38121105e+00\n", - "Stochastic error: 1.58990178e-03\n", + " Energy: -5.38121105e+00+0.00000000e+00j +- 1.58990178e-03\n", "\n", "Energy statistics at time 4.5:\n", - "Complex mean: -5.38156710e+00-1.67885050e-03j\n", - "Mean: -5.38156727e+00\n", - "Stochastic error: 1.64655610e-03\n", + " Energy: -5.38156727e+00+0.00000000e+00j +- 1.64655610e-03\n", "\n", "Energy statistics at time 6.0:\n", - "Complex mean: -5.38297835e+00-1.23799215e-03j\n", - "Mean: -5.38297860e+00\n", - "Stochastic error: 2.04412838e-03\n" + " Energy: -5.38297860e+00+0.00000000e+00j +- 2.04412838e-03\n" ] } ], "source": [ - "from ipie.qmc.calc import build_fpafqmc_driver\n", + "from ipie.addons.free_projection.qmc.calc import build_fpafqmc_driver\n", "from ipie.config import MPI\n", "from ipie.utils.from_pyscf import gen_ipie_input_from_pyscf_chk\n", - "from ipie.analysis.blocking import jackknife_ratios\n", "\n", "comm = MPI.COMM_WORLD\n", "\n", @@ -603,14 +598,16 @@ "afqmc.run()\n", "\n", "# analysis\n", - "from ipie.analysis.extraction import extract_observable_complex\n", + "from ipie.addons.free_projection.analysis.extraction import extract_observable\n", + "from ipie.addons.free_projection.analysis.jackknife import jackknife_ratios\n", "\n", "for i in range(afqmc.params.num_blocks):\n", " print(\n", " f\"\\nEnergy statistics at time {(i+1) * afqmc.params.num_steps_per_block * afqmc.params.timestep}:\"\n", " )\n", - " qmc_data = extract_observable_complex(afqmc.estimators[i].filename, \"energy\")\n", - " jackknife_ratios(qmc_data[\"ENumer\"], qmc_data[\"EDenom\"])" + " qmc_data = extract_observable(afqmc.estimators[i].filename, \"energy\")\n", + " mean_energy, energy_err = jackknife_ratios(qmc_data[\"ENumer\"], qmc_data[\"EDenom\"])\n", + " print(f\" Energy: {mean_energy:.8e} +- {energy_err:.8e}\")" ] }, { diff --git a/examples/13-free_projection/run_afqmc.py b/examples/13-free_projection/run_afqmc.py index 29688944..e27e0781 100644 --- a/examples/13-free_projection/run_afqmc.py +++ b/examples/13-free_projection/run_afqmc.py @@ -21,7 +21,7 @@ gen_ipie_input_from_pyscf_chk(mf.chkfile, verbose=0) comm.barrier() -from ipie.qmc.calc import build_fpafqmc_driver +from ipie.addons.free_projection.qmc.calc import build_fpafqmc_driver qmc_options = { "num_iterations_fp": 100, @@ -42,12 +42,13 @@ # analysis if comm.rank == 0: - from ipie.analysis.blocking import jackknife_ratios - from ipie.analysis.extraction import extract_observable_complex + from ipie.addons.free_projection.analysis.extraction import extract_observable + from ipie.addons.free_projection.analysis.jackknife import jackknife_ratios for i in range(afqmc.params.num_blocks): print( f"\nEnergy statistics at time {(i+1) * afqmc.params.num_steps_per_block * afqmc.params.timestep}:" ) - qmc_data = extract_observable_complex(afqmc.estimators[i].filename, "energy") - jackknife_ratios(qmc_data["ENumer"], qmc_data["EDenom"]) + qmc_data = extract_observable(afqmc.estimators[i].filename, "energy") + energy_mean, energy_err = jackknife_ratios(qmc_data["ENumer"], qmc_data["EDenom"]) + print(f"Energy: {energy_mean:.8e} +/- {energy_err:.8e}") diff --git a/ipie/addons/free_projection/__init__.py b/ipie/addons/free_projection/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/analysis/__init__.py b/ipie/addons/free_projection/analysis/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/analysis/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/analysis/extraction.py b/ipie/addons/free_projection/analysis/extraction.py new file mode 100755 index 00000000..8292de0e --- /dev/null +++ b/ipie/addons/free_projection/analysis/extraction.py @@ -0,0 +1,65 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + + +import h5py +import numpy +import pandas as pd + + +def extract_hdf5_data(filename, block_idx=1): + shapes = {} + with h5py.File(filename, "r") as fh5: + keys = fh5[f"block_size_{block_idx}/data/"].keys() + shape_keys = fh5[f"block_size_{block_idx}/shape/"].keys() + data = numpy.concatenate([fh5[f"block_size_{block_idx}/data/{d}"][:] for d in keys]) + for k in shape_keys: + shapes[k] = { + "names": fh5[f"block_size_{block_idx}/names/{k}"][()], + "shape": fh5[f"block_size_{block_idx}/shape/{k}"][:], + "offset": fh5[f"block_size_{block_idx}/offset/{k}"][()], + "size": fh5[f"block_size_{block_idx}/size/{k}"][()], + "scalar": bool(fh5[f"block_size_{block_idx}/scalar/{k}"][()]), + "num_walker_props": fh5[f"block_size_{block_idx}/num_walker_props"][()], + "walker_header": fh5[f"block_size_{block_idx}/walker_prop_header"][()], + } + size_keys = fh5[f"block_size_{block_idx}/max_block"].keys() + max_block = sum(fh5[f"block_size_{block_idx}/max_block/{d}"][()] for d in size_keys) + + return data[: max_block + 1], shapes + + +def extract_observable(filename, name="energy", block_idx=1): + data, info = extract_hdf5_data(filename, block_idx=block_idx) + obs_info = info.get(name) + if obs_info is None: + raise RuntimeError(f"Unknown value for name={name}") + obs_slice = slice(obs_info["offset"], obs_info["offset"] + obs_info["size"]) + if obs_info["scalar"]: + obs_data = data[:, obs_slice].reshape((-1,) + tuple(obs_info["shape"])) + nwalk_prop = obs_info["num_walker_props"] + weight_data = data[:, :nwalk_prop].reshape((-1, nwalk_prop)) + results = pd.DataFrame(numpy.hstack([weight_data, obs_data])) + header = list(obs_info["walker_header"]) + obs_info["names"].split() + results.columns = [n.decode("utf-8") for n in header] + return results + else: + obs_data = data[:, obs_slice] + nsamp = data.shape[0] + walker_averaged = obs_data[:, :-1] / obs_data[:, -1].reshape((nsamp, -1)) + return walker_averaged.reshape((nsamp,) + tuple(obs_info["shape"])) diff --git a/ipie/addons/free_projection/analysis/jackknife.py b/ipie/addons/free_projection/analysis/jackknife.py new file mode 100755 index 00000000..359e58f9 --- /dev/null +++ b/ipie/addons/free_projection/analysis/jackknife.py @@ -0,0 +1,52 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +#!/usr/bin/env python + +import numpy + + +def jackknife_ratios(num: numpy.ndarray, denom: numpy.ndarray): + r"""Jackknife estimation of standard deviation of the ratio of means. + + Parameters + ---------- + num : :class:`np.ndarray + Numerator samples. + denom : :class:`np.ndarray` + Denominator samples. + + Returns + ------- + mean : :class:`np.ndarray` + Ratio of means. + sigma : :class:`np.ndarray` + Standard deviation of the ratio of means. + """ + n_samples = num.size + num_mean = numpy.mean(num) + denom_mean = numpy.mean(denom) + mean = num_mean / denom_mean + jackknife_estimates = numpy.zeros(n_samples, dtype=num.dtype) + for i in range(n_samples): + mean_num_i = (num_mean * n_samples - num[i]) / (n_samples - 1) + mean_denom_i = (denom_mean * n_samples - denom[i]) / (n_samples - 1) + jackknife_estimates[i] = (mean_num_i / mean_denom_i).real + mean = numpy.mean(jackknife_estimates) + sigma = numpy.sqrt((n_samples - 1) * numpy.var(jackknife_estimates)) + return mean, sigma diff --git a/ipie/addons/free_projection/analysis/tests/__init__.py b/ipie/addons/free_projection/analysis/tests/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/analysis/tests/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/analysis/tests/test_jackknife.py b/ipie/addons/free_projection/analysis/tests/test_jackknife.py new file mode 100644 index 00000000..bbb454e7 --- /dev/null +++ b/ipie/addons/free_projection/analysis/tests/test_jackknife.py @@ -0,0 +1,36 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +import numpy +import pytest + +from ipie.addons.free_projection.analysis.jackknife import jackknife_ratios + + +@pytest.mark.unit +def test_jackknife_ratios(): + numpy.random.seed(0) + num = numpy.random.randn(100) + 0.0j + denom = numpy.ones(100) + mean, sigma = jackknife_ratios(num, denom) + assert numpy.isclose(mean, num.sum() / denom.sum()) + assert numpy.isclose(sigma, 0.1, atol=0.01) + + +if __name__ == "__main__": + test_jackknife_ratios() diff --git a/ipie/addons/free_projection/estimators/__init__.py b/ipie/addons/free_projection/estimators/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/estimators/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/estimators/energy.py b/ipie/addons/free_projection/estimators/energy.py new file mode 100644 index 00000000..bd434374 --- /dev/null +++ b/ipie/addons/free_projection/estimators/energy.py @@ -0,0 +1,42 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: Fionn Malone +# + + +from ipie.estimators.energy import EnergyEstimator, local_energy +from ipie.utils.backend import arraylib as xp + + +class EnergyEstimatorFP(EnergyEstimator): + def __init__( + self, + system=None, + ham=None, + trial=None, + filename=None, + ): + super().__init__(system, ham, trial, filename) + + def compute_estimator(self, system, walkers, hamiltonian, trial, istep=1): + trial.calc_greens_function(walkers) + # Need to be able to dispatch here + energy = local_energy(system, hamiltonian, walkers, trial) + self._data["ENumer"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 0]) + self._data["EDenom"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp) + self._data["E1Body"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 1]) + self._data["E2Body"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 2]) + + return self.data diff --git a/ipie/addons/free_projection/estimators/handler.py b/ipie/addons/free_projection/estimators/handler.py new file mode 100644 index 00000000..be821505 --- /dev/null +++ b/ipie/addons/free_projection/estimators/handler.py @@ -0,0 +1,135 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +"""Routines and classes for estimation of observables.""" + +from __future__ import print_function + +from typing import Tuple, Union + +import h5py +import numpy + +from ipie.addons.free_projection.estimators.energy import EnergyEstimatorFP +from ipie.config import MPI +from ipie.estimators.handler import EstimatorHandler +from ipie.estimators.utils import H5EstimatorHelper + + +class EstimatorHandlerFP(EstimatorHandler): + def __init__( + self, + comm, + system, + hamiltonian, + trial, + walker_state=None, + verbose: bool = False, + filename: Union[str, None] = None, + block_size: int = 1, + basename: str = "estimates", + overwrite=True, + observables: Tuple[str] = ("energy",), # TODO: Use factory method! + index: int = 0, + ): + super().__init__( + comm, + system, + hamiltonian, + trial, + walker_state, + verbose, + filename, + block_size, + basename, + overwrite, + observables, + index, + ) + self["energy"] = EnergyEstimatorFP( + system=system, + ham=hamiltonian, + trial=trial, + ) + + def initialize(self, comm, print_header=True): + self.local_estimates = numpy.zeros( + (self.size + self.num_walker_props), dtype=numpy.complex128 + ) + self.global_estimates = numpy.zeros( + (self.size + self.num_walker_props), dtype=numpy.complex128 + ) + header = f"{'Iter':>17s} {'TimeStep':>10s} " + for k, e in self.items(): + if e.print_to_stdout: + header += e.header_to_text + if comm.rank == 0: + with h5py.File(self.filename, "w") as fh5: + pass + self.dump_metadata() + self.output = H5EstimatorHelper( + self.filename, + base="block_size_1", + chunk_size=self.buffer_size, + shape=(self.size + self.num_walker_props,), + ) + if comm.rank == 0: + with h5py.File(self.filename, "r+") as fh5: + fh5["block_size_1/num_walker_props"] = self.num_walker_props + fh5["block_size_1/walker_prop_header"] = self.walker_header + for k, o in self.items(): + fh5[f"block_size_1/shape/{k}"] = o.shape + fh5[f"block_size_1/size/{k}"] = o.size + fh5[f"block_size_1/scalar/{k}"] = int(o.scalar_estimator) + fh5[f"block_size_1/names/{k}"] = " ".join(name for name in o.names) + fh5[f"block_size_1/offset/{k}"] = self.num_walker_props + self.get_offset(k) + if comm.rank == 0 and print_header: + print(header) + + def print_block(self, comm, block, walker_factors, div_factor=None, time_step=0): + self.local_estimates[: walker_factors.size] = walker_factors.buffer + comm.Reduce(self.local_estimates, self.global_estimates, op=MPI.SUM) + output_string = " " + # Get walker data. + offset = walker_factors.size + for k, e in self.items(): + if comm.rank == 0: + start = offset + self.get_offset(k) + end = start + int(self[k].size) + est_data = self.global_estimates[start:end] + e.post_reduce_hook(est_data) + est_string = e.data_to_text(est_data) + e.to_ascii_file(est_string) + if e.print_to_stdout: + output_string += est_string + if comm.rank == 0: + shift = self.global_estimates[walker_factors.get_index("HybridEnergy")] + + else: + shift = None + walker_factors.eshift = comm.bcast(shift) + if comm.rank == 0: + self.output.push_to_chunk(self.global_estimates, f"data") + self.output.increment() + if comm.rank == 0: + if time_step == 0: + print(f"{block:>17d} {time_step:>10d}" + output_string) + else: + blank = "" + print(f"{blank:>17s} {time_step:>10d}" + output_string) + self.zero() diff --git a/ipie/addons/free_projection/estimators/tests/__init__.py b/ipie/addons/free_projection/estimators/tests/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/estimators/tests/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/estimators/tests/test_estimators.py b/ipie/addons/free_projection/estimators/tests/test_estimators.py new file mode 100644 index 00000000..ec130a0e --- /dev/null +++ b/ipie/addons/free_projection/estimators/tests/test_estimators.py @@ -0,0 +1,77 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: Fionn Malone +# + +import tempfile + +import pytest + +from ipie.addons.free_projection.estimators.energy import EnergyEstimatorFP +from ipie.addons.free_projection.estimators.handler import EstimatorHandlerFP +from ipie.utils.testing import gen_random_test_instances + + +@pytest.mark.unit +def test_energy_fp_estimator(): + nmo = 10 + nocc = 8 + naux = 30 + nwalker = 10 + system, ham, walker_batch, trial = gen_random_test_instances(nmo, nocc, naux, nwalker) + estim = EnergyEstimatorFP(system=system, ham=ham, trial=trial) + estim.compute_estimator(system, walker_batch, ham, trial) + assert len(estim.names) == 5 + tmp = estim.data.copy() + estim.post_reduce_hook(tmp) + assert estim.print_to_stdout + assert estim.ascii_filename == None + assert estim.shape == (5,) + data_to_text = estim.data_to_text(tmp) + assert len(data_to_text.split()) == 5 + + +@pytest.mark.unit +def test_estimator_handler_fp(): + with tempfile.NamedTemporaryFile() as tmp1, tempfile.NamedTemporaryFile() as tmp2: + nmo = 10 + nocc = 8 + naux = 30 + nwalker = 10 + system, ham, walker_batch, trial = gen_random_test_instances(nmo, nocc, naux, nwalker) + estim = EnergyEstimatorFP(system=system, ham=ham, trial=trial, filename=tmp1.name) + estim.print_to_stdout = False + from ipie.config import MPI + + comm = MPI.COMM_WORLD + handler = EstimatorHandlerFP( + comm, + system, + ham, + trial, + block_size=10, + observables=("energy",), + filename=tmp2.name, + ) + handler["energy1"] = estim + handler.json_string = "" + handler.initialize(comm) + handler.compute_estimators(comm, system, ham, trial, walker_batch) + handler.compute_estimators(comm, system, ham, trial, walker_batch) + + +if __name__ == "__main__": + test_energy_fp_estimator() + test_estimator_handler_fp() diff --git a/ipie/addons/free_projection/propagation/__init__.py b/ipie/addons/free_projection/propagation/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/propagation/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/propagation/free_propagation.py b/ipie/addons/free_projection/propagation/free_propagation.py similarity index 100% rename from ipie/propagation/free_propagation.py rename to ipie/addons/free_projection/propagation/free_propagation.py diff --git a/ipie/addons/free_projection/propagation/tests/__init__.py b/ipie/addons/free_projection/propagation/tests/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/propagation/tests/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/propagation/tests/test_generic.py b/ipie/addons/free_projection/propagation/tests/test_generic.py new file mode 100644 index 00000000..0a3744a2 --- /dev/null +++ b/ipie/addons/free_projection/propagation/tests/test_generic.py @@ -0,0 +1,70 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Joonho Lee +# Fionn Malone +# + +import numpy +import pytest + +from ipie.addons.free_projection.propagation.free_propagation import FreePropagation +from ipie.utils.misc import dotdict +from ipie.utils.testing import build_test_case_handlers + + +@pytest.mark.unit +def test_free_projection(): + numpy.random.seed(7) + nmo = 10 + nelec = (6, 5) + nwalkers = 8 + nsteps = 25 + qmc = dotdict( + { + "dt": 0.005, + "nstblz": 5, + "nwalkers": nwalkers, + "batched": False, + "hybrid": True, + "num_steps": nsteps, + } + ) + qmc.batched = True + batched_data = build_test_case_handlers(nelec, nmo, num_dets=1, options=qmc, seed=7) + prop_fp = FreePropagation(time_step=0.005, verbose=False, ene_0=-1.0) + prop_fp.build(batched_data.hamiltonian, batched_data.trial) + + prop_fp.propagate_walkers( + batched_data.walkers, batched_data.hamiltonian, batched_data.trial, -1.0 + ) + assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) + assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) + assert numpy.allclose( + numpy.sum(batched_data.walkers.phase), 7.926221838159645 + 0.3971467053264697j + ) + assert numpy.allclose(numpy.sum(batched_data.walkers.weight), 1.7901505653712695) + assert numpy.allclose( + numpy.sum(batched_data.walkers.ovlp), -6.40187371404052e-05 - 2.34160780650416e-05j + ) + assert numpy.allclose( + numpy.sum(batched_data.walkers.phia), 33.95629475599705 - 0.30274130601759786j + ) + assert numpy.allclose( + numpy.sum(batched_data.walkers.phib), 41.45587700725909 - 2.8023497141639413j + ) + + +if __name__ == "__main__": + test_free_projection() diff --git a/ipie/addons/free_projection/qmc/__init__.py b/ipie/addons/free_projection/qmc/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/qmc/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/qmc/calc.py b/ipie/addons/free_projection/qmc/calc.py new file mode 100644 index 00000000..ac05fbe2 --- /dev/null +++ b/ipie/addons/free_projection/qmc/calc.py @@ -0,0 +1,160 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +"""Helper Routines for setting up a calculation""" +# todo : handle more gracefully. +import json + +from ipie.addons.free_projection.estimators.energy import local_energy +from ipie.addons.free_projection.propagation.free_propagation import FreePropagation +from ipie.addons.free_projection.qmc.fp_afqmc import FPAFQMC +from ipie.addons.free_projection.qmc.options import QMCParamsFP +from ipie.config import MPI +from ipie.hamiltonians.utils import get_hamiltonian +from ipie.systems.utils import get_system +from ipie.trial_wavefunction.utils import get_trial_wavefunction +from ipie.utils.io import get_input_value +from ipie.utils.mpi import MPIHandler +from ipie.walkers.walkers_dispatch import get_initial_walker, UHFWalkersTrial + + +def build_fpafqmc_driver( + comm, + nelec: tuple, + wavefunction_file: str = "wavefunction.h5", + hamiltonian_file: str = "hamiltonian.h5", + estimator_filename: str = "estimates.0.h5", + seed: int = None, + qmc_options: dict = None, +): + options = { + "system": {"nup": nelec[0], "ndown": nelec[1]}, + "qmc": {"rng_seed": seed}, + "hamiltonian": {"integrals": hamiltonian_file}, + "trial": {"filename": wavefunction_file}, + "estimators": {"overwrite": True, "filename": estimator_filename}, + } + if qmc_options is not None: + options["qmc"].update(qmc_options) + return get_driver_fp(options, comm) + + +def get_driver_fp(options: dict, comm: MPI.COMM_WORLD) -> FPAFQMC: + verbosity = options.get("verbosity", 1) + qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) + sys_opts = get_input_value( + options, "system", default={}, alias=["model"], verbose=verbosity > 1 + ) + ham_opts = get_input_value(options, "hamiltonian", default={}, verbose=verbosity > 1) + # backward compatibility with previous code (to be removed) + for item in sys_opts.items(): + if item[0].lower() == "name" and "name" in ham_opts.keys(): + continue + ham_opts[item[0]] = item[1] + + twf_opt = get_input_value( + options, "trial", default={}, alias=["trial_wavefunction"], verbose=verbosity > 1 + ) + + wlk_opts = get_input_value( + options, "walkers", default={}, alias=["walker", "walker_opts"], verbose=verbosity > 1 + ) + wlk_opts["pop_control"] = wlk_opts.get("pop_control", "pair_branch") + wlk_opts["population_control"] = wlk_opts["pop_control"] + + beta = get_input_value(qmc_opts, "beta", default=None) + if comm.rank != 0: + verbosity = 0 + batched = get_input_value(qmc_opts, "batched", default=True, verbose=verbosity) + + if beta is not None or batched == False: + raise ValueError("Trying to use legacy features which aren't supported.") + else: + from ipie.qmc.options import QMCOpts + + qmc = QMCOpts(qmc_opts, verbose=0) + mpi_handler = MPIHandler(nmembers=qmc_opts.get("nmembers", 1), verbose=verbosity) + system = get_system( + sys_opts, verbose=verbosity, comm=comm + ) # Have to deal with shared comm in the future. I think we will remove this... + ham_file = get_input_value(ham_opts, "integrals", None, verbose=verbosity) + if ham_file is None: + raise ValueError("Hamiltonian filename not specified.") + pack_chol = get_input_value( + ham_opts, "symmetry", True, alias=["pack_chol", "pack_cholesky"], verbose=verbosity + ) + hamiltonian = get_hamiltonian( + ham_file, mpi_handler.scomm, pack_chol=pack_chol, verbose=verbosity + ) + wfn_file = get_input_value(twf_opt, "filename", default="", alias=["wfn_file"]) + num_elec = (system.nup, system.ndown) + trial = get_trial_wavefunction( + num_elec, + hamiltonian.nbasis, + wfn_file, + verbose=verbosity, + ndets=get_input_value(twf_opt, "ndets", default=1, alias=["num_dets"]), + ndets_props=get_input_value( + twf_opt, "ndets_props", default=1, alias=["num_dets_props"] + ), + ndet_chunks=get_input_value( + twf_opt, "ndet_chunks", default=1, alias=["num_det_chunks"] + ), + ) + trial.half_rotate(hamiltonian, mpi_handler.scomm) + if trial.compute_trial_energy: + trial.calculate_energy(system, hamiltonian) + trial.e1b = comm.bcast(trial.e1b, root=0) + trial.e2b = comm.bcast(trial.e2b, root=0) + comm.barrier() + _, initial_walker = get_initial_walker(trial) + walkers = UHFWalkersTrial( + trial, + initial_walker, + system.nup, + system.ndown, + hamiltonian.nbasis, + qmc.nwalkers, + mpi_handler, + ) + walkers.build(trial) # any intermediates that require information from trial + params = QMCParamsFP( + num_walkers=qmc.nwalkers, + total_num_walkers=qmc.nwalkers * comm.size, + num_blocks=qmc.nblocks, + num_steps_per_block=qmc.nsteps, + timestep=qmc.dt, + num_stblz=qmc.nstblz, + pop_control_freq=qmc.npop_control, + rng_seed=qmc.rng_seed, + num_iterations_fp=get_input_value(qmc_opts, "num_iterations_fp", 1), + ) + ene_0 = local_energy(system, hamiltonian, walkers, trial)[0][0] + propagator = FreePropagation(time_step=params.timestep, exp_nmax=10, ene_0=ene_0) + propagator.build(hamiltonian, trial, walkers, mpi_handler) + afqmc = FPAFQMC( + system, + hamiltonian, + trial, + walkers, + propagator, + params, + verbose=(verbosity and comm.rank == 0), + ) + + return afqmc diff --git a/ipie/qmc/fp_afqmc.py b/ipie/addons/free_projection/qmc/fp_afqmc.py similarity index 96% rename from ipie/qmc/fp_afqmc.py rename to ipie/addons/free_projection/qmc/fp_afqmc.py index c221f736..eac4d047 100644 --- a/ipie/qmc/fp_afqmc.py +++ b/ipie/addons/free_projection/qmc/fp_afqmc.py @@ -21,18 +21,18 @@ import time from typing import Dict, Optional, Tuple +from ipie.addons.free_projection.estimators.handler import EstimatorHandlerFP +from ipie.addons.free_projection.propagation.free_propagation import FreePropagation +from ipie.addons.free_projection.qmc.options import QMCParamsFP +from ipie.addons.free_projection.walkers.uhf_walkers import UHFWalkersFP from ipie.estimators.estimator_base import EstimatorBase -from ipie.estimators.handler import EstimatorHandlerFP from ipie.hamiltonians.utils import get_hamiltonian -from ipie.propagation.free_propagation import FreePropagation from ipie.qmc.afqmc import AFQMC -from ipie.qmc.options import QMCParamsFP from ipie.trial_wavefunction.utils import get_trial_wavefunction from ipie.utils.backend import synchronize from ipie.utils.io import to_json from ipie.utils.mpi import MPIHandler from ipie.walkers.base_walkers import WalkerAccumulator -from ipie.walkers.uhf_walkers import UHFWalkersFP from ipie.walkers.walkers_dispatch import get_initial_walker @@ -98,6 +98,10 @@ def build( Not performed in free projection. verbose : bool Log verbosity. Default True i.e. print information to stdout. + ene_0 : float + Energy guess for the desired state. + num_iterations_fp : int + Number of iterations of free projection. """ driver = AFQMC.build( diff --git a/ipie/addons/free_projection/qmc/options.py b/ipie/addons/free_projection/qmc/options.py new file mode 100644 index 00000000..89c657e3 --- /dev/null +++ b/ipie/addons/free_projection/qmc/options.py @@ -0,0 +1,26 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +from dataclasses import dataclass + +from ipie.qmc.options import QMCParams + + +@dataclass +class QMCParamsFP(QMCParams): + num_iterations_fp: int = 1 diff --git a/ipie/addons/free_projection/qmc/tests/__init__.py b/ipie/addons/free_projection/qmc/tests/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/qmc/tests/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/qmc/tests/test_afqmc_single_det_batch.py b/ipie/addons/free_projection/qmc/tests/test_afqmc_single_det_batch.py new file mode 100644 index 00000000..22d011be --- /dev/null +++ b/ipie/addons/free_projection/qmc/tests/test_afqmc_single_det_batch.py @@ -0,0 +1,98 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +import tempfile + +import numpy +import pytest + +from ipie.addons.free_projection.analysis.extraction import extract_observable +from ipie.addons.free_projection.utils.testing import build_driver_test_instance_fp +from ipie.config import MPI + +steps = 25 +blocks = 10 +seed = 7 +nwalkers = 10 +nmo = 14 +nelec = (4, 3) +# steps = 1 +# blocks = 10 +# seed = 7 +# nwalkers = 1 +# nmo = 4 +# nelec = (2, 1) + +pop_control_freq = 5 +stabilise_freq = 5 +comm = MPI.COMM_WORLD + +options = { + "dt": 0.005, + "nstblz": 5, + "nwalkers": nwalkers, + "nwalkers_per_task": nwalkers, + "batched": True, + "hybrid": True, + "steps": steps, + "blocks": blocks, + "pop_control_freq": pop_control_freq, + "stabilise_freq": stabilise_freq, + "rng_seed": seed, +} + + +@pytest.mark.driver +def test_generic_single_det_batch_fp(): + with tempfile.NamedTemporaryFile() as tmpf: + driver_options = { + "verbosity": 0, + "get_sha1": False, + "qmc": options, + "estimates": {"filename": tmpf.name, "observables": {"energy": {}}}, + "walkers": {"population_control": "pair_branch"}, + } + + afqmc = build_driver_test_instance_fp( + nelec, + nmo, + trial_type="single_det", + options=driver_options, + seed=7, + ) + afqmc.setup_estimators(tmpf.name) + afqmc.run(verbose=False, estimator_filename=tmpf.name) + afqmc.finalise(verbose=0) + for i in range(len(afqmc.estimators)): + data_batch = extract_observable(f"{tmpf.name}.{i}", "energy") + numer_batch = data_batch["ENumer"] + denom_batch = data_batch["EDenom"] + etot_batch = data_batch["ETotal"] + assert etot_batch.dtype == numpy.complex128 + + data_batch = extract_observable(f"{tmpf.name}.0", "energy") + numer_batch = data_batch["ENumer"] + denom_batch = data_batch["EDenom"] + etot_batch = data_batch["ETotal"] + assert numpy.allclose(numpy.sum(numer_batch), 89026.91053310843 + 37.16899096646583j) + assert numpy.allclose(numpy.sum(denom_batch), 7431.790242711337 + 12.22172751384279j) + assert numpy.allclose(numpy.sum(etot_batch), 35.93783190822862 - 0.04412020753601597j) + + +if __name__ == "__main__": + test_generic_single_det_batch_fp() diff --git a/ipie/addons/free_projection/utils/__init__.py b/ipie/addons/free_projection/utils/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/utils/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/utils/testing.py b/ipie/addons/free_projection/utils/testing.py new file mode 100644 index 00000000..62114621 --- /dev/null +++ b/ipie/addons/free_projection/utils/testing.py @@ -0,0 +1,155 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +from typing import Tuple, Union + +import numpy + +from ipie.addons.free_projection.propagation.free_propagation import FreePropagation +from ipie.addons.free_projection.qmc.fp_afqmc import FPAFQMC +from ipie.addons.free_projection.walkers.uhf_walkers import UHFWalkersFP +from ipie.hamiltonians import Generic as HamGeneric +from ipie.qmc.options import QMCOpts +from ipie.systems import Generic +from ipie.utils.io import get_input_value +from ipie.utils.mpi import MPIHandler +from ipie.utils.testing import build_random_trial, generate_hamiltonian, TestData + + +def build_test_case_handlers_fp( + num_elec: Tuple[int, int], + num_basis: int, + num_dets=1, + trial_type="single_det", + wfn_type="opt", + complex_integrals: bool = False, + complex_trial: bool = False, + seed: Union[int, None] = None, + rhf_trial: bool = False, + two_body_only: bool = False, + choltol: float = 1e-3, + reortho: bool = True, + options: Union[dict, None] = None, +): + if seed is not None: + numpy.random.seed(seed) + sym = 8 + if complex_integrals: + sym = 4 + h1e, chol, _, eri = generate_hamiltonian( + num_basis, num_elec, cplx=complex_integrals, sym=sym, tol=choltol + ) + system = Generic(nelec=num_elec) + ham = HamGeneric( + h1e=numpy.array([h1e, h1e]), + chol=chol.reshape((-1, num_basis**2)).T.copy(), + ecore=0, + ) + ham.eri = eri.copy() + trial, init = build_random_trial( + num_elec, + num_basis, + num_dets=num_dets, + wfn_type=wfn_type, + trial_type=trial_type, + complex_trial=complex_trial, + rhf_trial=rhf_trial, + ) + trial.half_rotate(ham) + trial.calculate_energy(system, ham) + # necessary for backwards compatabilty with tests + if seed is not None: + numpy.random.seed(seed) + + nwalkers = get_input_value(options, "nwalkers", default=10, alias=["num_walkers"]) + walkers = UHFWalkersFP(init, system.nup, system.ndown, ham.nbasis, nwalkers, MPIHandler()) + walkers.build(trial) # any intermediates that require information from trial + + prop = FreePropagation(time_step=options["dt"]) + prop.build(ham, trial) + + trial.calc_greens_function(walkers) + for _ in range(options.num_steps): + if two_body_only: + prop.propagate_walkers_two_body(walkers, ham, trial) + else: + prop.propagate_walkers(walkers, ham, trial, trial.energy) + if reortho: + walkers.reortho() + trial.calc_greens_function(walkers) + + return TestData(trial, walkers, ham, prop) + + +def build_driver_test_instance_fp( + num_elec: Tuple[int, int], + num_basis: int, + num_dets=1, + trial_type="phmsd", + wfn_type="opt", + complex_integrals: bool = False, + complex_trial: bool = False, + rhf_trial: bool = False, + seed: Union[int, None] = None, + density_diff=False, + options: Union[dict, None] = None, +): + if seed is not None: + numpy.random.seed(seed) + h1e, chol, _, _ = generate_hamiltonian(num_basis, num_elec, cplx=complex_integrals) + system = Generic(nelec=num_elec) + ham = HamGeneric( + h1e=numpy.array([h1e, h1e]), + chol=chol.reshape((-1, num_basis**2)).T.copy(), + ecore=0, + ) + if density_diff: + ham.density_diff = True + trial, _ = build_random_trial( + num_elec, + num_basis, + num_dets=num_dets, + wfn_type=wfn_type, + trial_type=trial_type, + complex_trial=complex_trial, + rhf_trial=rhf_trial, + ) + trial.half_rotate(ham) + try: + trial.calculate_energy(system, ham) + except NotImplementedError: + pass + + qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) + qmc = QMCOpts(qmc_opts, verbose=0) + qmc.nwalkers = qmc.nwalkers + afqmc = FPAFQMC.build( + num_elec, + ham, + trial, + num_walkers=qmc.nwalkers, + seed=qmc.rng_seed, + num_steps_per_block=5, + num_blocks=2, + timestep=qmc.dt, + stabilize_freq=qmc.nstblz, + pop_control_freq=qmc.npop_control, + ene_0=trial.energy, + num_iterations_fp=3, + ) + return afqmc diff --git a/ipie/addons/free_projection/walkers/__init__.py b/ipie/addons/free_projection/walkers/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/walkers/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/walkers/tests/__init__.py b/ipie/addons/free_projection/walkers/tests/__init__.py new file mode 100644 index 00000000..871770c1 --- /dev/null +++ b/ipie/addons/free_projection/walkers/tests/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory for additions to ipie which depend on the core ipie library. +# New features should mirror the ipie layout e.g. +# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/walkers/tests/test_single_det_uhf.py b/ipie/addons/free_projection/walkers/tests/test_single_det_uhf.py new file mode 100644 index 00000000..385ed4b9 --- /dev/null +++ b/ipie/addons/free_projection/walkers/tests/test_single_det_uhf.py @@ -0,0 +1,51 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Joonho Lee +# Fionn Malone +# + +import pytest + +from ipie.addons.free_projection.utils.testing import build_test_case_handlers_fp +from ipie.utils.misc import dotdict + + +@pytest.mark.unit +def test_reortho_batch_fp(): + nelec = (5, 5) + nwalkers = 10 + nsteps = 10 + nmo = 10 + qmc = dotdict( + { + "dt": 0.005, + "nstblz": 5, + "nwalkers": nwalkers, + "batched": False, + "hybrid": True, + "num_steps": nsteps, + } + ) + qmc.batched = True + batched_data = build_test_case_handlers_fp( + nelec, nmo, num_dets=1, complex_trial=True, options=qmc, seed=7 + ) + batched_data.walkers.orthogonalise() + assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) + assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) + + +if __name__ == "__main__": + test_reortho_batch_fp() diff --git a/ipie/addons/free_projection/walkers/uhf_walkers.py b/ipie/addons/free_projection/walkers/uhf_walkers.py new file mode 100644 index 00000000..ee418898 --- /dev/null +++ b/ipie/addons/free_projection/walkers/uhf_walkers.py @@ -0,0 +1,82 @@ +# Copyright 2022 The ipie Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Fionn Malone +# Joonho Lee +# + +from ipie.config import config +from ipie.utils.backend import arraylib as xp +from ipie.utils.backend import qr, qr_mode, synchronize +from ipie.walkers.uhf_walkers import UHFWalkers + + +class UHFWalkersFP(UHFWalkers): + """UHF style walker specialized for its use with free projection.""" + + def orthogonalise(self, free_projection=False): + """Orthogonalise all walkers. + + Parameters + ---------- + free_projection : bool + This flag is not used here. + """ + detR = self.reortho() + magn, dtheta = xp.abs(self.detR), xp.angle(self.detR) + self.weight *= magn + self.phase *= xp.exp(1j * dtheta) + return detR + + def reortho_batched(self): + assert config.get_option("use_gpu") + (self.phia, Rup) = qr(self.phia, mode=qr_mode) + Rup_diag = xp.einsum("wii->wi", Rup) + det = xp.prod(Rup_diag, axis=1) + + if self.ndown > 0: + (self.phib, Rdn) = qr(self.phib, mode=qr_mode) + Rdn_diag = xp.einsum("wii->wi", Rdn) + det *= xp.prod(Rdn_diag, axis=1) + self.detR = det + self.ovlp = self.ovlp / self.detR + synchronize() + return self.detR + + def reortho(self): + """reorthogonalise walkers for free projection, retaining normalization. + + parameters + ---------- + """ + if config.get_option("use_gpu"): + return self.reortho_batched() + else: + ndown = self.ndown + detR = [] + for iw in range(self.nwalkers): + (self.phia[iw], Rup) = qr(self.phia[iw], mode=qr_mode) + det_i = xp.prod(xp.diag(Rup)) + + if ndown > 0: + (self.phib[iw], Rdn) = qr(self.phib[iw], mode=qr_mode) + det_i *= xp.prod(xp.diag(Rdn)) + + detR += [det_i] + self.log_detR[iw] += xp.log(detR[iw]) + self.detR[iw] = detR[iw] + self.ovlp[iw] = self.ovlp[iw] / detR[iw] + + synchronize() + return self.detR diff --git a/ipie/analysis/blocking.py b/ipie/analysis/blocking.py index 3607c783..634f3617 100755 --- a/ipie/analysis/blocking.py +++ b/ipie/analysis/blocking.py @@ -390,37 +390,3 @@ def analyse_ekt_ipea(filename, ix=None, cutoff=1e-14, screen_factor=1): fockT = numpy.dot(X.conj().T, numpy.dot(fock_1p_av, X)) eea, eea_vec = numpy.linalg.eigh(fockT) return (eip, eip_vec), (eea, eea_vec) - - -def jackknife_ratios(num: numpy.ndarray, denom: numpy.ndarray): - r"""Jackknife estimation of standard deviation of the ratio of means. - - Parameters - ---------- - num : :class:`np.ndarray - Numerator samples. - denom : :class:`np.ndarray` - Denominator samples. - - Returns - ------- - mean : :class:`np.ndarray` - Ratio of means. - sigma : :class:`np.ndarray` - Standard deviation of the ratio of means. - """ - n_samples = num.size - num_mean = numpy.mean(num) - denom_mean = numpy.mean(denom) - mean = num_mean / denom_mean - print(f"Complex mean: {mean:.8e}") - jackknife_estimates = numpy.zeros(n_samples, dtype=num.dtype) - for i in range(n_samples): - mean_num_i = (num_mean * n_samples - num[i]) / (n_samples - 1) - mean_denom_i = (denom_mean * n_samples - denom[i]) / (n_samples - 1) - jackknife_estimates[i] = (mean_num_i / mean_denom_i).real - mean = numpy.mean(jackknife_estimates) - sigma = numpy.sqrt((n_samples - 1) * numpy.var(jackknife_estimates)) - print(f"Mean: {mean.real:.8e}") - print(f"Stochastic error: {sigma.real:.8e}") - return mean, sigma diff --git a/ipie/analysis/extraction.py b/ipie/analysis/extraction.py index 7d1114f3..f9103afd 100755 --- a/ipie/analysis/extraction.py +++ b/ipie/analysis/extraction.py @@ -68,49 +68,6 @@ def extract_observable(filename, name="energy", block_idx=1): return walker_averaged.reshape((nsamp,) + tuple(obs_info["shape"])) -def extract_hdf5_data_complex(filename, block_idx=1): - shapes = {} - with h5py.File(filename, "r") as fh5: - keys = fh5[f"block_size_{block_idx}/data/"].keys() - shape_keys = fh5[f"block_size_{block_idx}/shape/"].keys() - data = numpy.concatenate([fh5[f"block_size_{block_idx}/data/{d}"][:] for d in keys]) - for k in shape_keys: - shapes[k] = { - "names": fh5[f"block_size_{block_idx}/names/{k}"][()], - "shape": fh5[f"block_size_{block_idx}/shape/{k}"][:], - "offset": fh5[f"block_size_{block_idx}/offset/{k}"][()], - "size": fh5[f"block_size_{block_idx}/size/{k}"][()], - "scalar": bool(fh5[f"block_size_{block_idx}/scalar/{k}"][()]), - "num_walker_props": fh5[f"block_size_{block_idx}/num_walker_props"][()], - "walker_header": fh5[f"block_size_{block_idx}/walker_prop_header"][()], - } - size_keys = fh5[f"block_size_{block_idx}/max_block"].keys() - max_block = sum(fh5[f"block_size_{block_idx}/max_block/{d}"][()] for d in size_keys) - - return data[: max_block + 1], shapes - - -def extract_observable_complex(filename, name="energy", block_idx=1): - data, info = extract_hdf5_data_complex(filename, block_idx=block_idx) - obs_info = info.get(name) - if obs_info is None: - raise RuntimeError(f"Unknown value for name={name}") - obs_slice = slice(obs_info["offset"], obs_info["offset"] + obs_info["size"]) - if obs_info["scalar"]: - obs_data = data[:, obs_slice].reshape((-1,) + tuple(obs_info["shape"])) - nwalk_prop = obs_info["num_walker_props"] - weight_data = data[:, :nwalk_prop].reshape((-1, nwalk_prop)) - results = pd.DataFrame(numpy.hstack([weight_data, obs_data])) - header = list(obs_info["walker_header"]) + obs_info["names"].split() - results.columns = [n.decode("utf-8") for n in header] - return results - else: - obs_data = data[:, obs_slice] - nsamp = data.shape[0] - walker_averaged = obs_data[:, :-1] / obs_data[:, -1].reshape((nsamp, -1)) - return walker_averaged.reshape((nsamp,) + tuple(obs_info["shape"])) - - def extract_data_sets(files, group, estimator, raw=False): data = [] for f in files: diff --git a/ipie/estimators/energy.py b/ipie/estimators/energy.py index 408b20dc..d8a6936b 100644 --- a/ipie/estimators/energy.py +++ b/ipie/estimators/energy.py @@ -157,35 +157,3 @@ def post_reduce_hook(self, data): data[ix_nume] = data[ix_nume] / data[ix_deno] ix_nume = self._data_index["E2Body"] data[ix_nume] = data[ix_nume] / data[ix_deno] - - -class EnergyEstimatorFP(EnergyEstimator): - def __init__( - self, - system=None, - ham=None, - trial=None, - filename=None, - ): - super().__init__(system, ham, trial, filename) - - def compute_estimator(self, system, walkers, hamiltonian, trial, istep=1): - trial.calc_greens_function(walkers) - # Need to be able to dispatch here - energy = local_energy(system, hamiltonian, walkers, trial) - self._data["ENumer"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 0]) - self._data["EDenom"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp) - self._data["E1Body"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 1]) - self._data["E2Body"] = xp.sum(walkers.weight * walkers.phase * walkers.ovlp * energy[:, 2]) - - return self.data - - def post_reduce_hook(self, data): - ix_proj = self._data_index["ETotal"] - ix_nume = self._data_index["ENumer"] - ix_deno = self._data_index["EDenom"] - data[ix_proj] = data[ix_nume] / data[ix_deno] - ix_nume = self._data_index["E1Body"] - data[ix_nume] = data[ix_nume] / data[ix_deno] - ix_nume = self._data_index["E2Body"] - data[ix_nume] = data[ix_nume] / data[ix_deno] diff --git a/ipie/estimators/handler.py b/ipie/estimators/handler.py index 8de9a3b9..a35dbfe1 100644 --- a/ipie/estimators/handler.py +++ b/ipie/estimators/handler.py @@ -27,7 +27,7 @@ import numpy from ipie.config import config, MPI -from ipie.estimators.energy import EnergyEstimator, EnergyEstimatorFP +from ipie.estimators.energy import EnergyEstimator from ipie.estimators.estimator_base import EstimatorBase from ipie.estimators.utils import H5EstimatorHelper from ipie.utils.io import format_fixed_width_strings @@ -244,107 +244,3 @@ def zero(self): self.global_estimates[:] = 0.0 for _, e in self.items(): e.zero() - - -class EstimatorHandlerFP(EstimatorHandler): - def __init__( - self, - comm, - system, - hamiltonian, - trial, - walker_state=None, - verbose: bool = False, - filename: Union[str, None] = None, - block_size: int = 1, - basename: str = "estimates", - overwrite=True, - observables: Tuple[str] = ("energy",), # TODO: Use factory method! - index: int = 0, - ): - super().__init__( - comm, - system, - hamiltonian, - trial, - walker_state, - verbose, - filename, - block_size, - basename, - overwrite, - observables, - index, - ) - self["energy"] = EnergyEstimatorFP( - system=system, - ham=hamiltonian, - trial=trial, - ) - - def initialize(self, comm, print_header=True): - self.local_estimates = numpy.zeros( - (self.size + self.num_walker_props), dtype=numpy.complex128 - ) - self.global_estimates = numpy.zeros( - (self.size + self.num_walker_props), dtype=numpy.complex128 - ) - header = f"{'Iter':>17s} {'TimeStep':>10s} " - for k, e in self.items(): - if e.print_to_stdout: - header += e.header_to_text - if comm.rank == 0: - with h5py.File(self.filename, "w") as fh5: - pass - self.dump_metadata() - self.output = H5EstimatorHelper( - self.filename, - base="block_size_1", - chunk_size=self.buffer_size, - shape=(self.size + self.num_walker_props,), - ) - if comm.rank == 0: - with h5py.File(self.filename, "r+") as fh5: - fh5["block_size_1/num_walker_props"] = self.num_walker_props - fh5["block_size_1/walker_prop_header"] = self.walker_header - for k, o in self.items(): - fh5[f"block_size_1/shape/{k}"] = o.shape - fh5[f"block_size_1/size/{k}"] = o.size - fh5[f"block_size_1/scalar/{k}"] = int(o.scalar_estimator) - fh5[f"block_size_1/names/{k}"] = " ".join(name for name in o.names) - fh5[f"block_size_1/offset/{k}"] = self.num_walker_props + self.get_offset(k) - if comm.rank == 0 and print_header: - print(header) - - def print_block(self, comm, block, walker_factors, div_factor=None, time_step=0): - self.local_estimates[: walker_factors.size] = walker_factors.buffer - comm.Reduce(self.local_estimates, self.global_estimates, op=MPI.SUM) - output_string = " " - # Get walker data. - offset = walker_factors.size - for k, e in self.items(): - if comm.rank == 0: - start = offset + self.get_offset(k) - end = start + int(self[k].size) - est_data = self.global_estimates[start:end] - e.post_reduce_hook(est_data) - est_string = e.data_to_text(est_data) - e.to_ascii_file(est_string) - if e.print_to_stdout: - output_string += est_string - if comm.rank == 0: - shift = self.global_estimates[walker_factors.get_index("HybridEnergy")] - - else: - shift = None - walker_factors.eshift = comm.bcast(shift) - if comm.rank == 0: - self.output.push_to_chunk(self.global_estimates, f"data") - self.output.increment() - if comm.rank == 0: - if time_step == 0: - print(f"{block:>17d} {time_step:>10d}" + output_string) - else: - blank = "" - print(f"{blank:>17s} {time_step:>10d}" + output_string) - self.zero() diff --git a/ipie/estimators/tests/test_estimators.py b/ipie/estimators/tests/test_estimators.py index 90773338..5c68cad4 100644 --- a/ipie/estimators/tests/test_estimators.py +++ b/ipie/estimators/tests/test_estimators.py @@ -19,8 +19,8 @@ import pytest -from ipie.estimators.energy import EnergyEstimator, EnergyEstimatorFP -from ipie.estimators.handler import EstimatorHandler, EstimatorHandlerFP +from ipie.estimators.energy import EnergyEstimator +from ipie.estimators.handler import EstimatorHandler from ipie.utils.testing import gen_random_test_instances @@ -47,25 +47,6 @@ def test_energy_estimator(): assert len(data_to_text.split()) == 5 -@pytest.mark.unit -def test_energy_fp_estimator(): - nmo = 10 - nocc = 8 - naux = 30 - nwalker = 10 - system, ham, walker_batch, trial = gen_random_test_instances(nmo, nocc, naux, nwalker) - estim = EnergyEstimatorFP(system=system, ham=ham, trial=trial) - estim.compute_estimator(system, walker_batch, ham, trial) - assert len(estim.names) == 5 - tmp = estim.data.copy() - estim.post_reduce_hook(tmp) - assert estim.print_to_stdout - assert estim.ascii_filename == None - assert estim.shape == (5,) - data_to_text = estim.data_to_text(tmp) - assert len(data_to_text.split()) == 5 - - @pytest.mark.unit def test_estimator_handler(): with tempfile.NamedTemporaryFile() as tmp1, tempfile.NamedTemporaryFile() as tmp2: @@ -95,37 +76,6 @@ def test_estimator_handler(): handler.compute_estimators(comm, system, ham, trial, walker_batch) -@pytest.mark.unit -def test_estimator_handler_fp(): - with tempfile.NamedTemporaryFile() as tmp1, tempfile.NamedTemporaryFile() as tmp2: - nmo = 10 - nocc = 8 - naux = 30 - nwalker = 10 - system, ham, walker_batch, trial = gen_random_test_instances(nmo, nocc, naux, nwalker) - estim = EnergyEstimatorFP(system=system, ham=ham, trial=trial, filename=tmp1.name) - estim.print_to_stdout = False - from ipie.config import MPI - - comm = MPI.COMM_WORLD - handler = EstimatorHandlerFP( - comm, - system, - ham, - trial, - block_size=10, - observables=("energy",), - filename=tmp2.name, - ) - handler["energy1"] = estim - handler.json_string = "" - handler.initialize(comm) - handler.compute_estimators(comm, system, ham, trial, walker_batch) - handler.compute_estimators(comm, system, ham, trial, walker_batch) - - if __name__ == "__main__": test_energy_estimator() - test_energy_fp_estimator() test_estimator_handler() - test_estimator_handler_fp() diff --git a/ipie/propagation/tests/test_generic.py b/ipie/propagation/tests/test_generic.py index e8c84632..91e71641 100644 --- a/ipie/propagation/tests/test_generic.py +++ b/ipie/propagation/tests/test_generic.py @@ -20,7 +20,6 @@ import pytest from ipie.estimators.greens_function import greens_function_single_det_batch -from ipie.propagation.free_propagation import FreePropagation from ipie.propagation.overlap import calc_overlap_single_det_uhf from ipie.utils.legacy_testing import build_legacy_test_case_handlers from ipie.utils.misc import dotdict @@ -329,48 +328,6 @@ def test_vhs(): assert numpy.allclose(vhs_batch[iw], vhs_serial[iw]) -@pytest.mark.unit -def test_free_projection(): - numpy.random.seed(7) - nmo = 10 - nelec = (6, 5) - nwalkers = 8 - nsteps = 25 - qmc = dotdict( - { - "dt": 0.005, - "nstblz": 5, - "nwalkers": nwalkers, - "batched": False, - "hybrid": True, - "num_steps": nsteps, - } - ) - qmc.batched = True - batched_data = build_test_case_handlers(nelec, nmo, num_dets=1, options=qmc, seed=7) - prop_fp = FreePropagation(time_step=0.005, verbose=False, ene_0=-1.0) - prop_fp.build(batched_data.hamiltonian, batched_data.trial) - - prop_fp.propagate_walkers( - batched_data.walkers, batched_data.hamiltonian, batched_data.trial, -1.0 - ) - assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) - assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) - assert numpy.allclose( - numpy.sum(batched_data.walkers.phase), 7.926221838159645 + 0.3971467053264697j - ) - assert numpy.allclose(numpy.sum(batched_data.walkers.weight), 1.7901505653712695) - assert numpy.allclose( - numpy.sum(batched_data.walkers.ovlp), -6.40187371404052e-05 - 2.34160780650416e-05j - ) - assert numpy.allclose( - numpy.sum(batched_data.walkers.phia), 33.95629475599705 - 0.30274130601759786j - ) - assert numpy.allclose( - numpy.sum(batched_data.walkers.phib), 41.45587700725909 - 2.8023497141639413j - ) - - if __name__ == "__main__": test_overlap_rhf_batch() test_overlap_batch() @@ -379,4 +336,3 @@ def test_free_projection(): test_hybrid_rhf_batch() test_hybrid_batch() test_vhs() - test_free_projection() diff --git a/ipie/qmc/calc.py b/ipie/qmc/calc.py index 69a6a7c5..e51d6f08 100644 --- a/ipie/qmc/calc.py +++ b/ipie/qmc/calc.py @@ -21,13 +21,10 @@ import json from ipie.config import MPI -from ipie.estimators.energy import local_energy from ipie.hamiltonians.utils import get_hamiltonian -from ipie.propagation.free_propagation import FreePropagation from ipie.propagation.propagator import Propagator from ipie.qmc.afqmc import AFQMC -from ipie.qmc.fp_afqmc import FPAFQMC -from ipie.qmc.options import QMCParams, QMCParamsFP +from ipie.qmc.options import QMCParams from ipie.systems.utils import get_system from ipie.trial_wavefunction.utils import get_trial_wavefunction from ipie.utils.io import get_input_value @@ -175,133 +172,6 @@ def build_afqmc_driver( return get_driver(options, comm) -def build_fpafqmc_driver( - comm, - nelec: tuple, - wavefunction_file: str = "wavefunction.h5", - hamiltonian_file: str = "hamiltonian.h5", - estimator_filename: str = "estimates.0.h5", - seed: int = None, - qmc_options: dict = None, -): - options = { - "system": {"nup": nelec[0], "ndown": nelec[1]}, - "qmc": {"rng_seed": seed}, - "hamiltonian": {"integrals": hamiltonian_file}, - "trial": {"filename": wavefunction_file}, - "estimators": {"overwrite": True, "filename": estimator_filename}, - } - if qmc_options is not None: - options["qmc"].update(qmc_options) - return get_driver_fp(options, comm) - - -def get_driver_fp(options: dict, comm: MPI.COMM_WORLD) -> FPAFQMC: - verbosity = options.get("verbosity", 1) - qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) - sys_opts = get_input_value( - options, "system", default={}, alias=["model"], verbose=verbosity > 1 - ) - ham_opts = get_input_value(options, "hamiltonian", default={}, verbose=verbosity > 1) - # backward compatibility with previous code (to be removed) - for item in sys_opts.items(): - if item[0].lower() == "name" and "name" in ham_opts.keys(): - continue - ham_opts[item[0]] = item[1] - - twf_opt = get_input_value( - options, "trial", default={}, alias=["trial_wavefunction"], verbose=verbosity > 1 - ) - - wlk_opts = get_input_value( - options, "walkers", default={}, alias=["walker", "walker_opts"], verbose=verbosity > 1 - ) - wlk_opts["pop_control"] = wlk_opts.get("pop_control", "pair_branch") - wlk_opts["population_control"] = wlk_opts["pop_control"] - - beta = get_input_value(qmc_opts, "beta", default=None) - if comm.rank != 0: - verbosity = 0 - batched = get_input_value(qmc_opts, "batched", default=True, verbose=verbosity) - - if beta is not None or batched == False: - raise ValueError("Trying to use legacy features which aren't supported.") - else: - from ipie.qmc.options import QMCOpts - - qmc = QMCOpts(qmc_opts, verbose=0) - mpi_handler = MPIHandler(nmembers=qmc_opts.get("nmembers", 1), verbose=verbosity) - system = get_system( - sys_opts, verbose=verbosity, comm=comm - ) # Have to deal with shared comm in the future. I think we will remove this... - ham_file = get_input_value(ham_opts, "integrals", None, verbose=verbosity) - if ham_file is None: - raise ValueError("Hamiltonian filename not specified.") - pack_chol = get_input_value( - ham_opts, "symmetry", True, alias=["pack_chol", "pack_cholesky"], verbose=verbosity - ) - hamiltonian = get_hamiltonian( - ham_file, mpi_handler.scomm, pack_chol=pack_chol, verbose=verbosity - ) - wfn_file = get_input_value(twf_opt, "filename", default="", alias=["wfn_file"]) - num_elec = (system.nup, system.ndown) - trial = get_trial_wavefunction( - num_elec, - hamiltonian.nbasis, - wfn_file, - verbose=verbosity, - ndets=get_input_value(twf_opt, "ndets", default=1, alias=["num_dets"]), - ndets_props=get_input_value( - twf_opt, "ndets_props", default=1, alias=["num_dets_props"] - ), - ndet_chunks=get_input_value( - twf_opt, "ndet_chunks", default=1, alias=["num_det_chunks"] - ), - ) - trial.half_rotate(hamiltonian, mpi_handler.scomm) - if trial.compute_trial_energy: - trial.calculate_energy(system, hamiltonian) - trial.e1b = comm.bcast(trial.e1b, root=0) - trial.e2b = comm.bcast(trial.e2b, root=0) - comm.barrier() - _, initial_walker = get_initial_walker(trial) - walkers = UHFWalkersTrial( - trial, - initial_walker, - system.nup, - system.ndown, - hamiltonian.nbasis, - qmc.nwalkers, - mpi_handler, - ) - walkers.build(trial) # any intermediates that require information from trial - params = QMCParamsFP( - num_walkers=qmc.nwalkers, - total_num_walkers=qmc.nwalkers * comm.size, - num_blocks=qmc.nblocks, - num_steps_per_block=qmc.nsteps, - timestep=qmc.dt, - num_stblz=qmc.nstblz, - pop_control_freq=qmc.npop_control, - rng_seed=qmc.rng_seed, - num_iterations_fp=get_input_value(qmc_opts, "num_iterations_fp", 1), - ) - ene_0 = local_energy(system, hamiltonian, walkers, trial)[0][0] - propagator = FreePropagation(time_step=params.timestep, exp_nmax=10, ene_0=ene_0) - propagator.build(hamiltonian, trial, walkers, mpi_handler) - afqmc = FPAFQMC( - system, - hamiltonian, - trial, - walkers, - propagator, - params, - verbose=(verbosity and comm.rank == 0), - ) - - return afqmc - - def read_input(input_file, comm, verbose=False): """Helper function to parse input file and setup parallel calculation. diff --git a/ipie/qmc/options.py b/ipie/qmc/options.py index 0a49a818..be352469 100644 --- a/ipie/qmc/options.py +++ b/ipie/qmc/options.py @@ -182,8 +182,3 @@ class QMCParams: num_stblz: int = 5 pop_control_freq: int = 5 rng_seed: Optional[int] = None - - -@dataclass -class QMCParamsFP(QMCParams): - num_iterations_fp: int = 1 diff --git a/ipie/qmc/tests/test_afqmc_single_det_batch.py b/ipie/qmc/tests/test_afqmc_single_det_batch.py index 6d1b3b1d..8a426314 100644 --- a/ipie/qmc/tests/test_afqmc_single_det_batch.py +++ b/ipie/qmc/tests/test_afqmc_single_det_batch.py @@ -22,16 +22,12 @@ import numpy import pytest -from ipie.analysis.extraction import ( - extract_mixed_estimates, - extract_observable, - extract_observable_complex, -) +from ipie.analysis.extraction import extract_mixed_estimates, extract_observable from ipie.config import MPI from ipie.qmc.calc import AFQMC from ipie.utils.io import write_hamiltonian, write_wavefunction from ipie.utils.legacy_testing import build_legacy_driver_instance -from ipie.utils.testing import build_driver_test_instance, build_driver_test_instance_fp +from ipie.utils.testing import build_driver_test_instance steps = 25 blocks = 10 @@ -238,43 +234,6 @@ def test_generic_single_det_batch_density_diff(): # ) -@pytest.mark.driver -def test_generic_single_det_batch_fp(): - with tempfile.NamedTemporaryFile() as tmpf: - driver_options = { - "verbosity": 0, - "get_sha1": False, - "qmc": options, - "estimates": {"filename": tmpf.name, "observables": {"energy": {}}}, - "walkers": {"population_control": "pair_branch"}, - } - - afqmc = build_driver_test_instance_fp( - nelec, - nmo, - trial_type="single_det", - options=driver_options, - seed=7, - ) - afqmc.setup_estimators(tmpf.name) - afqmc.run(verbose=False, estimator_filename=tmpf.name) - afqmc.finalise(verbose=0) - for i in range(len(afqmc.estimators)): - data_batch = extract_observable_complex(f"{tmpf.name}.{i}", "energy") - numer_batch = data_batch["ENumer"] - denom_batch = data_batch["EDenom"] - etot_batch = data_batch["ETotal"] - assert etot_batch.dtype == numpy.complex128 - - data_batch = extract_observable_complex(f"{tmpf.name}.0", "energy") - numer_batch = data_batch["ENumer"] - denom_batch = data_batch["EDenom"] - etot_batch = data_batch["ETotal"] - assert numpy.allclose(numpy.sum(numer_batch), 89026.91053310843 + 37.16899096646583j) - assert numpy.allclose(numpy.sum(denom_batch), 7431.790242711337 + 12.22172751384279j) - assert numpy.allclose(numpy.sum(etot_batch), 35.93783190822862 - 0.04412020753601597j) - - @pytest.mark.driver def test_factory_method(): with tempfile.NamedTemporaryFile() as hamilf, tempfile.NamedTemporaryFile() as wfnf: @@ -296,6 +255,5 @@ def test_factory_method(): if __name__ == "__main__": - # test_generic_single_det_batch() - test_generic_single_det_batch_fp() - # test_generic_single_det_batch_density_diff() + test_generic_single_det_batch() + test_generic_single_det_batch_density_diff() diff --git a/ipie/utils/testing.py b/ipie/utils/testing.py index 2a9f58bd..be0c37bb 100644 --- a/ipie/utils/testing.py +++ b/ipie/utils/testing.py @@ -23,10 +23,8 @@ import numpy from ipie.hamiltonians import Generic as HamGeneric -from ipie.propagation.free_propagation import FreePropagation from ipie.propagation.phaseless_generic import PhaselessBase, PhaselessGeneric from ipie.qmc.afqmc import AFQMC -from ipie.qmc.fp_afqmc import FPAFQMC from ipie.qmc.options import QMCOpts from ipie.systems import Generic from ipie.trial_wavefunction.noci import NOCI @@ -43,7 +41,6 @@ from ipie.utils.mpi import MPIHandler from ipie.walkers.base_walkers import BaseWalkers from ipie.walkers.pop_controller import PopController -from ipie.walkers.uhf_walkers import UHFWalkersFP from ipie.walkers.walkers_dispatch import UHFWalkersTrial @@ -553,71 +550,6 @@ def build_test_case_handlers( return TestData(trial, walkers, ham, prop) -def build_test_case_handlers_fp( - num_elec: Tuple[int, int], - num_basis: int, - num_dets=1, - trial_type="single_det", - wfn_type="opt", - complex_integrals: bool = False, - complex_trial: bool = False, - seed: Union[int, None] = None, - rhf_trial: bool = False, - two_body_only: bool = False, - choltol: float = 1e-3, - reortho: bool = True, - options: Union[dict, None] = None, -): - if seed is not None: - numpy.random.seed(seed) - sym = 8 - if complex_integrals: - sym = 4 - h1e, chol, _, eri = generate_hamiltonian( - num_basis, num_elec, cplx=complex_integrals, sym=sym, tol=choltol - ) - system = Generic(nelec=num_elec) - ham = HamGeneric( - h1e=numpy.array([h1e, h1e]), - chol=chol.reshape((-1, num_basis**2)).T.copy(), - ecore=0, - ) - ham.eri = eri.copy() - trial, init = build_random_trial( - num_elec, - num_basis, - num_dets=num_dets, - wfn_type=wfn_type, - trial_type=trial_type, - complex_trial=complex_trial, - rhf_trial=rhf_trial, - ) - trial.half_rotate(ham) - trial.calculate_energy(system, ham) - # necessary for backwards compatabilty with tests - if seed is not None: - numpy.random.seed(seed) - - nwalkers = get_input_value(options, "nwalkers", default=10, alias=["num_walkers"]) - walkers = UHFWalkersFP(init, system.nup, system.ndown, ham.nbasis, nwalkers, MPIHandler()) - walkers.build(trial) # any intermediates that require information from trial - - prop = FreePropagation(time_step=options["dt"]) - prop.build(ham, trial) - - trial.calc_greens_function(walkers) - for _ in range(options.num_steps): - if two_body_only: - prop.propagate_walkers_two_body(walkers, ham, trial) - else: - prop.propagate_walkers(walkers, ham, trial, trial.energy) - if reortho: - walkers.reortho() - trial.calc_greens_function(walkers) - - return TestData(trial, walkers, ham, prop) - - def build_driver_test_instance( num_elec: Tuple[int, int], num_basis: int, @@ -660,6 +592,7 @@ def build_driver_test_instance( qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) qmc = QMCOpts(qmc_opts, verbose=0) qmc.nwalkers = qmc.nwalkers + afqmc = AFQMC.build( num_elec, ham, @@ -673,62 +606,3 @@ def build_driver_test_instance( pop_control_freq=qmc.npop_control, ) return afqmc - - -def build_driver_test_instance_fp( - num_elec: Tuple[int, int], - num_basis: int, - num_dets=1, - trial_type="phmsd", - wfn_type="opt", - complex_integrals: bool = False, - complex_trial: bool = False, - rhf_trial: bool = False, - seed: Union[int, None] = None, - density_diff=False, - options: Union[dict, None] = None, -): - if seed is not None: - numpy.random.seed(seed) - h1e, chol, _, _ = generate_hamiltonian(num_basis, num_elec, cplx=complex_integrals) - system = Generic(nelec=num_elec) - ham = HamGeneric( - h1e=numpy.array([h1e, h1e]), - chol=chol.reshape((-1, num_basis**2)).T.copy(), - ecore=0, - ) - if density_diff: - ham.density_diff = True - trial, _ = build_random_trial( - num_elec, - num_basis, - num_dets=num_dets, - wfn_type=wfn_type, - trial_type=trial_type, - complex_trial=complex_trial, - rhf_trial=rhf_trial, - ) - trial.half_rotate(ham) - try: - trial.calculate_energy(system, ham) - except NotImplementedError: - pass - - qmc_opts = get_input_value(options, "qmc", default={}, alias=["qmc_options"]) - qmc = QMCOpts(qmc_opts, verbose=0) - qmc.nwalkers = qmc.nwalkers - afqmc = FPAFQMC.build( - num_elec, - ham, - trial, - num_walkers=qmc.nwalkers, - seed=qmc.rng_seed, - num_steps_per_block=5, - num_blocks=2, - timestep=qmc.dt, - stabilize_freq=qmc.nstblz, - pop_control_freq=qmc.npop_control, - ene_0=trial.energy, - num_iterations_fp=3, - ) - return afqmc diff --git a/ipie/walkers/tests/test_single_det_uhf.py b/ipie/walkers/tests/test_single_det_uhf.py index 4416bf57..3c5558af 100644 --- a/ipie/walkers/tests/test_single_det_uhf.py +++ b/ipie/walkers/tests/test_single_det_uhf.py @@ -22,7 +22,7 @@ from ipie.estimators.greens_function import greens_function_single_det from ipie.utils.legacy_testing import build_legacy_test_case_handlers from ipie.utils.misc import dotdict -from ipie.utils.testing import build_test_case_handlers, build_test_case_handlers_fp +from ipie.utils.testing import build_test_case_handlers @pytest.mark.unit @@ -127,33 +127,7 @@ def test_reortho_batch(): assert numpy.allclose(detR_legacy, detR) -@pytest.mark.unit -def test_reortho_batch_fp(): - nelec = (5, 5) - nwalkers = 10 - nsteps = 10 - nmo = 10 - qmc = dotdict( - { - "dt": 0.005, - "nstblz": 5, - "nwalkers": nwalkers, - "batched": False, - "hybrid": True, - "num_steps": nsteps, - } - ) - qmc.batched = True - batched_data = build_test_case_handlers_fp( - nelec, nmo, num_dets=1, complex_trial=True, options=qmc, seed=7 - ) - batched_data.walkers.orthogonalise() - assert batched_data.walkers.phia.shape == (nwalkers, nmo, nelec[0]) - assert batched_data.walkers.phib.shape == (nwalkers, nmo, nelec[1]) - - if __name__ == "__main__": test_overlap_batch() test_greens_function_batch() test_reortho_batch() - test_reortho_batch_fp() diff --git a/ipie/walkers/uhf_walkers.py b/ipie/walkers/uhf_walkers.py index b902b014..5811b184 100644 --- a/ipie/walkers/uhf_walkers.py +++ b/ipie/walkers/uhf_walkers.py @@ -335,63 +335,3 @@ def build(self, trial): dtype=numpy.complex128, ) self.ovlp = trial.calc_greens_function(self) - - -class UHFWalkersFP(UHFWalkers): - """UHF style walker specialized for its use with free projection.""" - - def orthogonalise(self, free_projection=False): - """Orthogonalise all walkers. - - Parameters - ---------- - free_projection : bool - This flag is not used here. - """ - detR = self.reortho() - magn, dtheta = xp.abs(self.detR), xp.angle(self.detR) - self.weight *= magn - self.phase *= xp.exp(1j * dtheta) - return detR - - def reortho_batched(self): - assert config.get_option("use_gpu") - (self.phia, Rup) = qr(self.phia, mode=qr_mode) - Rup_diag = xp.einsum("wii->wi", Rup) - det = xp.prod(Rup_diag, axis=1) - - if self.ndown > 0: - (self.phib, Rdn) = qr(self.phib, mode=qr_mode) - Rdn_diag = xp.einsum("wii->wi", Rdn) - det *= xp.prod(Rdn_diag, axis=1) - self.detR = det - self.ovlp = self.ovlp / self.detR - synchronize() - return self.detR - - def reortho(self): - """reorthogonalise walkers for free projection, retaining normalization. - - parameters - ---------- - """ - if config.get_option("use_gpu"): - return self.reortho_batched() - else: - ndown = self.ndown - detR = [] - for iw in range(self.nwalkers): - (self.phia[iw], Rup) = qr(self.phia[iw], mode=qr_mode) - det_i = xp.prod(xp.diag(Rup)) - - if ndown > 0: - (self.phib[iw], Rdn) = qr(self.phib[iw], mode=qr_mode) - det_i *= xp.prod(xp.diag(Rdn)) - - detR += [det_i] - self.log_detR[iw] += xp.log(detR[iw]) - self.detR[iw] = detR[iw] - self.ovlp[iw] = self.ovlp[iw] / detR[iw] - - synchronize() - return self.detR From 39c6ded00d30d0bca5b59251cb2edb74aeb18240 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Tue, 5 Mar 2024 19:04:36 -0500 Subject: [PATCH 10/11] unused import --- ipie/addons/free_projection/qmc/calc.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/ipie/addons/free_projection/qmc/calc.py b/ipie/addons/free_projection/qmc/calc.py index ac05fbe2..916cca58 100644 --- a/ipie/addons/free_projection/qmc/calc.py +++ b/ipie/addons/free_projection/qmc/calc.py @@ -18,8 +18,6 @@ """Helper Routines for setting up a calculation""" # todo : handle more gracefully. -import json - from ipie.addons.free_projection.estimators.energy import local_energy from ipie.addons.free_projection.propagation.free_propagation import FreePropagation from ipie.addons.free_projection.qmc.fp_afqmc import FPAFQMC From 2c7e5fdff29dc082ec5ad917be75f51acaee3de3 Mon Sep 17 00:00:00 2001 From: Ankit Mahajan Date: Wed, 6 Mar 2024 20:59:42 -0500 Subject: [PATCH 11/11] cleanup --- examples/13-free_projection/fp_afqmc.ipynb | 1006 +---------------- ipie/addons/free_projection/__init__.py | 4 - .../free_projection/analysis/__init__.py | 4 - .../analysis/tests/__init__.py | 4 - .../free_projection/estimators/__init__.py | 4 - .../estimators/tests/__init__.py | 4 - .../free_projection/propagation/__init__.py | 4 - .../propagation/tests/__init__.py | 4 - ipie/addons/free_projection/qmc/__init__.py | 4 - .../free_projection/qmc/tests/__init__.py | 4 - ipie/addons/free_projection/utils/__init__.py | 4 - .../free_projection/walkers/__init__.py | 4 - .../free_projection/walkers/tests/__init__.py | 4 - 13 files changed, 8 insertions(+), 1046 deletions(-) diff --git a/examples/13-free_projection/fp_afqmc.ipynb b/examples/13-free_projection/fp_afqmc.ipynb index 4d05b5a7..12bd8aeb 100644 --- a/examples/13-free_projection/fp_afqmc.ipynb +++ b/examples/13-free_projection/fp_afqmc.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -24,41 +24,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "converged SCF energy = -5.25628158758201\n", - "converged SCF energy = -5.25628158758181 = 2.5845992e-13 2S+1 = 1\n", - " wavefunction is stable in the internal stability analysis\n", - " wavefunction is stable in the real -> complex stability analysis\n", - " wavefunction is stable in the UHF/UKS -> GHF/GKS stability analysis\n", - "converged SCF energy = -5.25628158758199 = 6.2172489e-14 2S+1 = 1\n", - ".SecondOrderUHF'> wavefunction is stable in the internal stability analysis\n", - ".SecondOrderUHF'> wavefunction is stable in the real -> complex stability analysis\n", - ".SecondOrderUHF'> wavefunction is stable in the UHF/UKS -> GHF/GKS stability analysis\n", - "converged SCF energy = -5.25628158758202 = 3.0198066e-14 2S+1 = 1\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/pyscf/dft/libxc.py:772: UserWarning: Since PySCF-2.3, B3LYP (and B3P86) are changed to the VWN-RPA variant, the same to the B3LYP functional in Gaussian and ORCA (issue 1480). To restore the VWN5 definition, you can put the setting \"B3LYP_WITH_VWN5 = True\" in pyscf_conf.py\n", - " warnings.warn('Since PySCF-2.3, B3LYP (and B3P86) are changed to the VWN-RPA variant, '\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FCI energy: -5.3843610660956\n" - ] - } - ], + "outputs": [], "source": [ "r = 1.6\n", "nH = 10\n", @@ -101,479 +69,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "# Note: batched not specified. Setting to default value of True.\n", - "# MPIHandler detected 1 groups with 1 members each\n", - "# Parsing input options for systems.Generic.\n", - "# Number of alpha electrons: 5\n", - "# Number of beta electrons: 5\n", - "# Setting integrals to hamiltonian.h5.\n", - "# Note: symmetry not specified. Setting to default value of True.\n", - "# Have shared memory: True\n", - "# Time to read integrals: 0.002338\n", - "# Time to pack Cholesky vectors: 0.000175\n", - "# Number of orbitals: 10\n", - "# Approximate memory required by Cholesky vectors 0.000020 GB\n", - "# Approximate memory required by packed Cholesky vectors 0.000011 GB\n", - "# Approximate memory required total 0.000031 GB\n", - "# Number of Cholesky vectors: 27\n", - "# Number of fields: 27\n", - "# Finished setting up GenericRealChol object.\n", - "# random seed is 212503\n", - "# ipie version: 0.7.1.dev0\n", - "# Git hash: 743ca0f2a8dc97c96be4811c68904374b324d4ef.\n", - "# Git branch: develop.\n", - "# Found uncommitted changes and/or untracked files.\n", - "# Untracked : ipie/addons/free_projection/\n", - "# Calculation uuid: 8da74bd6-db46-11ee-aeee-f678500c90cd.\n", - "# Approximate memory available per node: 16.0000 GB.\n", - "# Running on 1 MPI rank.\n", - "# Root processor name: MacBook-Air-500.local\n", - "# Python interpreter: 3.11.5 (main, Sep 11 2023, 08:19:27) [Clang 14.0.6 ]\n", - "# Using numpy v1.25.2 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/numpy.\n", - "# - BLAS lib: openblas64_ openblas64_\n", - "# - BLAS dir: /usr/local/lib\n", - "# Using scipy v1.10.1 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/scipy.\n", - "# Using h5py v3.9.0 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/h5py.\n", - "# Using mpi4py v3.1.4 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/mpi4py.\n", - "# - mpicc: /Users/ankitmahajan/miniconda3/envs/py311/bin/mpicc\n", - "# Package cupy not found.\n", - "# MPI communicator : \n", - "# Available memory on the node is 16.000 GB\n", - "# Setting up estimator object.\n", - "# Writing estimator data to estimate.h5.0\n", - "# Finished settting up estimator object.\n", - "# Setting up estimator object.\n", - "# Writing estimator data to estimate.h5.1\n", - "# Finished settting up estimator object.\n", - "# Setting up estimator object.\n", - "# Writing estimator data to estimate.h5.2\n", - "# Finished settting up estimator object.\n", - "# Setting up estimator object.\n", - "# Writing estimator data to estimate.h5.3\n", - "# Finished settting up estimator object.\n", - " Iter TimeStep ENumer EDenom ETotal E1Body E2Body\n", - " 0 0 -2.9528586968990129e+02 5.4971903512908149e+01 -5.3715318757679116e+00 -1.6802177571144334e+01 1.1430645695376422e+01\n", - " 1 -3.4181998366788110e+02 6.3528368528187350e+01 -5.3805419269628274e+00 -1.6796283297553472e+01 1.1415741370590645e+01\n", - " 2 -4.0130715619649544e+02 7.4382545949291682e+01 -5.3954761823847068e+00 -1.6767578406780117e+01 1.1372102224395409e+01\n", - " 3 -5.7035941238826979e+02 1.0636317147516159e+02 -5.3622598945888003e+00 -1.6798706984286319e+01 1.1436447089697518e+01\n", - " 1 0 -2.7718259860644326e+02 5.1592201984180043e+01 -5.3724770848042844e+00 -1.6810888570411429e+01 1.1438411485607144e+01\n", - " 1 -3.0960846930468290e+02 5.7564998036104889e+01 -5.3783045997006749e+00 -1.6817766863848842e+01 1.1439462264148169e+01\n", - " 2 -3.8330685705680827e+02 7.1169488013081619e+01 -5.3856262382882614e+00 -1.6823832067678715e+01 1.1438205829390455e+01\n", - " 3 -4.4095810765797370e+02 8.1891330192013200e+01 -5.3846759604671641e+00 -1.6839159662590035e+01 1.1454483702122872e+01\n", - " 2 0 -2.9160470163599894e+02 5.4280194986976802e+01 -5.3722147435867829e+00 -1.6812212123740895e+01 1.1439997380154113e+01\n", - " 1 -3.2846514227596685e+02 6.0700227481781475e+01 -5.4113058129265399e+00 -1.6818401706334665e+01 1.1407095893408128e+01\n", - " 2 -4.0078835649674579e+02 7.4244485267392093e+01 -5.3986079486561751e+00 -1.6829365966680310e+01 1.1430758018024132e+01\n", - " 3 -3.9064382665212588e+02 7.2378383549968973e+01 -5.3974568293804568e+00 -1.6816593178471006e+01 1.1419136349090545e+01\n", - " 3 0 -3.2238031346176388e+02 6.0161083152903061e+01 -5.3585924073768147e+00 -1.6817961985303512e+01 1.1459369577926699e+01\n", - " 1 -4.0883661764184501e+02 7.6266989742368267e+01 -5.3606293146082402e+00 -1.6816841407201569e+01 1.1456212092593326e+01\n", - " 2 -3.8636741527563703e+02 7.1536133162787777e+01 -5.4005243428231529e+00 -1.6829066785303478e+01 1.1428542442480323e+01\n", - " 3 -4.8434479724293442e+02 8.9975974321415777e+01 -5.3828559848533670e+00 -1.6832435504157083e+01 1.1449579519303716e+01\n", - " 4 0 -2.8229222584289380e+02 5.2636538802646605e+01 -5.3630454604489097e+00 -1.6809043420875337e+01 1.1445997960426428e+01\n", - " 1 -3.8690028508101523e+02 7.2220983195639604e+01 -5.3571497938952808e+00 -1.6810793575063968e+01 1.1453643781168683e+01\n", - " 2 -3.8332257958005459e+02 7.0824126573587478e+01 -5.4124705616585373e+00 -1.6804304277954060e+01 1.1391833716295521e+01\n", - " 3 -4.7146194769517376e+02 8.7319621190109288e+01 -5.3992493806563351e+00 -1.6753864921120549e+01 1.1354615540464213e+01\n", - " 5 0 -2.6937930360140780e+02 5.0254781736425997e+01 -5.3602333264685873e+00 -1.6807370837847976e+01 1.1447137511379388e+01\n", - " 1 -2.9713385777400060e+02 5.5180634883660566e+01 -5.3847646885780138e+00 -1.6811598856164533e+01 1.1426834167586518e+01\n", - " 2 -4.3667548648413981e+02 8.1489738322397116e+01 -5.3586457276262927e+00 -1.6792443942541816e+01 1.1433798214915523e+01\n", - " 3 -4.6806022910785885e+02 8.6651134248098856e+01 -5.4009152147863375e+00 -1.6793949471459928e+01 1.1393034256673586e+01\n", - " 6 0 -2.8186183744442428e+02 5.2508729252892977e+01 -5.3679004256032359e+00 -1.6813907624708552e+01 1.1446007199105317e+01\n", - " 1 -3.2090870493150453e+02 5.9704808205555061e+01 -5.3748145588450340e+00 -1.6797307988029868e+01 1.1422493429184831e+01\n", - " 2 -3.7511918155081321e+02 6.9683421455966183e+01 -5.3825990524066114e+00 -1.6825523515947495e+01 1.1442924463540885e+01\n", - " 3 -4.2857007495516859e+02 7.9416401533101393e+01 -5.3964863769310103e+00 -1.6835684442923949e+01 1.1439198065992933e+01\n", - " 7 0 -2.9339865551887982e+02 5.4634068478176602e+01 -5.3702978724201511e+00 -1.6810859225441316e+01 1.1440561353021163e+01\n", - " 1 -3.4830987870599466e+02 6.4681234211108205e+01 -5.3852662695200246e+00 -1.6811646762444752e+01 1.1426380492924734e+01\n", - " 2 -4.1846339282871094e+02 7.7750101572502828e+01 -5.3820560098682968e+00 -1.6833893374139876e+01 1.1451837364271581e+01\n", - " 3 -5.7350987300853069e+02 1.0663813146248455e+02 -5.3780416734724081e+00 -1.6817701587830182e+01 1.1439659914357774e+01\n", - " 8 0 -3.0586306729778596e+02 5.6895694106824138e+01 -5.3758903058241172e+00 -1.6819836220767122e+01 1.1443945914943006e+01\n", - " 1 -3.2093845028457719e+02 5.9533154528575345e+01 -5.3909182907836097e+00 -1.6825403777633127e+01 1.1434485486849519e+01\n", - " 2 -4.6416149388906797e+02 8.6680566390681648e+01 -5.3549133804715003e+00 -1.6827461642590979e+01 1.1472548262119476e+01\n", - " 3 -5.9189721311378901e+02 1.0987806419728238e+02 -5.3868346397485398e+00 -1.6845506693498034e+01 1.1458672053749499e+01\n", - " 9 0 -3.0167937145395837e+02 5.6276099659281435e+01 -5.3606765382384776e+00 -1.6826452040515857e+01 1.1465775502277376e+01\n", - " 1 -3.9686011756806022e+02 7.3882303512786748e+01 -5.3714873330909123e+00 -1.6824610629112939e+01 1.1453123296022030e+01\n", - " 2 -5.4631257779563225e+02 1.0192659314851454e+02 -5.3600573794158262e+00 -1.6794074529484931e+01 1.1434017150069101e+01\n", - " 3 -6.0948528432326600e+02 1.1297818974083833e+02 -5.3946052052866236e+00 -1.6812038861522439e+01 1.1417433656235813e+01\n", - " 10 0 -3.1162371296029750e+02 5.8278844282867993e+01 -5.3471127287244693e+00 -1.6818070890500817e+01 1.1470958161776348e+01\n", - " 1 -3.8932954130612910e+02 7.2264309012829855e+01 -5.3869958484079152e+00 -1.6811106859577322e+01 1.1424111011169407e+01\n", - " 2 -5.0294493417468215e+02 9.3740530787383591e+01 -5.3652710130520642e+00 -1.6815608222957682e+01 1.1450337209905618e+01\n", - " 3 -4.1912229938749272e+02 7.7244261774469692e+01 -5.4256083093717979e+00 -1.6809205984140920e+01 1.1383597674769124e+01\n", - " 11 0 -3.2706217391145248e+02 6.1021005615805556e+01 -5.3598032215277627e+00 -1.6811195182062630e+01 1.1451391960534867e+01\n", - " 1 -3.3346382487151072e+02 6.1736303746547975e+01 -5.4017154607152884e+00 -1.6804258187775108e+01 1.1402542727059823e+01\n", - " 2 -3.9932825082953701e+02 7.4254521309391691e+01 -5.3778327194135152e+00 -1.6804915577230432e+01 1.1427082857816917e+01\n", - " 3 -5.2912237172395919e+02 9.8288376069827024e+01 -5.3830022351337297e+00 -1.6802937529548590e+01 1.1419935294414858e+01\n", - " 12 0 -3.1998661832301786e+02 5.9740759500660324e+01 -5.3562624951872770e+00 -1.6822225317467396e+01 1.1465962822280119e+01\n", - " 1 -4.2623119047501046e+02 7.9249782040857696e+01 -5.3783346916173960e+00 -1.6839390811710999e+01 1.1461056120093600e+01\n", - " 2 -6.0928513348883212e+02 1.1335327193564984e+02 -5.3747888094507950e+00 -1.6841614058699506e+01 1.1466825249248711e+01\n", - " 3 -7.6779646512877821e+02 1.4276718204617674e+02 -5.3779449529291803e+00 -1.6805335644215454e+01 1.1427390691286270e+01\n", - " 13 0 -3.5397978798033768e+02 6.6315338032109054e+01 -5.3378189494408650e+00 -1.6805536828331391e+01 1.1467717878890525e+01\n", - " 1 -4.7211793951002102e+02 8.8292613541911948e+01 -5.3472082524165412e+00 -1.6803381829577944e+01 1.1456173577161401e+01\n", - " 2 -5.4485188017749658e+02 1.0145511459028305e+02 -5.3703489741901258e+00 -1.6806171788928825e+01 1.1435822814738694e+01\n", - " 3 -5.6131331387600733e+02 1.0368312148453214e+02 -5.4136510498536934e+00 -1.6800117733271147e+01 1.1386466683417455e+01\n", - " 14 0 -3.0879213697438757e+02 5.7646273743765974e+01 -5.3566117726003526e+00 -1.6822682955227645e+01 1.1466071182627296e+01\n", - " 1 -2.8837309119057369e+02 5.3353978998010696e+01 -5.4044103254785192e+00 -1.6828425283423790e+01 1.1424014957945275e+01\n", - " 2 -3.3439984759638833e+02 6.1941074820234832e+01 -5.3983497576157484e+00 -1.6806956821472852e+01 1.1408607063857096e+01\n", - " 3 -4.2729324785476672e+02 7.9650865630697496e+01 -5.3640877890563505e+00 -1.6838327467253144e+01 1.1474239678196794e+01\n", - " 15 0 -3.2722885497635684e+02 6.0996043889157356e+01 -5.3647224605133887e+00 -1.6807303204180293e+01 1.1442580743666911e+01\n", - " 1 -4.2821639666719619e+02 7.9817754058765857e+01 -5.3649598005204089e+00 -1.6803018284720906e+01 1.1438058484200495e+01\n", - " 2 -5.9705753862748111e+02 1.1121208773990323e+02 -5.3686908352963547e+00 -1.6793625165648201e+01 1.1424934330351848e+01\n", - " 3 -6.2036994082312253e+02 1.1523542215055859e+02 -5.3833885106443287e+00 -1.6806983636829855e+01 1.1423595126185528e+01\n", - " 16 0 -2.6145538228754128e+02 4.8565931734848469e+01 -5.3835136370999841e+00 -1.6809645829432359e+01 1.1426132192332380e+01\n", - " 1 -3.2510648315334140e+02 6.0635822516370204e+01 -5.3613519751164480e+00 -1.6809326057766683e+01 1.1447974082650237e+01\n", - " 2 -3.0644350787212477e+02 5.6573600592620359e+01 -5.4159327282336784e+00 -1.6770236348002381e+01 1.1354303619768706e+01\n", - " 3 -3.2922690542818953e+02 6.0709661445221606e+01 -5.4232962751974219e+00 -1.6793020974771132e+01 1.1369724699573711e+01\n", - " 17 0 -3.4829751430897284e+02 6.5161433412525867e+01 -5.3451460594926612e+00 -1.6808372958457262e+01 1.1463226898964601e+01\n", - " 1 -4.3202095924513173e+02 8.0547410866651859e+01 -5.3634736716580669e+00 -1.6806199779364182e+01 1.1442726107706108e+01\n", - " 2 -5.9175898090931571e+02 1.1031811665148300e+02 -5.3635385497913814e+00 -1.6810186876057436e+01 1.1446648326266054e+01\n", - " 3 -6.8723513327771616e+02 1.2734672541231596e+02 -5.3966512862416760e+00 -1.6809574202256591e+01 1.1412922916014917e+01\n", - " 18 0 -3.2951805231022047e+02 6.1547189443613114e+01 -5.3539114965424082e+00 -1.6801354697843696e+01 1.1447443201301288e+01\n", - " 1 -3.8782053673928704e+02 7.2041720815131029e+01 -5.3834036570941723e+00 -1.6810570215968042e+01 1.1427166558873866e+01\n", - " 2 -3.9277170298158831e+02 7.2447718712233922e+01 -5.4213955015344624e+00 -1.6783057733740993e+01 1.1361662232206534e+01\n", - " 3 -4.7522504132330334e+02 8.8047100425865125e+01 -5.3973833450531350e+00 -1.6850757302511450e+01 1.1453373957458313e+01\n", - " 19 0 -2.7450243576091646e+02 5.1187389440796636e+01 -5.3626990276566628e+00 -1.6811742316108351e+01 1.1449043288451692e+01\n", - " 1 -3.3108207580251053e+02 6.1486329214971512e+01 -5.3846355563630866e+00 -1.6801106523508757e+01 1.1416470967145672e+01\n", - " 2 -4.5526399185782748e+02 8.4881870957595268e+01 -5.3635635190264619e+00 -1.6840998207953298e+01 1.1477434688926838e+01\n", - " 3 -4.9643435729600316e+02 9.2223488853262097e+01 -5.3819194496889420e+00 -1.6802362505755156e+01 1.1420443056066215e+01\n", - " 20 0 -3.2013081875514445e+02 5.9759034130250683e+01 -5.3570050599201480e+00 -1.6800137255168710e+01 1.1443132195248563e+01\n", - " 1 -3.5974307420290836e+02 6.6750960421811513e+01 -5.3893359526075892e+00 -1.6787885271610101e+01 1.1398549319002516e+01\n", - " 2 -3.9634430973617964e+02 7.3645713086142692e+01 -5.3814662517996261e+00 -1.6817451720578127e+01 1.1435985468778503e+01\n", - " 3 -5.1254591528639446e+02 9.5227540077366612e+01 -5.3807878501804272e+00 -1.6782043203166367e+01 1.1401255352985936e+01\n", - " 21 0 -2.5842910241941257e+02 4.8209529140344578e+01 -5.3605150885500565e+00 -1.6809747624738385e+01 1.1449232536188333e+01\n", - " 1 -3.0546310856847691e+02 5.6907994877414843e+01 -5.3675860401257358e+00 -1.6819424422802236e+01 1.1451838382676501e+01\n", - " 2 -3.8556124057990314e+02 7.1713609548452823e+01 -5.3765779528776720e+00 -1.6835702474762169e+01 1.1459124521884492e+01\n", - " 3 -5.2675764281955730e+02 9.7948732116908872e+01 -5.3778300454578982e+00 -1.6851544122328828e+01 1.1473714076870932e+01\n", - " 22 0 -3.2842240833590085e+02 6.1293670137193764e+01 -5.3581912572337131e+00 -1.6815646606620209e+01 1.1457455349386496e+01\n", - " 1 -3.7937404916425498e+02 7.0315685039559284e+01 -5.3949708543411861e+00 -1.6810853623282330e+01 1.1415882768941147e+01\n", - " 2 -4.2293081763442467e+02 7.8396289213690039e+01 -5.3948758279421005e+00 -1.6812901117524682e+01 1.1418025289582582e+01\n", - " 3 -5.6555291793904246e+02 1.0517366513298288e+02 -5.3759878591598564e+00 -1.6823581370492438e+01 1.1447593511332585e+01\n", - " 23 0 -2.7974775310251891e+02 5.2062230922004190e+01 -5.3733447364800435e+00 -1.6808342477425086e+01 1.1434997740945041e+01\n", - " 1 -2.8110840621410466e+02 5.2050879894756122e+01 -5.4004483991044205e+00 -1.6811552809932330e+01 1.1411104410827910e+01\n", - " 2 -3.3612934713581359e+02 6.2417015449667431e+01 -5.3852421399087831e+00 -1.6813285782026018e+01 1.1428043642117233e+01\n", - " 3 -3.5855163351350905e+02 6.6437483632447325e+01 -5.3963592734402512e+00 -1.6779572000752253e+01 1.1383212727311999e+01\n", - " 24 0 -3.6795765218959252e+02 6.8921131903884174e+01 -5.3387645640846690e+00 -1.6797386688424414e+01 1.1458622124339746e+01\n", - " 1 -4.2258052587862687e+02 7.8719920426862075e+01 -5.3681622321059370e+00 -1.6816760365782812e+01 1.1448598133676875e+01\n", - " 2 -3.8724247461320175e+02 7.1312083253941594e+01 -5.4302324330452496e+00 -1.6786527618414976e+01 1.1356295185369724e+01\n", - " 3 -3.7973610379298646e+02 7.0240154712893428e+01 -5.4062385245808811e+00 -1.6855597139339814e+01 1.1449358614758932e+01\n", - " 25 0 -3.0205306210651855e+02 5.6309593577877003e+01 -5.3641392944444162e+00 -1.6804825363235693e+01 1.1440686068791278e+01\n", - " 1 -4.0919827244139225e+02 7.6245791186951053e+01 -5.3661056096019069e+00 -1.6806553750924131e+01 1.1440448141322221e+01\n", - " 2 -4.8770258411859828e+02 9.0610573555472044e+01 -5.3826749409944599e+00 -1.6836494303309230e+01 1.1453819362314771e+01\n", - " 3 -6.9396942387629144e+02 1.2954866382972114e+02 -5.3571249990682270e+00 -1.6808948808879485e+01 1.1451823809811261e+01\n", - " 26 0 -3.1887922221380092e+02 5.9518349629569329e+01 -5.3576239427813448e+00 -1.6820202773989330e+01 1.1462578831207985e+01\n", - " 1 -3.5791082744604506e+02 6.6201981631590641e+01 -5.4063208703201919e+00 -1.6815921748568567e+01 1.1409600878248376e+01\n", - " 2 -4.6587840253739159e+02 8.6404889792917828e+01 -5.3917996711185854e+00 -1.6805929855880006e+01 1.1414130184761420e+01\n", - " 3 -4.6122685523150886e+02 8.5137713182127769e+01 -5.4172254860923523e+00 -1.6844682818198816e+01 1.1427457332106467e+01\n", - " 27 0 -3.7181671625225584e+02 6.9593325161747103e+01 -5.3427190505769957e+00 -1.6814425499238784e+01 1.1471706448661786e+01\n", - " 1 -3.6611407632181630e+02 6.7858724666732428e+01 -5.3952665170125975e+00 -1.6816148170789486e+01 1.1420881653776890e+01\n", - " 2 -3.7930169121987262e+02 7.0432623192975669e+01 -5.3853102259000201e+00 -1.6834301218953421e+01 1.1448990993053400e+01\n", - " 3 -5.1255435667810843e+02 9.5692019473325686e+01 -5.3557226226632979e+00 -1.6821537783388489e+01 1.1465815160725192e+01\n", - " 28 0 -3.1446974789644281e+02 5.8714240642138805e+01 -5.3559336700255775e+00 -1.6801456902537211e+01 1.1445523232511635e+01\n", - " 1 -3.8697208988465229e+02 7.1904317618927706e+01 -5.3816726016655148e+00 -1.6815881518190075e+01 1.1434208916524563e+01\n", - " 2 -3.8767842416051548e+02 7.1650280638394392e+01 -5.4095805642206729e+00 -1.6813168557632856e+01 1.1403587993412184e+01\n", - " 3 -4.0881696722983730e+02 7.5609715687458660e+01 -5.4058443743383204e+00 -1.6789538124398433e+01 1.1383693750060113e+01\n", - " 29 0 -2.7982476283786667e+02 5.2013540885158996e+01 -5.3797439316962015e+00 -1.6806646497220800e+01 1.1426902565524601e+01\n", - " 1 -3.9417545089591761e+02 7.3403941282580746e+01 -5.3700682389807524e+00 -1.6815577420448776e+01 1.1445509181468026e+01\n", - " 2 -4.1716341940816744e+02 7.7336580925410757e+01 -5.3931754113276256e+00 -1.6845921285440653e+01 1.1452745874113029e+01\n", - " 3 -6.6871322215598479e+02 1.2501858184758109e+02 -5.3476964466441421e+00 -1.6800647375557812e+01 1.1452950928913671e+01\n", - " 30 0 -3.0746078768404016e+02 5.7308523671235527e+01 -5.3650157714318745e+00 -1.6801370288385730e+01 1.1436354516953852e+01\n", - " 1 -3.2630488503054187e+02 6.0448003553115186e+01 -5.3973801074654828e+00 -1.6825505311109779e+01 1.1428125203644296e+01\n", - " 2 -3.3871918575188909e+02 6.2584398922618995e+01 -5.4114938957323329e+00 -1.6830103498673072e+01 1.1418609602940737e+01\n", - " 3 -4.3979641696965012e+02 8.1699939492507056e+01 -5.3823837014367779e+00 -1.6811362064969764e+01 1.1428978363532986e+01\n", - " 31 0 -2.8498917142958373e+02 5.3019615201947794e+01 -5.3751390863070814e+00 -1.6802781514074194e+01 1.1427642427767109e+01\n", - " 1 -3.1762301384821285e+02 5.8939226392152477e+01 -5.3885895722830286e+00 -1.6809608111407254e+01 1.1421018539124223e+01\n", - " 2 -3.7727726857990149e+02 6.9953062527967745e+01 -5.3930038015803721e+00 -1.6778977699866939e+01 1.1385973898286569e+01\n", - " 3 -4.3228175611790181e+02 8.0321639981081404e+01 -5.3819511528155388e+00 -1.6777949516795911e+01 1.1395998363980372e+01\n", - " 32 0 -3.0500252494371006e+02 5.6863980634666909e+01 -5.3636214114680572e+00 -1.6814838212156566e+01 1.1451216800688512e+01\n", - " 1 -3.6842425258342382e+02 6.8393403861407165e+01 -5.3867657245065734e+00 -1.6814947229700469e+01 1.1428181505193891e+01\n", - " 2 -3.6933749893835926e+02 6.8466601817177548e+01 -5.3944771638931899e+00 -1.6831995810586317e+01 1.1437518646693125e+01\n", - " 3 -4.3138114762670000e+02 8.0254419538127721e+01 -5.3747503324182171e+00 -1.6829371554481359e+01 1.1454621222063142e+01\n", - " 33 0 -3.0330203394478178e+02 5.6440658699140776e+01 -5.3737554307203661e+00 -1.6809611861142599e+01 1.1435856430422232e+01\n", - " 1 -4.1058675164583866e+02 7.6524417234712161e+01 -5.3653959203730972e+00 -1.6825028849203317e+01 1.1459632928830223e+01\n", - " 2 -4.8821363459916194e+02 9.0625477623067198e+01 -5.3872479177009138e+00 -1.6818237878210507e+01 1.1430989960509594e+01\n", - " 3 -6.5479033069696527e+02 1.2220705869927306e+02 -5.3580398478523819e+00 -1.6793485341387207e+01 1.1435445493534823e+01\n", - " 34 0 -2.7341049627097351e+02 5.0841090315981369e+01 -5.3776877049634386e+00 -1.6804797016838773e+01 1.1427109311875334e+01\n", - " 1 -3.4879651121640507e+02 6.4862419152762200e+01 -5.3776211310120123e+00 -1.6810813972167090e+01 1.1433192841155076e+01\n", - " 2 -3.6501519950039170e+02 6.7577781276326604e+01 -5.4007084001724754e+00 -1.6832896632086236e+01 1.1432188231913759e+01\n", - " 3 -3.6857622974164929e+02 6.8125399973273701e+01 -5.4086225828919465e+00 -1.6833918520993258e+01 1.1425295938101311e+01\n", - " 35 0 -2.9280390341974652e+02 5.4536321727626536e+01 -5.3689760602884933e+00 -1.6797916659864367e+01 1.1428940599575874e+01\n", - " 1 -3.2505548457158375e+02 6.0401147338353368e+01 -5.3816310290338549e+00 -1.6788282294624921e+01 1.1406651265591066e+01\n", - " 2 -3.9845099918116290e+02 7.4365914540394940e+01 -5.3578734016761231e+00 -1.6791539128987718e+01 1.1433665727311597e+01\n", - " 3 -6.0473117128833042e+02 1.1310782674116777e+02 -5.3463957378056870e+00 -1.6811918526860566e+01 1.1465522789054878e+01\n", - " 36 0 -2.5742436750668992e+02 4.7847306180434714e+01 -5.3801134907324704e+00 -1.6804577494581579e+01 1.1424464003849108e+01\n", - " 1 -3.6362107299557476e+02 6.7839507520485085e+01 -5.3600215293810791e+00 -1.6809848071562637e+01 1.1449826542181562e+01\n", - " 2 -5.1846966047062187e+02 9.6189714671022287e+01 -5.3894202931650916e+00 -1.6820401607959745e+01 1.1430981314794654e+01\n", - " 3 -6.2274256387867274e+02 1.1612688298461889e+02 -5.3627717157980799e+00 -1.6811670066544579e+01 1.1448898350746500e+01\n", - " 37 0 -3.4050988533585962e+02 6.3603935757890874e+01 -5.3535224271031110e+00 -1.6805923821490968e+01 1.1452401394387859e+01\n", - " 1 -4.1186110451382575e+02 7.6569003503926552e+01 -5.3789714563865836e+00 -1.6817421366301001e+01 1.1438449909914418e+01\n", - " 2 -5.0926308290544841e+02 9.4700044681467261e+01 -5.3775031053661104e+00 -1.6851550688672713e+01 1.1474047583306604e+01\n", - " 3 -6.6791681640315858e+02 1.2447132124508160e+02 -5.3660145813948716e+00 -1.6822397359452964e+01 1.1456382778058092e+01\n", - " 38 0 -3.0600718505851034e+02 5.7039265254185473e+01 -5.3648617868933632e+00 -1.6818456667063632e+01 1.1453594880170266e+01\n", - " 1 -3.0357309763577905e+02 5.6095715410497199e+01 -5.4116206683221462e+00 -1.6805923492847121e+01 1.1394302824524978e+01\n", - " 2 -4.3517465532447881e+02 8.1138973884429063e+01 -5.3632662427464721e+00 -1.6838418054992690e+01 1.1475151812246217e+01\n", - " 3 -3.5722073728510571e+02 6.6035476743609152e+01 -5.4097030061736850e+00 -1.6850492304683492e+01 1.1440789298509809e+01\n", - " 39 0 -2.9124912129223600e+02 5.4171357178862223e+01 -5.3764287076669630e+00 -1.6822867628220624e+01 1.1446438920553664e+01\n", - " 1 -2.7458545277159845e+02 5.0764438879123247e+01 -5.4087273114628251e+00 -1.6797888160670865e+01 1.1389160849208041e+01\n", - " 2 -4.3504475074172677e+02 8.1223939606722467e+01 -5.3559007831596013e+00 -1.6817565323830944e+01 1.1461664540671347e+01\n", - " 3 -6.1002054127004544e+02 1.1320897995014886e+02 -5.3877970401278441e+00 -1.6798700580404407e+01 1.1410903540276562e+01\n", - " 40 0 -2.8147072423510042e+02 5.2357964219200284e+01 -5.3758719725100050e+00 -1.6795037861826696e+01 1.1419165889316689e+01\n", - " 1 -2.9860556552552708e+02 5.5399582359261963e+01 -5.3900077180545010e+00 -1.6787424393499972e+01 1.1397416675445475e+01\n", - " 2 -3.3546004461966447e+02 6.2057386763441293e+01 -5.4056472062010181e+00 -1.6819207717949773e+01 1.1413560511748750e+01\n", - " 3 -3.7468051172450538e+02 6.9521461641427152e+01 -5.3893270254728876e+00 -1.6832469088565386e+01 1.1443142063092496e+01\n", - " 41 0 -3.0691124862292673e+02 5.7176479780753453e+01 -5.3677994166611640e+00 -1.6803805594592220e+01 1.1436006177931057e+01\n", - " 1 -3.8803233079314549e+02 7.2128217980913348e+01 -5.3797573332433863e+00 -1.6817126570202372e+01 1.1437369236958993e+01\n", - " 2 -3.5234173703157347e+02 6.5193098990209265e+01 -5.4027355067837179e+00 -1.6811529062088752e+01 1.1408793555305035e+01\n", - " 3 -4.0441912439254247e+02 7.4582000745798069e+01 -5.4223243313224021e+00 -1.6824074994754071e+01 1.1401750663431669e+01\n", - " 42 0 -2.8886539892810436e+02 5.3793310162997997e+01 -5.3699156922380142e+00 -1.6809891705789695e+01 1.1439976013551680e+01\n", - " 1 -3.0706803325631671e+02 5.6860216649011512e+01 -5.4004177153073023e+00 -1.6793118638696996e+01 1.1392700923389697e+01\n", - " 2 -3.5330610637523847e+02 6.5493098465626048e+01 -5.3942067641525266e+00 -1.6786212245668263e+01 1.1392005481515735e+01\n", - " 3 -4.9063377054609276e+02 9.1255557371886184e+01 -5.3764544615413694e+00 -1.6827008476475324e+01 1.1450554014933955e+01\n", - " 43 0 -2.6887792807340480e+02 5.0090044495709193e+01 -5.3678900430300054e+00 -1.6810486584905174e+01 1.1442596541875167e+01\n", - " 1 -3.2795051954436929e+02 6.0830127582919708e+01 -5.3911161144895319e+00 -1.6804970352072587e+01 1.1413854237583056e+01\n", - " 2 -4.0120197330993665e+02 7.4639553513636045e+01 -5.3752236530341895e+00 -1.6810134650119398e+01 1.1434910997085209e+01\n", - " 3 -4.9826911535579484e+02 9.2744118860953407e+01 -5.3719248758134315e+00 -1.6804373579780460e+01 1.1432448703967031e+01\n", - " 44 0 -3.0389888672595794e+02 5.6760676927132508e+01 -5.3540153923438139e+00 -1.6810507815965707e+01 1.1456492423621896e+01\n", - " 1 -3.4223408668857036e+02 6.3381573193028132e+01 -5.3994886842330390e+00 -1.6809171910816193e+01 1.1409683226583160e+01\n", - " 2 -3.8974871396179003e+02 7.2426146949478735e+01 -5.3814085036141313e+00 -1.6828887586678867e+01 1.1447479083064733e+01\n", - " 3 -4.7532687822719043e+02 8.8503563688476206e+01 -5.3707229145971089e+00 -1.6833847614727802e+01 1.1463124700130694e+01\n", - " 45 0 -2.6765090780525264e+02 4.9758107854452007e+01 -5.3790505413921998e+00 -1.6822289402164987e+01 1.1443238860772786e+01\n", - " 1 -3.3673188337955952e+02 6.2917013843217568e+01 -5.3520662506405055e+00 -1.6810346886754214e+01 1.1458280636113710e+01\n", - " 2 -4.7723051995924175e+02 8.9123296726070890e+01 -5.3546390950573519e+00 -1.6801320603484715e+01 1.1446681508427364e+01\n", - " 3 -3.8577828159086710e+02 7.0989687625144654e+01 -5.4342980033404160e+00 -1.6838498617726270e+01 1.1404200614385855e+01\n", - " 46 0 -3.1731760755510578e+02 5.9217895494757030e+01 -5.3584659146214859e+00 -1.6804519535212467e+01 1.1446053620590977e+01\n", - " 1 -3.0736004366650639e+02 5.6831833699978858e+01 -5.4079284830939391e+00 -1.6815370440681370e+01 1.1407441957587432e+01\n", - " 2 -3.0202850513684479e+02 5.6010172120187214e+01 -5.3916702915797581e+00 -1.6853450632971423e+01 1.1461780341391666e+01\n", - " 3 -3.6117919307015705e+02 6.7091884490908129e+01 -5.3838679784054326e+00 -1.6820579664714590e+01 1.1436711686309158e+01\n", - " 47 0 -3.0562548045102199e+02 5.6996696170094580e+01 -5.3621430029378931e+00 -1.6821948787875183e+01 1.1459805784937291e+01\n", - " 1 -3.4137671740727217e+02 6.3502920024907979e+01 -5.3757122874619085e+00 -1.6812393035544225e+01 1.1436680748082312e+01\n", - " 2 -4.3724235726679603e+02 8.1417072196848338e+01 -5.3698948098668486e+00 -1.6806658823542378e+01 1.1436764013675527e+01\n", - " 3 -5.4273747763360586e+02 1.0096596235906357e+02 -5.3753044245656110e+00 -1.6855727271606110e+01 1.1480422847040501e+01\n", - " 48 0 -3.0629702459103584e+02 5.7065881556171114e+01 -5.3674375746972105e+00 -1.6808250991273091e+01 1.1440813416575882e+01\n", - " 1 -3.6377798686908926e+02 6.7668050799494452e+01 -5.3759236455296699e+00 -1.6775986555429267e+01 1.1400062909899594e+01\n", - " 2 -4.0893099846400412e+02 7.5954485569425444e+01 -5.3839190324602288e+00 -1.6782628485864784e+01 1.1398709453404559e+01\n", - " 3 -6.0362725472106445e+02 1.1237164713175211e+02 -5.3708156864737626e+00 -1.6785267233106186e+01 1.1414451546632426e+01\n", - " 49 0 -2.6423712645744536e+02 4.9060232536098397e+01 -5.3859706248330497e+00 -1.6804501950078429e+01 1.1418531325245379e+01\n", - " 1 -2.6945318948857823e+02 4.9900005332623891e+01 -5.3999015800553058e+00 -1.6784728662620786e+01 1.1384827082565483e+01\n", - " 2 -3.1602592940223354e+02 5.8542841228985267e+01 -5.3980086649401002e+00 -1.6793587419952487e+01 1.1395578755012385e+01\n", - " 3 -3.6020682164592733e+02 6.6880957076457207e+01 -5.3847542474437402e+00 -1.6855872258499168e+01 1.1471118011055427e+01\n", - " 50 0 -3.0319267959428635e+02 5.6587984682808774e+01 -5.3579174219322585e+00 -1.6813887402857493e+01 1.1455969980925238e+01\n", - " 1 -3.8258532025891321e+02 7.1114641274372801e+01 -5.3798599410714907e+00 -1.6811937949726733e+01 1.1432078008655241e+01\n", - " 2 -4.8201194002009174e+02 8.9387766270089969e+01 -5.3924660414804562e+00 -1.6800492502932478e+01 1.1408026461452025e+01\n", - " 3 -8.3931188499389179e+02 1.5666155173804540e+02 -5.3574847479037535e+00 -1.6815703235190522e+01 1.1458218487286770e+01\n", - " 51 0 -3.1277540317220331e+02 5.8363393129718816e+01 -5.3590260972178765e+00 -1.6810309405066800e+01 1.1451283307848922e+01\n", - " 1 -3.8945532612558856e+02 7.2532121677701923e+01 -5.3694594229815200e+00 -1.6794977097628973e+01 1.1425517674647455e+01\n", - " 2 -4.4910593691241934e+02 8.3493017528779461e+01 -5.3788183495530788e+00 -1.6783708040619373e+01 1.1404889691066291e+01\n", - " 3 -7.0181798767308669e+02 1.3104490916624169e+02 -5.3555015812220130e+00 -1.6801172438806415e+01 1.1445670857584400e+01\n", - " 52 0 -3.1981774419115203e+02 5.9586630943181625e+01 -5.3672391862140119e+00 -1.6813679249360643e+01 1.1446440063146630e+01\n", - " 1 -3.4446418819181679e+02 6.3896144699744156e+01 -5.3909452165125940e+00 -1.6835442074590343e+01 1.1444496858077750e+01\n", - " 2 -3.9444877143572546e+02 7.2910377804758781e+01 -5.4100558968370409e+00 -1.6811912280992711e+01 1.1401856384155671e+01\n", - " 3 -5.6284361711479494e+02 1.0452510697056626e+02 -5.3848666237977065e+00 -1.6793808662495511e+01 1.1408942038697802e+01\n", - " 53 0 -2.6599217344190112e+02 4.9449606946306794e+01 -5.3789526634638163e+00 -1.6819970866151444e+01 1.1441018202687626e+01\n", - " 1 -2.4829483121883322e+02 4.5868722736012010e+01 -5.4129438187016250e+00 -1.6815457447502776e+01 1.1402513628801151e+01\n", - " 2 -2.5568879008458231e+02 4.7243937409482122e+01 -5.4116238046911445e+00 -1.6801862909895235e+01 1.1390239105204085e+01\n", - " 3 -3.3528939055516162e+02 6.2501295919305072e+01 -5.3641613634327205e+00 -1.6815778430965402e+01 1.1451617067532680e+01\n", - " 54 0 -2.8870154121864374e+02 5.3795313686008981e+01 -5.3666541067806977e+00 -1.6804883818489145e+01 1.1438229711708450e+01\n", - " 1 -3.5168011301478606e+02 6.5212803519570571e+01 -5.3927117767136901e+00 -1.6808682709872212e+01 1.1415970933158517e+01\n", - " 2 -4.3123145499320401e+02 8.0128141269904120e+01 -5.3817774155223317e+00 -1.6812597633852125e+01 1.1430820218329794e+01\n", - " 3 -4.9985520761947976e+02 9.2987912764399184e+01 -5.3754561161547203e+00 -1.6792766534610742e+01 1.1417310418456024e+01\n", - " 55 0 -3.2700640887788148e+02 6.0997543168759933e+01 -5.3609683423602981e+00 -1.6824134684222681e+01 1.1463166341862379e+01\n", - " 1 -4.4990621767894714e+02 8.3802958655108128e+01 -5.3686710348637501e+00 -1.6806393568245813e+01 1.1437722533382058e+01\n", - " 2 -5.1764826039990999e+02 9.6151252982469330e+01 -5.3837716402461879e+00 -1.6820051976621777e+01 1.1436280336375589e+01\n", - " 3 -6.1040283191006813e+02 1.1379801516659543e+02 -5.3635567710522780e+00 -1.6797749049557279e+01 1.1434192278505002e+01\n", - " 56 0 -2.9829995413312002e+02 5.5575987845370129e+01 -5.3674120395505343e+00 -1.6813809575229779e+01 1.1446397535679244e+01\n", - " 1 -3.2859292692062149e+02 6.0987928158245232e+01 -5.3877771343538612e+00 -1.6805301650831378e+01 1.1417524516477513e+01\n", - " 2 -4.0877332532216076e+02 7.6059684749482969e+01 -5.3744445031636392e+00 -1.6824126672576362e+01 1.1449682169412727e+01\n", - " 3 -5.2397372527101072e+02 9.6762108086030025e+01 -5.4140521284404963e+00 -1.6828172166039515e+01 1.1414120037599019e+01\n", - " 57 0 -2.5293629901644968e+02 4.6921266624947961e+01 -5.3906717164390212e+00 -1.6804864684682620e+01 1.1414192968243597e+01\n", - " 1 -3.4500134088194204e+02 6.4249547705973811e+01 -5.3695538679688521e+00 -1.6820495641375071e+01 1.1450941773406214e+01\n", - " 2 -4.3944459886304861e+02 8.1748951219868971e+01 -5.3756188008547063e+00 -1.6807776755358361e+01 1.1432157954503655e+01\n", - " 3 -5.6522621197245485e+02 1.0523721616548026e+02 -5.3708866201376111e+00 -1.6789295942676869e+01 1.1418409322539258e+01\n", - " 58 0 -2.6522046511771538e+02 4.9186633712354215e+01 -5.3921175639793191e+00 -1.6798641651401123e+01 1.1406524087421801e+01\n", - " 1 -3.4548578429796873e+02 6.4310423401590384e+01 -5.3717175966509227e+00 -1.6794710323095803e+01 1.1422992726444884e+01\n", - " 2 -4.5230764078794306e+02 8.4051742040973210e+01 -5.3810897024807183e+00 -1.6817250727320719e+01 1.1436161024840001e+01\n", - " 3 -5.7366625086470822e+02 1.0668423775490584e+02 -5.3772360850751681e+00 -1.6840668832527097e+01 1.1463432747451927e+01\n", - " 59 0 -2.7864381481547071e+02 5.1841232502415131e+01 -5.3749495447220115e+00 -1.6813201288435021e+01 1.1438251743713009e+01\n", - " 1 -3.3135354249425535e+02 6.1659486007896000e+01 -5.3739088197373510e+00 -1.6813421310064182e+01 1.1439512490326830e+01\n", - " 2 -5.4489582320571537e+02 1.0177694540620368e+02 -5.3538300577595663e+00 -1.6805864443644158e+01 1.1452034385884591e+01\n", - " 3 -6.7508404027821859e+02 1.2562791209886343e+02 -5.3736787402897805e+00 -1.6789541627471369e+01 1.1415862887181591e+01\n", - " 60 0 -2.8359296335863786e+02 5.2831523049202623e+01 -5.3678289928661762e+00 -1.6801286999513966e+01 1.1433458006647790e+01\n", - " 1 -3.9083135514707010e+02 7.3077221501513549e+01 -5.3478233220420321e+00 -1.6806603159057886e+01 1.1458779837015854e+01\n", - " 2 -4.7963062284253323e+02 8.9502020207047266e+01 -5.3591505461330797e+00 -1.6797155404319941e+01 1.1438004858186863e+01\n", - " 3 -4.5219566206870161e+02 8.3861842870674749e+01 -5.3923338547783590e+00 -1.6816825066278483e+01 1.1424491211500124e+01\n", - " 61 0 -3.0719842021924723e+02 5.7318489444061626e+01 -5.3594829795235341e+00 -1.6813323882992435e+01 1.1453840903468903e+01\n", - " 1 -3.7928471703142003e+02 7.0370847622707814e+01 -5.3897163257235965e+00 -1.6811279550515593e+01 1.1421563224791996e+01\n", - " 2 -4.5416759259724978e+02 8.4626823555138188e+01 -5.3665099369238680e+00 -1.6805149763857745e+01 1.1438639826933878e+01\n", - " 3 -4.7966930939032221e+02 8.9161628786717145e+01 -5.3790327456725811e+00 -1.6811876238150610e+01 1.1432843492478026e+01\n", - " 62 0 -2.6155806542507145e+02 4.8665106659481928e+01 -5.3746616458773335e+00 -1.6818860924708474e+01 1.1444199278831141e+01\n", - " 1 -2.9468408714493683e+02 5.4586238148189523e+01 -5.3984170067983417e+00 -1.6837140466616958e+01 1.1438723459818616e+01\n", - " 2 -4.5221830359365077e+02 8.4192315962787433e+01 -5.3711212580750649e+00 -1.6803839248434471e+01 1.1432717990359409e+01\n", - " 3 -3.4037690803746921e+02 6.2743496619198851e+01 -5.4208844933562110e+00 -1.6759556574097140e+01 1.1338672080740928e+01\n", - " 63 0 -2.7118336380365298e+02 5.0415282826780064e+01 -5.3789935287339734e+00 -1.6807943844374833e+01 1.1428950315640860e+01\n", - " 1 -3.3868645858350800e+02 6.2993647757463563e+01 -5.3765200064155136e+00 -1.6791624353430109e+01 1.1415104347014591e+01\n", - " 2 -5.2416791292922744e+02 9.7759011122188824e+01 -5.3619093959756983e+00 -1.6796330419508369e+01 1.1434421023532671e+01\n", - " 3 -6.6326482043641079e+02 1.2320819412870530e+02 -5.3833174025942219e+00 -1.6802283695365471e+01 1.1418966292771248e+01\n", - " 64 0 -3.1060626115990431e+02 5.7945198103289258e+01 -5.3603548190755603e+00 -1.6797675994543816e+01 1.1437321175468258e+01\n", - " 1 -3.7481335752099022e+02 6.9777273892419444e+01 -5.3715626648195407e+00 -1.6804925568824906e+01 1.1433362904005365e+01\n", - " 2 -4.3700529262289677e+02 8.1198307913090019e+01 -5.3820052622634984e+00 -1.6757840215805906e+01 1.1375834953542409e+01\n", - " 3 -5.0634775096768897e+02 9.4017492703813630e+01 -5.3849131589170653e+00 -1.6808776690769566e+01 1.1423863531852497e+01\n", - " 65 0 -2.8020572601607199e+02 5.2107605590188108e+01 -5.3774436468293514e+00 -1.6814163426570335e+01 1.1436719779740981e+01\n", - " 1 -2.7127036085659824e+02 5.0092763258663112e+01 -5.4150916720341300e+00 -1.6799808380804492e+01 1.1384716708770364e+01\n", - " 2 -2.9999711097533412e+02 5.5404554165465228e+01 -5.4143291143012444e+00 -1.6843012716068984e+01 1.1428683601767741e+01\n", - " 3 -3.3429539699084040e+02 6.1994912617647088e+01 -5.3920272245460508e+00 -1.6865541093458685e+01 1.1473513868912631e+01\n", - " 66 0 -3.1299482937347528e+02 5.8410924383089665e+01 -5.3584575373057310e+00 -1.6806026904929961e+01 1.1447569367624229e+01\n", - " 1 -4.1414885198106123e+02 7.7141351516142919e+01 -5.3686654954491226e+00 -1.6808251957451745e+01 1.1439586462002621e+01\n", - " 2 -5.5337330501405700e+02 1.0319709700570967e+02 -5.3622760128864613e+00 -1.6814639835542867e+01 1.1452363822656411e+01\n", - " 3 -8.6999201447888379e+02 1.6203188624058183e+02 -5.3687889612532711e+00 -1.6809991226766630e+01 1.1441202265513359e+01\n", - " 67 0 -2.8661887808014853e+02 5.3418818367829303e+01 -5.3655141327326481e+00 -1.6803214881841534e+01 1.1437700749108885e+01\n", - " 1 -2.9906066006127543e+02 5.5456213780988087e+01 -5.3927448521849506e+00 -1.6815147430908510e+01 1.1422402578723558e+01\n", - " 2 -3.9359274370914432e+02 7.3253520752848615e+01 -5.3725433619082557e+00 -1.6828192209560431e+01 1.1455648847652176e+01\n", - " 3 -4.3842858311634774e+02 8.1683205144683583e+01 -5.3674362548469663e+00 -1.6820502272057176e+01 1.1453066017210208e+01\n", - " 68 0 -2.6702519047455542e+02 4.9700552460239294e+01 -5.3726197856585118e+00 -1.6795948312066621e+01 1.1423328526408110e+01\n", - " 1 -3.1472797913274769e+02 5.8308955744312783e+01 -5.3970224754251044e+00 -1.6785954823683404e+01 1.1388932348258296e+01\n", - " 2 -3.2638022451990935e+02 6.0464917501817879e+01 -5.3976943431174806e+00 -1.6799565467969089e+01 1.1401871124851608e+01\n", - " 3 -3.2654914886952076e+02 6.0350520191171341e+01 -5.4108800695690755e+00 -1.6781474044501593e+01 1.1370593974932516e+01\n", - " 69 0 -3.3776790688367004e+02 6.3178864180928613e+01 -5.3462058230642482e+00 -1.6820517222756052e+01 1.1474311399691805e+01\n", - " 1 -3.7422921886746792e+02 6.9641289651284438e+01 -5.3736973820936482e+00 -1.6802914455614669e+01 1.1429217073521025e+01\n", - " 2 -5.8438674812498277e+02 1.0886511634387404e+02 -5.3679875591530832e+00 -1.6814622734629985e+01 1.1446635175476906e+01\n", - " 3 -5.7002365036896947e+02 1.0524520949239204e+02 -5.4161158437368693e+00 -1.6855168695595243e+01 1.1439052851858371e+01\n", - " 70 0 -2.4217069881726769e+02 4.4875726082226883e+01 -5.3964679830104565e+00 -1.6802085607068204e+01 1.1405617624057749e+01\n", - " 1 -3.5898725400806052e+02 6.6974137408661235e+01 -5.3600813893465649e+00 -1.6805522639491009e+01 1.1445441250144444e+01\n", - " 2 -4.4148972384570823e+02 8.1914494874419006e+01 -5.3892216067549024e+00 -1.6801907033939653e+01 1.1412685427184748e+01\n", - " 3 -6.2941744151107798e+02 1.1700066978155706e+02 -5.3796632976570393e+00 -1.6829723794463920e+01 1.1450060496806877e+01\n", - " 71 0 -2.8768251727502457e+02 5.3686513016961122e+01 -5.3585122609750293e+00 -1.6812887244912790e+01 1.1454374983937758e+01\n", - " 1 -3.2051136576395015e+02 5.9722570261462600e+01 -5.3666678081060493e+00 -1.6819732092296373e+01 1.1453064284190321e+01\n", - " 2 -3.0258807020360700e+02 5.5839472828157334e+01 -5.4187889410294190e+00 -1.6804565591646583e+01 1.1385776650617164e+01\n", - " 3 -3.4588995211942142e+02 6.3958984665275459e+01 -5.4080797066548874e+00 -1.6851133288874770e+01 1.1443053582219878e+01\n", - " 72 0 -2.9321128577148579e+02 5.4659506936643822e+01 -5.3643161486925797e+00 -1.6805493374558026e+01 1.1441177225865447e+01\n", - " 1 -3.3952957019801636e+02 6.3218868156667149e+01 -5.3706555424009297e+00 -1.6821196926752293e+01 1.1450541384351364e+01\n", - " 2 -4.2358418545741824e+02 7.8859014216904797e+01 -5.3712850654010769e+00 -1.6812503512487819e+01 1.1441218447086742e+01\n", - " 3 -5.9770823629522488e+02 1.1132251063263173e+02 -5.3692013100724125e+00 -1.6834425030822008e+01 1.1465223720749597e+01\n", - " 73 0 -2.9469154380137297e+02 5.4821183381428980e+01 -5.3754491976166348e+00 -1.6798635930686000e+01 1.1423186733069365e+01\n", - " 1 -3.3242535590476928e+02 6.1640945373765078e+01 -5.3930129386580123e+00 -1.6812723274586361e+01 1.1419710335928348e+01\n", - " 2 -3.9902310384250342e+02 7.4313574660428401e+01 -5.3691853658378772e+00 -1.6832611933798997e+01 1.1463426567961122e+01\n", - " 3 -4.0105211732924937e+02 7.4273873388480510e+01 -5.3994167969135658e+00 -1.6778225007670240e+01 1.1378808210756681e+01\n", - " 74 0 -3.4473545923126613e+02 6.4342569552994348e+01 -5.3577546252052652e+00 -1.6817086370857226e+01 1.1459331745651960e+01\n", - " 1 -3.5063173089599826e+02 6.4959233430852720e+01 -5.3977127002766334e+00 -1.6802514767846780e+01 1.1404802067570149e+01\n", - " 2 -4.4027891214084923e+02 8.1922358164045377e+01 -5.3743231395002935e+00 -1.6794874307671165e+01 1.1420551168170871e+01\n", - " 3 -5.2648362606588637e+02 9.7681634445001691e+01 -5.3890947191132641e+00 -1.6800381071437755e+01 1.1411286352324492e+01\n", - " 75 0 -3.0029338593823900e+02 5.5907867292489293e+01 -5.3712371289546956e+00 -1.6809165659391777e+01 1.1437928530437080e+01\n", - " 1 -3.1378759970438443e+02 5.8063540763074606e+01 -5.4040811696850204e+00 -1.6785339568469201e+01 1.1381258398784178e+01\n", - " 2 -3.8916125622136241e+02 7.2451808332532508e+01 -5.3710079306389344e+00 -1.6782743342942272e+01 1.1411735412303337e+01\n", - " 3 -4.3584370829768540e+02 8.0819634151803058e+01 -5.3926574495442869e+00 -1.6808648737087605e+01 1.1415991287543319e+01\n", - " 76 0 -2.7981073310970254e+02 5.2133498749809768e+01 -5.3671954059246643e+00 -1.6807976279899869e+01 1.1440780873975207e+01\n", - " 1 -3.0198355530476601e+02 5.6057307160081315e+01 -5.3868693741572526e+00 -1.6817098017031771e+01 1.1430228642874516e+01\n", - " 2 -3.4337205456546269e+02 6.3683373328822810e+01 -5.3918450112937597e+00 -1.6815534289944342e+01 1.1423689278650578e+01\n", - " 3 -4.5073375919252737e+02 8.3904830629890171e+01 -5.3720063955878201e+00 -1.6817678956181965e+01 1.1445672560594140e+01\n", - " 77 0 -2.9084864918509840e+02 5.4224377698464160e+01 -5.3637987243956866e+00 -1.6808424189826610e+01 1.1444625465430921e+01\n", - " 1 -3.4233305071127904e+02 6.3600386249006156e+01 -5.3825674620832036e+00 -1.6807904767037073e+01 1.1425337304953873e+01\n", - " 2 -4.6320206336521676e+02 8.6036865783327912e+01 -5.3837390203081972e+00 -1.6794415897916902e+01 1.1410676877608708e+01\n", - " 3 -5.0517312751880661e+02 9.3755672580953004e+01 -5.3864650667475518e+00 -1.6780297742196993e+01 1.1393832675449447e+01\n", - " 78 0 -3.0163056087523142e+02 5.6175684576948690e+01 -5.3694159954901179e+00 -1.6808317622591449e+01 1.1438901627101334e+01\n", - " 1 -3.8417753431808671e+02 7.1543518985136359e+01 -5.3699554623274057e+00 -1.6798045475772685e+01 1.1428090013445280e+01\n", - " 2 -3.9741744751308312e+02 7.3558068028652485e+01 -5.4027503382534796e+00 -1.6801734006491053e+01 1.1398983668237571e+01\n", - " 3 -4.7942025192837588e+02 8.8417349207498347e+01 -5.4223009052469955e+00 -1.6774950133398075e+01 1.1352649228151082e+01\n", - " 79 0 -2.9615577842135667e+02 5.5279759316344659e+01 -5.3574532373070936e+00 -1.6813721265475159e+01 1.1456268028168063e+01\n", - " 1 -3.7996736421049735e+02 7.0844921022713820e+01 -5.3633192789905033e+00 -1.6811978570001752e+01 1.1448659291011253e+01\n", - " 2 -4.9569707381753653e+02 9.2543873682916271e+01 -5.3558298801757038e+00 -1.6808445073269858e+01 1.1452615193094157e+01\n", - " 3 -7.4573429960187434e+02 1.3929379246322259e+02 -5.3536857451146744e+00 -1.6817899367128870e+01 1.1464213622014196e+01\n", - " 80 0 -2.8016567892727170e+02 5.2228135163395500e+01 -5.3642742992838439e+00 -1.6799840614873560e+01 1.1435566315589718e+01\n", - " 1 -3.7206526147259495e+02 6.9119652334586988e+01 -5.3829511604440103e+00 -1.6822602417837722e+01 1.1439651257393713e+01\n", - " 2 -4.1980889328394267e+02 7.7880409633669331e+01 -5.3900970145573046e+00 -1.6807581979579243e+01 1.1417484965021940e+01\n", - " 3 -5.2535972724884505e+02 9.7786884920757927e+01 -5.3723372016801436e+00 -1.6803621843245697e+01 1.1431284641565552e+01\n", - " 81 0 -3.2246270113353955e+02 6.0231191242199401e+01 -5.3536892299407191e+00 -1.6813029408099126e+01 1.1459340178158405e+01\n", - " 1 -3.3609545031405423e+02 6.2326418346663750e+01 -5.3925041338176793e+00 -1.6793923415614962e+01 1.1401419281797278e+01\n", - " 2 -3.6406088748191291e+02 6.7337445779722898e+01 -5.4063762285763692e+00 -1.6808355140820563e+01 1.1401978912244196e+01\n", - " 3 -3.5090665437980380e+02 6.4868126722482771e+01 -5.4094973326964562e+00 -1.6776131057154515e+01 1.1366633724458060e+01\n", - " 82 0 -2.8680325414728259e+02 5.3554913878736819e+01 -5.3552659028477843e+00 -1.6803412185452011e+01 1.1448146282604229e+01\n", - " 1 -2.9426850265191933e+02 5.4737046759042542e+01 -5.3760447703787744e+00 -1.6808721017533443e+01 1.1432676247154669e+01\n", - " 2 -3.5940392516365785e+02 6.6856913432796546e+01 -5.3754355614981906e+00 -1.6806560279915189e+01 1.1431124718416999e+01\n", - " 3 -4.0434526129204318e+02 7.5055557166203741e+01 -5.3871011312933259e+00 -1.6838078495012709e+01 1.1450977363719385e+01\n", - " 83 0 -3.3605744995220738e+02 6.2886542756025818e+01 -5.3438726841761355e+00 -1.6814079557652271e+01 1.1470206873476133e+01\n", - " 1 -4.0167936164143288e+02 7.4920363431083459e+01 -5.3613954952889173e+00 -1.6814284114656772e+01 1.1452888619367855e+01\n", - " 2 -4.1339776067988231e+02 7.6851342353504236e+01 -5.3791806367990294e+00 -1.6818303716682383e+01 1.1439123079883354e+01\n", - " 3 -3.8856136535877761e+02 7.1432256827557296e+01 -5.4389616252039295e+00 -1.6804590728045955e+01 1.1365629102842025e+01\n", - " 84 0 -3.2082084626281613e+02 5.9795562913355710e+01 -5.3652912895531228e+00 -1.6818915962017215e+01 1.1453624672464091e+01\n", - " 1 -3.4994295352730444e+02 6.5055892760107298e+01 -5.3791787179254440e+00 -1.6810341487587248e+01 1.1431162769661805e+01\n", - " 2 -3.9351103866211901e+02 7.3299682247208793e+01 -5.3684201369499549e+00 -1.6788094222524986e+01 1.1419674085575028e+01\n", - " 3 -4.4498593648047103e+02 8.2716572837180323e+01 -5.3793138669488831e+00 -1.6795255180945059e+01 1.1415941313996173e+01\n", - " 85 0 -3.2185099815680803e+02 6.0109216995135974e+01 -5.3544232821457767e+00 -1.6804938909301399e+01 1.1450515627155623e+01\n", - " 1 -2.8949141793916618e+02 5.3356572027703137e+01 -5.4254422491156484e+00 -1.6781387526654118e+01 1.1355945277538467e+01\n", - " 2 -3.2855670589253469e+02 6.0800873333651204e+01 -5.4036724658766762e+00 -1.6774622790160780e+01 1.1370950324284101e+01\n", - " 3 -4.3708898287301599e+02 8.1260341561953936e+01 -5.3791025238424135e+00 -1.6800011978262503e+01 1.1420909454420091e+01\n", - " 86 0 -3.1048336475608198e+02 5.7855628626593344e+01 -5.3664995841691709e+00 -1.6826459086660382e+01 1.1459959502491213e+01\n", - " 1 -3.5743890767137708e+02 6.6333044629680543e+01 -5.3885543040430512e+00 -1.6831527970571262e+01 1.1442973666528209e+01\n", - " 2 -4.0620365378843690e+02 7.5455365119187803e+01 -5.3833242368234036e+00 -1.6785641758935942e+01 1.1402317522112547e+01\n", - " 3 -5.3272164512035715e+02 9.9229914450416103e+01 -5.3686156286172828e+00 -1.6797538279581779e+01 1.1428922650964491e+01\n", - " 87 0 -3.2261894637477985e+02 6.0171809211758678e+01 -5.3615315607669523e+00 -1.6821894198368955e+01 1.1460362637602001e+01\n", - " 1 -4.0917233875085236e+02 7.6120761059318269e+01 -5.3753307772482630e+00 -1.6804855208844167e+01 1.1429524431595908e+01\n", - " 2 -5.8127386756033411e+02 1.0805746440258157e+02 -5.3792291732505646e+00 -1.6800790910725691e+01 1.1421561737475132e+01\n", - " 3 -6.8122060150583764e+02 1.2617577264989835e+02 -5.3971804786331319e+00 -1.6799496956744889e+01 1.1402316478111754e+01\n", - " 88 0 -3.3041296798216456e+02 6.1637917725062522e+01 -5.3605527499897523e+00 -1.6794146227740889e+01 1.1433593477751138e+01\n", - " 1 -3.6179399499865690e+02 6.7119784912964136e+01 -5.3901424548615324e+00 -1.6795113687915038e+01 1.1404971233053507e+01\n", - " 2 -5.2689413670690863e+02 9.7739901492695367e+01 -5.3902413428518461e+00 -1.6800724433692245e+01 1.1410483090840399e+01\n", - " 3 -6.8166919981358876e+02 1.2689215293491647e+02 -5.3715007702964259e+00 -1.6793719788602264e+01 1.1422219018305837e+01\n", - " 89 0 -2.6987481317777309e+02 5.0230109641033586e+01 -5.3727674553096545e+00 -1.6804996858855912e+01 1.1432229403546261e+01\n", - " 1 -3.6891213415114532e+02 6.8843044163223595e+01 -5.3587585636346802e+00 -1.6823578656434542e+01 1.1464820092799863e+01\n", - " 2 -4.4614826615512834e+02 8.2987525974264514e+01 -5.3755366808567455e+00 -1.6816490793898886e+01 1.1440954113042137e+01\n", - " 3 -6.6375947195465847e+02 1.2369968755236235e+02 -5.3658775687300384e+00 -1.6817338269023594e+01 1.1451460700293552e+01\n", - " 90 0 -3.0259333091126553e+02 5.6353069261790651e+01 -5.3695687992398327e+00 -1.6803963742419377e+01 1.1434394943179543e+01\n", - " 1 -3.5314712715034511e+02 6.5504414649395841e+01 -5.3912106082357578e+00 -1.6802036033738059e+01 1.1410825425502299e+01\n", - " 2 -3.7526647346581404e+02 6.9675847531742079e+01 -5.3855503371067357e+00 -1.6796669699845442e+01 1.1411119362738706e+01\n", - " 3 -4.0808451428269376e+02 7.5615490454657035e+01 -5.3959788378485856e+00 -1.6823265776976793e+01 1.1427286939128205e+01\n", - " 91 0 -3.1672672157206233e+02 5.9083009305203852e+01 -5.3607050734328432e+00 -1.6806536566104651e+01 1.1445831492671809e+01\n", - " 1 -4.2982642735870826e+02 8.0070598306685895e+01 -5.3680021238649571e+00 -1.6818545415316756e+01 1.1450543291451798e+01\n", - " 2 -5.0170806470515220e+02 9.3382637654703004e+01 -5.3725949292131530e+00 -1.6822493835619252e+01 1.1449898906406098e+01\n", - " 3 -7.1861456496338292e+02 1.3354240266437264e+02 -5.3811290905117435e+00 -1.6837257194617486e+01 1.1456128104105744e+01\n", - " 92 0 -3.3441853461171411e+02 6.2371449261278968e+01 -5.3616996328240925e+00 -1.6805562289833688e+01 1.1443862657009603e+01\n", - " 1 -3.4007021743589979e+02 6.2915520865319607e+01 -5.4053416635944940e+00 -1.6825075409833698e+01 1.1419733746239201e+01\n", - " 2 -4.1210317621617287e+02 7.6486453104729065e+01 -5.3883275414608125e+00 -1.6826457145759747e+01 1.1438129604298940e+01\n", - " 3 -6.6574458958898219e+02 1.2385602694560831e+02 -5.3741525567495163e+00 -1.6844116843098650e+01 1.1469964286349139e+01\n", - " 93 0 -2.9318169794654079e+02 5.4630270347054221e+01 -5.3666651891403507e+00 -1.6814523344159554e+01 1.1447858155019203e+01\n", - " 1 -3.6033049607404695e+02 6.6998791623441704e+01 -5.3782402052234914e+00 -1.6808406660842984e+01 1.1430166455619487e+01\n", - " 2 -4.7101233693752823e+02 8.7592629843027979e+01 -5.3774539164348125e+00 -1.6804559270206973e+01 1.1427105353772161e+01\n", - " 3 -5.5047657331032531e+02 1.0178732103079675e+02 -5.4081849411064624e+00 -1.6797517397861913e+01 1.1389332456755456e+01\n", - " 94 0 -2.6305860913284931e+02 4.8803116856982612e+01 -5.3899797218797127e+00 -1.6809456611846446e+01 1.1419476889966733e+01\n", - " 1 -2.6224929573666503e+02 4.8493329643823316e+01 -5.4078611238117249e+00 -1.6831376893148477e+01 1.1423515769336749e+01\n", - " 2 -3.2176732832438699e+02 6.0047941625181068e+01 -5.3577727983374421e+00 -1.6801888576314887e+01 1.1444115777977450e+01\n", - " 3 -4.5448851391616859e+02 8.4732980742073991e+01 -5.3638020460992086e+00 -1.6853184014385317e+01 1.1489381968286112e+01\n", - " 95 0 -3.1586823281352486e+02 5.8927576357850526e+01 -5.3602355190556805e+00 -1.6829200497752634e+01 1.1468964978696949e+01\n", - " 1 -4.2473289213303809e+02 7.9277296545176824e+01 -5.3575519303330150e+00 -1.6817056971234468e+01 1.1459505040901451e+01\n", - " 2 -4.5669192761730670e+02 8.4757343709648069e+01 -5.3873381456517677e+00 -1.6787853313639904e+01 1.1400515167988134e+01\n", - " 3 -5.1223578706393516e+02 9.5236279743014293e+01 -5.3782987399005444e+00 -1.6809503206945386e+01 1.1431204467044843e+01\n", - " 96 0 -2.7627853092490483e+02 5.1466708803912049e+01 -5.3680988175261639e+00 -1.6803161366694482e+01 1.1435062549168318e+01\n", - " 1 -2.6245379819044655e+02 4.8576662211842795e+01 -5.4028689628101070e+00 -1.6785661460806008e+01 1.1382792497995899e+01\n", - " 2 -3.7050755412826561e+02 6.8813818316327669e+01 -5.3841530981571744e+00 -1.6784384573713190e+01 1.1400231475556019e+01\n", - " 3 -5.2624984237394960e+02 9.8038936557410906e+01 -5.3677639869537561e+00 -1.6778123878176725e+01 1.1410359891222962e+01\n", - " 97 0 -3.2611132558683255e+02 6.0877342587697690e+01 -5.3568792701467123e+00 -1.6806983047576836e+01 1.1450103777430121e+01\n", - " 1 -4.0146957512390810e+02 7.4717821051338476e+01 -5.3730927257914800e+00 -1.6807083393056274e+01 1.1433990667264796e+01\n", - " 2 -6.1153431088085847e+02 1.1414172034916504e+02 -5.3577233729537479e+00 -1.6810323683526367e+01 1.1452600310572615e+01\n", - " 3 -4.7301891706204390e+02 8.7091175196437874e+01 -5.4314982999058579e+00 -1.6804424933389260e+01 1.1372926633483400e+01\n", - " 98 0 -3.3912267655354583e+02 6.3314785004096684e+01 -5.3561651592307618e+00 -1.6808781971292561e+01 1.1452616812061800e+01\n", - " 1 -4.6581406107569001e+02 8.6588003272031287e+01 -5.3794508258660922e+00 -1.6821165435801877e+01 1.1441714609935786e+01\n", - " 2 -6.3768319972850531e+02 1.1843091820258188e+02 -5.3844239981907682e+00 -1.6801670436309742e+01 1.1417246438118974e+01\n", - " 3 -7.2314371942497041e+02 1.3415633375969094e+02 -5.3889869353955140e+00 -1.6806535705981769e+01 1.1417548770586254e+01\n", - " 99 0 -3.1127670919227717e+02 5.8083107967760974e+01 -5.3591592072290606e+00 -1.6795351042786862e+01 1.1436191835557802e+01\n", - " 1 -3.6805548452995350e+02 6.8404798607860897e+01 -5.3802730784197257e+00 -1.6803676635565512e+01 1.1423403557145791e+01\n", - " 2 -4.5379789758854429e+02 8.4406779461239680e+01 -5.3760520696595471e+00 -1.6829113573283124e+01 1.1453061503623575e+01\n", - " 3 -7.5339057517761898e+02 1.4102817860161360e+02 -5.3423012949799356e+00 -1.6809608008219218e+01 1.1467306713239285e+01\n", - "\n", - "Energy statistics at time 1.5:\n", - " Energy: -5.36446560e+00+0.00000000e+00j +- 1.09498852e-03\n", - "\n", - "Energy statistics at time 3.0:\n", - " Energy: -5.38121105e+00+0.00000000e+00j +- 1.58990178e-03\n", - "\n", - "Energy statistics at time 4.5:\n", - " Energy: -5.38156727e+00+0.00000000e+00j +- 1.64655610e-03\n", - "\n", - "Energy statistics at time 6.0:\n", - " Energy: -5.38297860e+00+0.00000000e+00j +- 2.04412838e-03\n" - ] - } - ], + "outputs": [], "source": [ "from ipie.addons.free_projection.qmc.calc import build_fpafqmc_driver\n", "from ipie.config import MPI\n", @@ -619,497 +117,9 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "# Note: batched not specified. Setting to default value of True.\n", - "# MPIHandler detected 1 groups with 1 members each\n", - "# Parsing input options for systems.Generic.\n", - "# Number of alpha electrons: 5\n", - "# Number of beta electrons: 5\n", - "# Setting integrals to hamiltonian.h5.\n", - "# Note: symmetry not specified. Setting to default value of True.\n", - "# Have shared memory: True\n", - "# Time to read integrals: 0.001227\n", - "# Time to pack Cholesky vectors: 0.000163\n", - "# Number of orbitals: 10\n", - "# Approximate memory required by Cholesky vectors 0.000020 GB\n", - "# Approximate memory required by packed Cholesky vectors 0.000011 GB\n", - "# Approximate memory required total 0.000031 GB\n", - "# Number of Cholesky vectors: 27\n", - "# Number of fields: 27\n", - "# Finished setting up GenericRealChol object.\n", - "# random seed is 41100801\n", - "QMCParams(num_walkers=100, total_num_walkers=100, timestep=0.005, num_steps_per_block=25, num_blocks=1000, num_stblz=5, pop_control_freq=5, rng_seed=41100801)\n", - "# Using pair_branch population control algorithm.\n", - "# target weight is 100\n", - "# total weight is 100\n", - "# ipie version: 0.7.1.dev0\n", - "# Git hash: e4163010b903af9fcab8f8f4180e4b1d18c7a46d-dirty.\n", - "# Git branch: develop.\n", - "# Found uncommitted changes and/or untracked files.\n", - "# Modified : ipie/analysis/blocking.py\n", - "# Modified : ipie/analysis/extraction.py\n", - "# Modified : ipie/propagation/free_propagation.py\n", - "# Modified : ipie/propagation/tests/test_generic.py\n", - "# Modified : ipie/qmc/calc.py\n", - "# Modified : ipie/qmc/options.py\n", - "# Modified : ipie/qmc/tests/test_afqmc_single_det_batch.py\n", - "# Modified : ipie/utils/testing.py\n", - "# Modified : ipie/walkers/base_walkers.py\n", - "# Modified : ipie/walkers/tests/test_single_det_uhf.py\n", - "# Modified : ipie/walkers/uhf_walkers.py\n", - "# Calculation uuid: cbc37efc-d12e-11ee-a4b0-f678500c90cd.\n", - "# Approximate memory available per node: 16.0000 GB.\n", - "# Running on 1 MPI rank.\n", - "# Root processor name: MacBook-Air-500\n", - "# Python interpreter: 3.11.5 (main, Sep 11 2023, 08:19:27) [Clang 14.0.6 ]\n", - "# Using numpy v1.25.2 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/numpy.\n", - "# - BLAS lib: openblas64_ openblas64_\n", - "# - BLAS dir: /usr/local/lib\n", - "# Using scipy v1.10.1 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/scipy.\n", - "# Using h5py v3.9.0 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/h5py.\n", - "# Using mpi4py v3.1.4 from: /Users/ankitmahajan/miniconda3/envs/py311/lib/python3.11/site-packages/mpi4py.\n", - "# - mpicc: /Users/ankitmahajan/miniconda3/envs/py311/bin/mpicc\n", - "# Package cupy not found.\n", - "# MPI communicator : \n", - "# Available memory on the node is 16.000 GB\n", - "# Setting up estimator object.\n", - "# Writing estimator data to estimates.0.h5\n", - "# Finished settting up estimator object.\n", - " Block Weight WeightFactor HybridEnergy ENumer EDenom ETotal E1Body E2Body\n", - " 0 1.0000000000000000e+02 1.0000000000000000e+02 0.0000000000000000e+00 -5.2562812924896775e+02 1.0000000000000000e+02 -5.2562812924896773e+00 -1.6806346430770070e+01 1.1550065138280390e+01\n", - " 1 1.0233230732089780e+02 1.0503324920147141e+02 -2.3893903008095756e+00 -5.2799970569641800e+02 1.0000000000000001e+02 -5.2799970569641790e+00 -1.6805728130086028e+01 1.1525731073121850e+01\n", - " 2 1.0003309224580626e+02 1.0106220029088173e+02 -2.4235408437373080e+00 -5.2993465174639243e+02 1.0000000000000001e+02 -5.2993465174639232e+00 -1.6806798800585526e+01 1.1507452283121598e+01\n", - " 3 9.9979009933633662e+01 9.9995196868309321e+01 -2.4040566440689308e+00 -5.3105751076316608e+02 1.0000000000000003e+02 -5.3105751076316592e+00 -1.6807906117597707e+01 1.1497331009966050e+01\n", - " 4 1.0003053082685588e+02 1.0004479823298736e+02 -2.4415339397342053e+00 -5.3208802632361471e+02 9.9999999999999986e+01 -5.3208802632361483e+00 -1.6807116148492081e+01 1.1486235885255937e+01\n", - " 5 1.0000070019370369e+02 1.0003453858968047e+02 -2.4483953164666832e+00 -5.3299474877515365e+02 9.9999999999999972e+01 -5.3299474877515385e+00 -1.6807144850438249e+01 1.1477197362686713e+01\n", - " 6 1.0000835273605213e+02 9.9962201363950186e+01 -2.4468766608634533e+00 -5.3411537270730162e+02 1.0000000000000000e+02 -5.3411537270730163e+00 -1.6806026723050401e+01 1.1464872995977387e+01\n", - " 7 1.0000038299233280e+02 1.0002838251190610e+02 -2.4498422547600955e+00 -5.3389840326401452e+02 1.0000000000000001e+02 -5.3389840326401448e+00 -1.6808270931926437e+01 1.1469286899286294e+01\n", - " 8 1.0000352819803197e+02 1.0000390762375109e+02 -2.4582653163721773e+00 -5.3443526211619223e+02 1.0000000000000000e+02 -5.3443526211619226e+00 -1.6811287025095783e+01 1.1466934403933859e+01\n", - " 9 1.0000775803233138e+02 9.9985814288980535e+01 -2.4602364211846988e+00 -5.3443515295344719e+02 9.9999999999999972e+01 -5.3443515295344737e+00 -1.6813638794876109e+01 1.1469287265341631e+01\n", - " 10 1.0001657521910140e+02 1.0005894706148403e+02 -2.4808953652449621e+00 -5.3524841757166917e+02 1.0000000000000000e+02 -5.3524841757166914e+00 -1.6809809851281251e+01 1.1457325675564560e+01\n", - " 11 9.9971141451337246e+01 9.9933820127136187e+01 -2.4654971053938142e+00 -5.3514916047180407e+02 9.9999999999999986e+01 -5.3514916047180421e+00 -1.6805452561003346e+01 1.1453960956285307e+01\n", - " 12 1.0001504743107584e+02 1.0000492440239401e+02 -2.4795602383453699e+00 -5.3649980116089910e+02 9.9999999999999986e+01 -5.3649980116089919e+00 -1.6802924265312441e+01 1.1437926253703452e+01\n", - " 13 1.0001923474193113e+02 1.0003702715415339e+02 -2.4978638329776848e+00 -5.3652239528629480e+02 1.0000000000000000e+02 -5.3652239528629480e+00 -1.6807249451825477e+01 1.1442025498962524e+01\n", - " 14 1.0000042895975686e+02 1.0001139924793212e+02 -2.5042843382904132e+00 -5.3708020109934841e+02 9.9999999999999986e+01 -5.3708020109934855e+00 -1.6807860788267988e+01 1.1437058777274499e+01\n", - " 15 9.9968296907066730e+01 9.9935392872122307e+01 -2.4822095254224164e+00 -5.3705513876775365e+02 1.0000000000000000e+02 -5.3705513876775361e+00 -1.6811828323121883e+01 1.1441276935444353e+01\n", - " 16 9.9995165636922863e+01 9.9994591361464970e+01 -2.4789649979400825e+00 -5.3760925404967827e+02 1.0000000000000001e+02 -5.3760925404967823e+00 -1.6810647480816431e+01 1.1434554940319652e+01\n", - " 17 1.0001184677854509e+02 1.0001466731592556e+02 -2.5060575251898474e+00 -5.3785927101359653e+02 1.0000000000000000e+02 -5.3785927101359654e+00 -1.6814010723555516e+01 1.1435418013419548e+01\n", - " 18 1.0000707528899544e+02 1.0004350407547741e+02 -2.5282385381220913e+00 -5.3698818548931320e+02 1.0000000000000001e+02 -5.3698818548931309e+00 -1.6814438633547315e+01 1.1444556778654185e+01\n", - " 19 9.9961852345489987e+01 9.9897583868590502e+01 -2.4901897952122471e+00 -5.3734562549036525e+02 1.0000000000000000e+02 -5.3734562549036529e+00 -1.6814666216599697e+01 1.1441209961696044e+01\n", - " 20 9.9983897364317983e+01 9.9973018555080984e+01 -2.4956468430033207e+00 -5.3879460046474128e+02 1.0000000000000001e+02 -5.3879460046474117e+00 -1.6811289480626595e+01 1.1423343475979184e+01\n", - " 21 9.9992009477542055e+01 1.0001288292513686e+02 -2.4990858862772294e+00 -5.3733449825033176e+02 9.9999999999999957e+01 -5.3733449825033199e+00 -1.6806364623668877e+01 1.1433019641165556e+01\n", - " 22 9.9968582074403500e+01 9.9896073458101100e+01 -2.4657780482341818e+00 -5.3762248925820529e+02 1.0000000000000003e+02 -5.3762248925820515e+00 -1.6807590311203437e+01 1.1431365418621388e+01\n", - " 23 9.9995208098557768e+01 9.9962938483789642e+01 -2.4649373366561509e+00 -5.3669679404739929e+02 9.9999999999999986e+01 -5.3669679404739936e+00 -1.6806409264251844e+01 1.1439441323777851e+01\n", - " 24 1.0002906288785618e+02 1.0004957110205193e+02 -2.5024009628067017e+00 -5.3671412737338517e+02 1.0000000000000000e+02 -5.3671412737338517e+00 -1.6809521567477468e+01 1.1442380293743616e+01\n", - " 25 9.9980733268648436e+01 9.9969100023930523e+01 -2.4938470895942686e+00 -5.3710578279000345e+02 1.0000000000000001e+02 -5.3710578279000334e+00 -1.6809077203791258e+01 1.1438019375891230e+01\n", - " 26 9.9969304518766691e+01 9.9958316404041057e+01 -2.4840857283780569e+00 -5.3681642053354108e+02 1.0000000000000000e+02 -5.3681642053354111e+00 -1.6806902606373782e+01 1.1438738401038373e+01\n", - " 27 9.9998980136015746e+01 1.0000131412071870e+02 -2.4951389427308679e+00 -5.3817235164763372e+02 9.9999999999999972e+01 -5.3817235164763391e+00 -1.6808277097128030e+01 1.1426553580651690e+01\n", - " 28 1.0002082460806011e+02 1.0005643697080860e+02 -2.5201477928704987e+00 -5.3752287338066446e+02 1.0000000000000000e+02 -5.3752287338066447e+00 -1.6809970167726902e+01 1.1434741433920259e+01\n", - " 29 9.9951399125716279e+01 9.9887817052001097e+01 -2.4773355159755059e+00 -5.3736900282846716e+02 1.0000000000000001e+02 -5.3736900282846705e+00 -1.6810363232246040e+01 1.1436673203961371e+01\n", - " 30 9.9988297760684787e+01 9.9977439453460718e+01 -2.4854512971393823e+00 -5.3819307211509920e+02 1.0000000000000000e+02 -5.3819307211509919e+00 -1.6810169741488206e+01 1.1428239020337220e+01\n", - " 31 1.0001098467192824e+02 1.0002263937880514e+02 -2.5090094388315944e+00 -5.3762262239203153e+02 9.9999999999999986e+01 -5.3762262239203160e+00 -1.6806557219179638e+01 1.1430330995259322e+01\n", - " 32 1.0000907359340860e+02 1.0001468565600632e+02 -2.5144046482150708e+00 -5.3725710527631986e+02 9.9999999999999972e+01 -5.3725710527632007e+00 -1.6808277880758233e+01 1.1435706827995032e+01\n", - " 33 9.9961009650346369e+01 9.9900283881279194e+01 -2.4999391575536980e+00 -5.4201603313363296e+02 9.9999999999999986e+01 -5.4201603313363309e+00 -1.6811172022540852e+01 1.1391011691204524e+01\n", - " 34 9.9986687037524845e+01 9.9963720305973411e+01 -2.4943453746435229e+00 -5.3786975472782206e+02 9.9999999999999986e+01 -5.3786975472782217e+00 -1.6816258232504062e+01 1.1437560685225840e+01\n", - " 35 9.9986500754984775e+01 9.9997668800652988e+01 -2.4960295226648790e+00 -5.3886982549995889e+02 9.9999999999999986e+01 -5.3886982549995901e+00 -1.6818776490581396e+01 1.1430078235581805e+01\n", - " 36 9.9989084945344516e+01 9.9974033646829668e+01 -2.5151776417604457e+00 -5.3875769258470700e+02 1.0000000000000000e+02 -5.3875769258470703e+00 -1.6820457049742409e+01 1.1432880123895336e+01\n", - " 37 9.9958681485947181e+01 9.9957720940068427e+01 -2.4834460987040354e+00 -5.3789551005351598e+02 9.9999999999999986e+01 -5.3789551005351610e+00 -1.6823096380310389e+01 1.1444141279775224e+01\n", - " 38 1.0001721240525272e+02 9.9979852983281830e+01 -2.5024641014407214e+00 -5.3868792652413708e+02 9.9999999999999986e+01 -5.3868792652413715e+00 -1.6819965835997674e+01 1.1433086570756307e+01\n", - " 39 9.9965790674894350e+01 9.9989002473171425e+01 -2.4940782758875084e+00 -5.3913306626650979e+02 1.0000000000000000e+02 -5.3913306626650979e+00 -1.6821593373421877e+01 1.1430262710756780e+01\n", - " 40 1.0001793530742427e+02 9.9975915472154668e+01 -2.5137821110645371e+00 -5.3896433236669054e+02 1.0000000000000000e+02 -5.3896433236669052e+00 -1.6822001555806491e+01 1.1432358232139581e+01\n", - " 41 1.0001263160998892e+02 1.0002324345421181e+02 -2.5287985814856691e+00 -5.3906283742877076e+02 1.0000000000000001e+02 -5.3906283742877070e+00 -1.6817794358889081e+01 1.1427165984601377e+01\n", - " 42 9.9998874494972043e+01 9.9980502014718098e+01 -2.5330421482795926e+00 -5.3820755448985631e+02 1.0000000000000001e+02 -5.3820755448985622e+00 -1.6813271744813537e+01 1.1431196199914973e+01\n", - " 43 9.9987426166252817e+01 9.9981128045490721e+01 -2.5261610620921306e+00 -5.3784739423639758e+02 1.0000000000000000e+02 -5.3784739423639758e+00 -1.6818435935475790e+01 1.1439961993111815e+01\n", - " 44 9.9990972700895497e+01 9.9968138387457401e+01 -2.5273852183644494e+00 -5.3774994079216015e+02 1.0000000000000001e+02 -5.3774994079216007e+00 -1.6816974219385369e+01 1.1439474811463770e+01\n", - " 45 9.9946054120050448e+01 9.9886358939493348e+01 -2.4845853720505851e+00 -5.3699671998705458e+02 1.0000000000000001e+02 -5.3699671998705449e+00 -1.6822713473289564e+01 1.1452746273419020e+01\n", - " 46 1.0000859381529767e+02 1.0000617613042256e+02 -2.5020721145078628e+00 -5.3644749444783224e+02 1.0000000000000003e+02 -5.3644749444783209e+00 -1.6821150508799789e+01 1.1456675564321463e+01\n", - " 47 9.9992292512414551e+01 9.9974701421454299e+01 -2.5085072722356436e+00 -5.3713311431417958e+02 1.0000000000000001e+02 -5.3713311431417949e+00 -1.6825980827555316e+01 1.1454649684413521e+01\n", - " 48 9.9989278812081835e+01 9.9997694985177645e+01 -2.5088430015202210e+00 -5.3709964507041593e+02 1.0000000000000001e+02 -5.3709964507041583e+00 -1.6824390791065536e+01 1.1453394340361379e+01\n", - " 49 9.9979300971392135e+01 9.9965588251458655e+01 -2.5029038676726576e+00 -5.3747898755092194e+02 9.9999999999999986e+01 -5.3747898755092205e+00 -1.6824224222577520e+01 1.1449434347068296e+01\n", - " 50 9.9979826528915197e+01 9.9936890342513450e+01 -2.4904613025099969e+00 -5.3759623850776529e+02 1.0000000000000001e+02 -5.3759623850776519e+00 -1.6828145417957600e+01 1.1452183032879949e+01\n", - " 51 1.0002558857440013e+02 1.0002588316581527e+02 -2.5139868683362767e+00 -5.3821173904488762e+02 9.9999999999999986e+01 -5.3821173904488768e+00 -1.6830874226021539e+01 1.1448756835572663e+01\n", - " 52 9.9983597514152805e+01 9.9963566430464198e+01 -2.5046329809304377e+00 -5.3841072967109164e+02 1.0000000000000000e+02 -5.3841072967109165e+00 -1.6823705833958499e+01 1.1439598537247585e+01\n", - " 53 9.9979502184971551e+01 9.9942639659196558e+01 -2.5030329829102897e+00 -5.3801174734639869e+02 1.0000000000000001e+02 -5.3801174734639865e+00 -1.6827938372590562e+01 1.1447820899126583e+01\n", - " 54 9.9959445834937597e+01 9.9938345845335277e+01 -2.4775305548554654e+00 -5.3732267298023100e+02 1.0000000000000000e+02 -5.3732267298023100e+00 -1.6824563818305180e+01 1.1451337088502870e+01\n", - " 55 1.0001380526958413e+02 1.0003828049629234e+02 -2.5002771452224488e+00 -5.3697052332314240e+02 1.0000000000000000e+02 -5.3697052332314241e+00 -1.6828343375843364e+01 1.1458638142611937e+01\n", - " 56 9.9980810403945725e+01 9.9943337575389961e+01 -2.4890430169348576e+00 -5.3742927341211271e+02 1.0000000000000001e+02 -5.3742927341211262e+00 -1.6825593990981439e+01 1.1451301256860313e+01\n", - " 57 1.0000607370779736e+02 9.9993051544210999e+01 -2.5107810236989048e+00 -5.3837871670269453e+02 1.0000000000000001e+02 -5.3837871670269442e+00 -1.6832433290392821e+01 1.1448646123365871e+01\n", - " 58 9.9965604353874156e+01 9.9964285270101612e+01 -2.4908008300249103e+00 -5.3732764155620123e+02 9.9999999999999986e+01 -5.3732764155620130e+00 -1.6830191398899107e+01 1.1456914983337096e+01\n", - " 59 9.9977762418358893e+01 9.9960385763703798e+01 -2.4809173797447195e+00 -5.3698400568688112e+02 1.0000000000000001e+02 -5.3698400568688101e+00 -1.6828861798689815e+01 1.1459021741821008e+01\n", - " 60 9.9977385310556187e+01 9.9911815519781470e+01 -2.4655140915297671e+00 -5.3619135538867647e+02 9.9999999999999986e+01 -5.3619135538867662e+00 -1.6824947955210614e+01 1.1463034401323851e+01\n", - " 61 1.0002728957851571e+02 1.0008955076399423e+02 -2.5062215425800352e+00 -5.3679070408884968e+02 9.9999999999999986e+01 -5.3679070408884977e+00 -1.6823488901505062e+01 1.1455581860616565e+01\n", - " 62 9.9969707988550226e+01 9.9964247398118644e+01 -2.4827651746136357e+00 -5.3645496837855183e+02 1.0000000000000000e+02 -5.3645496837855182e+00 -1.6824778483223405e+01 1.1460228799437884e+01\n", - " 63 9.9970201497188242e+01 9.9890412673261579e+01 -2.4667523197845691e+00 -5.3736869006125619e+02 1.0000000000000000e+02 -5.3736869006125616e+00 -1.6822033571415684e+01 1.1448346670803128e+01\n", - " 64 1.0002087827298615e+02 1.0005512882261617e+02 -2.5030215591240550e+00 -5.3699663333712363e+02 1.0000000000000000e+02 -5.3699663333712362e+00 -1.6816016412427331e+01 1.1446050079056095e+01\n", - " 65 1.0001093311989091e+02 9.9979305718373382e+01 -2.5074942010905326e+00 -5.3630643024592086e+02 9.9999999999999972e+01 -5.3630643024592111e+00 -1.6817720549322235e+01 1.1454656246863026e+01\n", - " 66 9.9989026312220346e+01 9.9974849258921836e+01 -2.4929685695333772e+00 -5.3582387827434354e+02 9.9999999999999986e+01 -5.3582387827434363e+00 -1.6818681748077235e+01 1.1460442965333796e+01\n", - " 67 9.9978121676691430e+01 9.9907025730421267e+01 -2.4739456966796900e+00 -5.3665885024022589e+02 9.9999999999999972e+01 -5.3665885024022613e+00 -1.6820016832423381e+01 1.1453428330021117e+01\n", - " 68 1.0000161810427667e+02 1.0001276333419452e+02 -2.4801645509857173e+00 -5.3681886432846773e+02 1.0000000000000000e+02 -5.3681886432846770e+00 -1.6817211404739552e+01 1.1449022761454872e+01\n", - " 69 9.9977255907238373e+01 9.9953877495710856e+01 -2.4695049817139876e+00 -5.3678668790512722e+02 1.0000000000000000e+02 -5.3678668790512720e+00 -1.6816085779028782e+01 1.1448218899977503e+01\n", - " 70 1.0002533305587083e+02 1.0008099739172816e+02 -2.5092057639655212e+00 -5.3795851529057427e+02 1.0000000000000001e+02 -5.3795851529057419e+00 -1.6817954383765798e+01 1.1438369230860056e+01\n", - " 71 9.9980235479344685e+01 9.9947706104482407e+01 -2.4979878936257638e+00 -5.3785117080364557e+02 1.0000000000000000e+02 -5.3785117080364557e+00 -1.6812300831995106e+01 1.1433789123958650e+01\n", - " 72 1.0001256841742880e+02 1.0000759684590868e+02 -2.5177283594489577e+00 -5.3681514597842454e+02 9.9999999999999986e+01 -5.3681514597842463e+00 -1.6812310663023581e+01 1.1444159203239337e+01\n", - " 73 9.9950547574118744e+01 9.9899851289477070e+01 -2.4786163442842257e+00 -5.3671822128770884e+02 9.9999999999999986e+01 -5.3671822128770899e+00 -1.6812558344377134e+01 1.1445376131500048e+01\n", - " 74 9.9983357890698116e+01 9.9937091595263098e+01 -2.4672248039551969e+00 -5.3608605176830292e+02 1.0000000000000000e+02 -5.3608605176830295e+00 -1.6808997024999293e+01 1.1448136507316262e+01\n", - " 75 1.0002158670797967e+02 1.0001520725076605e+02 -2.4833716224926841e+00 -5.3652742239551173e+02 1.0000000000000003e+02 -5.3652742239551152e+00 -1.6816373099459174e+01 1.1451098875504059e+01\n", - " 76 1.0001205090150187e+02 1.0002808379885670e+02 -2.5040318897882536e+00 -5.3693258620845938e+02 1.0000000000000000e+02 -5.3693258620845938e+00 -1.6820421069260057e+01 1.1451095207175465e+01\n", - " 77 9.9978670888407706e+01 9.9969160593302860e+01 -2.4994250189071701e+00 -5.3767699595976876e+02 9.9999999999999986e+01 -5.3767699595976888e+00 -1.6817360272166688e+01 1.1440590312569002e+01\n", - " 78 9.9968853299740204e+01 9.9934963681020534e+01 -2.4697770255512914e+00 -5.3636434055369193e+02 1.0000000000000003e+02 -5.3636434055369175e+00 -1.6819369010449059e+01 1.1455725604912139e+01\n", - " 79 1.0001464469243470e+02 9.9993091593696505e+01 -2.4982874696529564e+00 -5.3587650980825697e+02 9.9999999999999972e+01 -5.3587650980825714e+00 -1.6813822648459826e+01 1.1455057550377253e+01\n", - " 80 9.9982923019125963e+01 9.9995205323545832e+01 -2.4888563468258313e+00 -5.3683705308928688e+02 1.0000000000000000e+02 -5.3683705308928689e+00 -1.6811687559348687e+01 1.1443317028455819e+01\n", - " 81 9.9992318496150517e+01 9.9970623233804332e+01 -2.4940483541319782e+00 -5.3729077342815515e+02 9.9999999999999986e+01 -5.3729077342815525e+00 -1.6810080365830402e+01 1.1437172631548853e+01\n", - " 82 9.9995070349715604e+01 1.0000854337495389e+02 -2.5007105830925833e+00 -5.3698942751910897e+02 9.9999999999999986e+01 -5.3698942751910907e+00 -1.6814218959707642e+01 1.1444324684516548e+01\n", - " 83 9.9998357534434490e+01 9.9984036291734810e+01 -2.5108212545881110e+00 -5.3585740730315308e+02 9.9999999999999986e+01 -5.3585740730315319e+00 -1.6813722567764696e+01 1.1455148494733164e+01\n", - " 84 9.9980770343014925e+01 9.9962715106091110e+01 -2.4960125727166953e+00 -5.3613364364710083e+02 9.9999999999999972e+01 -5.3613364364710101e+00 -1.6810876740334891e+01 1.1449540303863882e+01\n", - " 85 9.9976763621852939e+01 9.9958763287029328e+01 -2.4958844865525531e+00 -5.3608472892597695e+02 1.0000000000000000e+02 -5.3608472892597696e+00 -1.6807114748560736e+01 1.1446267459300971e+01\n", - " 86 9.9994574802571407e+01 9.9993395961215128e+01 -2.4927313468564947e+00 -5.3774666822818619e+02 9.9999999999999986e+01 -5.3774666822818631e+00 -1.6807447975808810e+01 1.1429981293526946e+01\n", - " 87 9.9986125499373429e+01 9.9961936216752221e+01 -2.4971591250318417e+00 -5.3750750825323041e+02 9.9999999999999972e+01 -5.3750750825323061e+00 -1.6808237994442695e+01 1.1433162911910392e+01\n", - " 88 1.0001524456655862e+02 1.0003480024848812e+02 -2.5127620218177880e+00 -5.3650225089600008e+02 1.0000000000000000e+02 -5.3650225089600010e+00 -1.6811982607487337e+01 1.1446960098527335e+01\n", - " 89 9.9945227931561064e+01 9.9888507425395815e+01 -2.4776480695459187e+00 -5.3680762588165817e+02 1.0000000000000000e+02 -5.3680762588165818e+00 -1.6809428577600450e+01 1.1441352318783871e+01\n", - " 90 1.0000074697118608e+02 9.9995425075275733e+01 -2.4801992307809670e+00 -5.3669245970205861e+02 1.0000000000000003e+02 -5.3669245970205841e+00 -1.6812087487868258e+01 1.1445162890847675e+01\n", - " 91 9.9960398044156079e+01 9.9945091199333788e+01 -2.4687770895817436e+00 -5.3659671099618652e+02 9.9999999999999986e+01 -5.3659671099618658e+00 -1.6808910812818578e+01 1.1442943702856708e+01\n", - " 92 1.0001444625165652e+02 1.0001886356228617e+02 -2.4918755651355715e+00 -5.3680687691514754e+02 9.9999999999999986e+01 -5.3680687691514768e+00 -1.6809001351596208e+01 1.1440932582444734e+01\n", - " 93 9.9994506171821968e+01 9.9979510016510503e+01 -2.4877659807951984e+00 -5.3590444825660006e+02 1.0000000000000000e+02 -5.3590444825660004e+00 -1.6814061733183468e+01 1.1455017250617468e+01\n", - " 94 9.9975514876805121e+01 9.9924711431894764e+01 -2.4694117452441495e+00 -5.3647411629263331e+02 1.0000000000000000e+02 -5.3647411629263333e+00 -1.6810400238577799e+01 1.1445659075651459e+01\n", - " 95 9.9994337740687428e+01 9.9960256274134963e+01 -2.4730007574558033e+00 -5.3778691953684154e+02 9.9999999999999986e+01 -5.3778691953684161e+00 -1.6808809104796712e+01 1.1430939909428298e+01\n", - " 96 1.0002333573385197e+02 1.0005594445870186e+02 -2.5049191209919526e+00 -5.3810409450810153e+02 9.9999999999999957e+01 -5.3810409450810175e+00 -1.6808346108864111e+01 1.1427305163783094e+01\n", - " 97 9.9983475778383820e+01 9.9978381883689821e+01 -2.5064511975300454e+00 -5.3859661957865103e+02 1.0000000000000004e+02 -5.3859661957865077e+00 -1.6810161718485578e+01 1.1424195522699071e+01\n", - " 98 1.0002288713664173e+02 1.0004079134806058e+02 -2.5349986882839985e+00 -5.3803163774947188e+02 1.0000000000000003e+02 -5.3803163774947169e+00 -1.6812155123987793e+01 1.1431838746493078e+01\n", - " 99 9.9981931644381547e+01 9.9975453808878157e+01 -2.5301309596937482e+00 -5.3955489791275727e+02 1.0000000000000000e+02 -5.3955489791275726e+00 -1.6811634147558003e+01 1.1416085168430431e+01\n", - " 100 9.9979695840143137e+01 9.9938233354207483e+01 -2.5127054465234018e+00 -5.3821127283340627e+02 1.0000000000000000e+02 -5.3821127283340626e+00 -1.6807151454913534e+01 1.1425038726579473e+01\n", - " 101 9.9982050360501717e+01 9.9937241558315932e+01 -2.5179597176639490e+00 -5.4053228939653843e+02 1.0000000000000001e+02 -5.4053228939653835e+00 -1.6806033348489926e+01 1.1400710454524543e+01\n", - " 102 1.0001409650018115e+02 1.0003278992717834e+02 -2.5359352442807248e+00 -5.3841349253244982e+02 9.9999999999999972e+01 -5.3841349253245001e+00 -1.6805056082190085e+01 1.1420921156865591e+01\n", - " 103 9.9939305446857276e+01 9.9866100477039495e+01 -2.4975548252029265e+00 -5.3725057017739562e+02 1.0000000000000003e+02 -5.3725057017739548e+00 -1.6802992291177503e+01 1.1430486589403548e+01\n", - " 104 1.0000547380474950e+02 1.0000218690105808e+02 -2.5125990435140175e+00 -5.3881317405194795e+02 9.9999999999999972e+01 -5.3881317405194817e+00 -1.6803383960695967e+01 1.1415252220176484e+01\n", - " 105 9.9998254359585658e+01 1.0000356513340931e+02 -2.5215069820736744e+00 -5.3869068348426867e+02 9.9999999999999986e+01 -5.3869068348426881e+00 -1.6800676466200844e+01 1.1413769631358161e+01\n", - " 106 9.9971231519310820e+01 9.9952708367525247e+01 -2.5087153905925335e+00 -5.3829638185482725e+02 1.0000000000000000e+02 -5.3829638185482729e+00 -1.6804266984196961e+01 1.1421303165648688e+01\n", - " 107 9.9989382121719231e+01 9.9928948904385237e+01 -2.5062512903124174e+00 -5.3742890384937368e+02 1.0000000000000001e+02 -5.3742890384937363e+00 -1.6806573766864499e+01 1.1432284728370762e+01\n", - " 108 9.9941318721995557e+01 9.9905113034359474e+01 -2.4593504901876218e+00 -5.3786084258616472e+02 9.9999999999999986e+01 -5.3786084258616480e+00 -1.6808479721241781e+01 1.1429871295380130e+01\n", - " 109 1.0006256704452163e+02 1.0005422252339645e+02 -2.5084430584236710e+00 -5.3789470424432852e+02 1.0000000000000000e+02 -5.3789470424432855e+00 -1.6805336352178198e+01 1.1426389309734914e+01\n", - " 110 9.9979942037298898e+01 9.9979745868703276e+01 -2.5051777815305032e+00 -5.3802301173229716e+02 1.0000000000000001e+02 -5.3802301173229710e+00 -1.6805589910514861e+01 1.1425359793191891e+01\n", - " 111 9.9997692915897204e+01 9.9976259982412756e+01 -2.5050128367670217e+00 -5.3731400814599556e+02 9.9999999999999986e+01 -5.3731400814599564e+00 -1.6802338285618315e+01 1.1429198204158361e+01\n", - " 112 9.9971623181744178e+01 9.9927790512869436e+01 -2.4790945754192375e+00 -5.3801542407884642e+02 9.9999999999999972e+01 -5.3801542407884666e+00 -1.6803352304218045e+01 1.1423198063429577e+01\n", - " 113 1.0003940105091590e+02 1.0003459732005101e+02 -2.5198192761906579e+00 -5.3828010158289828e+02 1.0000000000000001e+02 -5.3828010158289823e+00 -1.6798559382933178e+01 1.1415758367104198e+01\n", - " 114 9.9975886471119807e+01 9.9964765183886399e+01 -2.5130474685939035e+00 -5.3835299201923726e+02 1.0000000000000000e+02 -5.3835299201923723e+00 -1.6794023024418941e+01 1.1410493104226564e+01\n", - " 115 9.9986759570042167e+01 9.9961620788548231e+01 -2.5081505508098410e+00 -5.3823576086234016e+02 1.0000000000000000e+02 -5.3823576086234013e+00 -1.6794200846881374e+01 1.1411843238257973e+01\n", - " 116 9.9966712328296254e+01 9.9937134914666757e+01 -2.4842261252254034e+00 -5.3721789653361259e+02 9.9999999999999972e+01 -5.3721789653361283e+00 -1.6793406622506403e+01 1.1421227657170276e+01\n", - " 117 9.9977690113689590e+01 9.9905603441215987e+01 -2.4716863756751923e+00 -5.3653887324786376e+02 1.0000000000000000e+02 -5.3653887324786380e+00 -1.6799101495310030e+01 1.1433712762831389e+01\n", - " 118 1.0000688778122033e+02 1.0000993416432397e+02 -2.4909211312589212e+00 -5.3629983944419018e+02 1.0000000000000001e+02 -5.3629983944419006e+00 -1.6802988346634049e+01 1.1439989952192150e+01\n", - " 119 1.0000066171551119e+02 9.9989069874257055e+01 -2.5109490840254436e+00 -5.3700778939234613e+02 9.9999999999999972e+01 -5.3700778939234635e+00 -1.6803641197220802e+01 1.1433563303297335e+01\n", - " 120 9.9962498906115442e+01 9.9941485569934301e+01 -2.4878584710059957e+00 -5.3848966808678040e+02 9.9999999999999986e+01 -5.3848966808678052e+00 -1.6799723951075133e+01 1.1414827270207327e+01\n", - " 121 1.0001279363776352e+02 1.0004169540774456e+02 -2.5208949402649052e+00 -5.3803736108094631e+02 1.0000000000000003e+02 -5.3803736108094613e+00 -1.6798523620881657e+01 1.1418150010072194e+01\n", - " 122 9.9951392282161265e+01 9.9899229503968670e+01 -2.4921076178454773e+00 -5.3918805025678205e+02 1.0000000000000001e+02 -5.3918805025678198e+00 -1.6792441857276884e+01 1.1400561354709064e+01\n", - " 123 9.9998002531532592e+01 9.9988707792267306e+01 -2.5310875558222676e+00 -5.3963811649714330e+02 1.0000000000000001e+02 -5.3963811649714319e+00 -1.6797269148427382e+01 1.1400887983455956e+01\n", - " 124 9.9907591377607247e+01 1.0053883035481385e+02 -2.4519975163390573e+00 -5.3742392444156701e+02 9.9999999999999986e+01 -5.3742392444156710e+00 -1.6805095982548291e+01 1.1430856738132618e+01\n", - " 125 1.0002249433968375e+02 1.0000100002337224e+02 -2.4862326145741900e+00 -5.3775398240892844e+02 1.0000000000000000e+02 -5.3775398240892844e+00 -1.6810509013398178e+01 1.1432969189308892e+01\n", - " 126 9.9996308115759476e+01 9.9990019716041843e+01 -2.4982060663831844e+00 -5.3680260318599392e+02 1.0000000000000001e+02 -5.3680260318599382e+00 -1.6812666994800924e+01 1.1444640962940985e+01\n", - " 127 1.0001126475700028e+02 9.9992671259982714e+01 -2.5055674557439001e+00 -5.3721332755588139e+02 9.9999999999999986e+01 -5.3721332755588147e+00 -1.6812422438172387e+01 1.1440289162613567e+01\n", - " 128 1.0001099691049514e+02 1.0000905591430829e+02 -2.5162332513300987e+00 -5.3807055304798803e+02 9.9999999999999986e+01 -5.3807055304798812e+00 -1.6813094594536341e+01 1.1432389064056457e+01\n", - " 129 9.9966745822558721e+01 9.9934170549163341e+01 -2.4890754669568658e+00 -5.3683608722535371e+02 1.0000000000000000e+02 -5.3683608722535370e+00 -1.6800861606444862e+01 1.1432500734191320e+01\n", - " 130 9.9988988901300203e+01 9.9969368205417823e+01 -2.4973425945180341e+00 -5.3646283060398844e+02 9.9999999999999986e+01 -5.3646283060398856e+00 -1.6803241509074716e+01 1.1438613203034834e+01\n", - " 131 9.9986942614869747e+01 9.9979765948930378e+01 -2.5055540641885421e+00 -5.3780603049765784e+02 1.0000000000000003e+02 -5.3780603049765769e+00 -1.6807727955428870e+01 1.1429667650452291e+01\n", - " 132 9.9980064575467281e+01 9.9961469735925391e+01 -2.4893067508040914e+00 -5.3728985845304248e+02 1.0000000000000000e+02 -5.3728985845304251e+00 -1.6808708894267443e+01 1.1435810309737024e+01\n", - " 133 9.9994467663830690e+01 9.9971504489891814e+01 -2.4874900378644962e+00 -5.3820575530302904e+02 9.9999999999999986e+01 -5.3820575530302914e+00 -1.6809209265387050e+01 1.1427151712356761e+01\n", - " 134 9.9983020421512506e+01 9.9941140142032708e+01 -2.4831877364102097e+00 -5.3823072392234928e+02 1.0000000000000000e+02 -5.3823072392234925e+00 -1.6812638640573759e+01 1.1430331401350271e+01\n", - " 135 1.0001857072404046e+02 1.0004192116293773e+02 -2.5052784652541824e+00 -5.3728058832340867e+02 1.0000000000000001e+02 -5.3728058832340855e+00 -1.6813549214006763e+01 1.1440743330772676e+01\n", - " 136 9.9984349724014081e+01 9.9959568239409620e+01 -2.4970018466154880e+00 -5.3709417910115906e+02 9.9999999999999986e+01 -5.3709417910115915e+00 -1.6813223820741932e+01 1.1442282029730345e+01\n", - " 137 1.0001889806709789e+02 1.0000813415241095e+02 -2.5120057912881042e+00 -5.3765136589333656e+02 1.0000000000000000e+02 -5.3765136589333657e+00 -1.6811404762942274e+01 1.1434891104008907e+01\n", - " 138 9.9962605430500631e+01 9.9911079076553477e+01 -2.4825251834845181e+00 -5.3620176612869636e+02 1.0000000000000000e+02 -5.3620176612869637e+00 -1.6806842535519415e+01 1.1444824874232452e+01\n", - " 139 9.9993474583895278e+01 9.9969638382349018e+01 -2.4837003609604609e+00 -5.3628226344633549e+02 1.0000000000000000e+02 -5.3628226344633552e+00 -1.6804187780262502e+01 1.1441365145799146e+01\n", - " 140 1.0001500556241326e+02 1.0003838213589123e+02 -2.5191514380651494e+00 -5.3631190607633062e+02 1.0000000000000000e+02 -5.3631190607633066e+00 -1.6806884506456008e+01 1.1443765445692698e+01\n", - " 141 9.9968120322670728e+01 9.9951265876441468e+01 -2.4965999043882983e+00 -5.3726921897562625e+02 1.0000000000000001e+02 -5.3726921897562621e+00 -1.6812052403557786e+01 1.1439360213801519e+01\n", - " 142 9.9992622569248908e+01 9.9973918200260727e+01 -2.5075494167483852e+00 -5.3801040508253823e+02 1.0000000000000001e+02 -5.3801040508253815e+00 -1.6811409837645115e+01 1.1431305786819735e+01\n", - " 143 9.9986439682306752e+01 9.9953205273008024e+01 -2.4972810389687861e+00 -5.3701809589658330e+02 1.0000000000000000e+02 -5.3701809589658334e+00 -1.6815301889076061e+01 1.1445120930110225e+01\n", - " 144 9.9990967114923464e+01 9.9953298256558455e+01 -2.4940140004335349e+00 -5.3670325301707260e+02 9.9999999999999986e+01 -5.3670325301707269e+00 -1.6819320828680119e+01 1.1452288298509391e+01\n", - " 145 9.9960046007579763e+01 9.9921714351454327e+01 -2.4664915553237368e+00 -5.3756407956727162e+02 1.0000000000000003e+02 -5.3756407956727141e+00 -1.6821108044864996e+01 1.1445467249192280e+01\n", - " 146 9.9997567363002759e+01 9.9987254191104299e+01 -2.4762699140810192e+00 -5.3675686980776743e+02 9.9999999999999986e+01 -5.3675686980776751e+00 -1.6820215430186860e+01 1.1452646732109184e+01\n", - " 147 9.9991100379886419e+01 9.9952323169410633e+01 -2.4733811272544872e+00 -5.3725047372427866e+02 9.9999999999999957e+01 -5.3725047372427888e+00 -1.6820128546202262e+01 1.1447623808959474e+01\n", - " 148 1.0000261285467201e+02 1.0002379790873813e+02 -2.4978656643678283e+00 -5.3836905318596814e+02 1.0000000000000003e+02 -5.3836905318596795e+00 -1.6814721799682729e+01 1.1431031267823048e+01\n", - " 149 9.9992605815204314e+01 9.9972890995466500e+01 -2.5063315505037917e+00 -5.3802424328194172e+02 1.0000000000000000e+02 -5.3802424328194176e+00 -1.6817480237838001e+01 1.1437237805018590e+01\n", - " 150 9.9978706155158804e+01 9.9967619417029027e+01 -2.4983138378981233e+00 -5.3786467560542349e+02 9.9999999999999957e+01 -5.3786467560542368e+00 -1.6816497779014657e+01 1.1437851022960421e+01\n", - " 151 9.9965273135538553e+01 9.9908835852669014e+01 -2.4799764946411389e+00 -5.4363531278915207e+02 1.0000000000000000e+02 -5.4363531278915209e+00 -1.6845155391975908e+01 1.1408802264084384e+01\n", - " 152 9.9964887588430088e+01 9.9956719048786468e+01 -2.5383310560861774e+00 -5.4137386726959869e+02 9.9999999999999986e+01 -5.4137386726959882e+00 -1.6815321385920544e+01 1.1401582713224556e+01\n", - " 153 1.0001774807771557e+02 1.0005829472705666e+02 -2.5707164855655495e+00 -5.3946062813071944e+02 1.0000000000000001e+02 -5.3946062813071940e+00 -1.6806231660310576e+01 1.1411625379003384e+01\n", - " 154 9.9944476046988655e+01 9.9875662978136603e+01 -2.5319494297567897e+00 -5.3890390020643565e+02 1.0000000000000001e+02 -5.3890390020643553e+00 -1.6808413034441251e+01 1.1419374032376895e+01\n", - " 155 9.9970449618165574e+01 9.9910808675097854e+01 -2.5084232226178900e+00 -5.3791759677708137e+02 1.0000000000000001e+02 -5.3791759677708129e+00 -1.6809876976110502e+01 1.1430701008339687e+01\n", - " 156 9.9992649128076636e+01 9.9957184273450736e+01 -2.5085456558032377e+00 -5.3769104547831830e+02 1.0000000000000000e+02 -5.3769104547831832e+00 -1.6808000120965033e+01 1.1431089666181849e+01\n", - " 157 9.9990547776725251e+01 9.9969574699532629e+01 -2.5174807453842387e+00 -5.3774476325085425e+02 9.9999999999999986e+01 -5.3774476325085434e+00 -1.6811296123423652e+01 1.1433848490915111e+01\n", - " 158 9.9932486330864165e+01 9.9868382164337405e+01 -2.4671151949023269e+00 -5.3649017125991793e+02 1.0000000000000001e+02 -5.3649017125991785e+00 -1.6807404093029596e+01 1.1442502380430419e+01\n", - " 159 1.0002617567388468e+02 1.0002607869481609e+02 -2.5077737677051579e+00 -5.3674974663582464e+02 1.0000000000000000e+02 -5.3674974663582464e+00 -1.6800619173175299e+01 1.1433121706817051e+01\n", - " 160 9.9969035559163430e+01 9.9941586362629025e+01 -2.4795329967232269e+00 -5.3728457296166596e+02 1.0000000000000000e+02 -5.3728457296166594e+00 -1.6792469421574815e+01 1.1419623691958153e+01\n", - " 161 1.0000363148550234e+02 1.0000523066549813e+02 -2.4938082694192660e+00 -5.3767282455274437e+02 1.0000000000000000e+02 -5.3767282455274437e+00 -1.6792432797087137e+01 1.1415704551559694e+01\n", - " 162 9.9994520758891667e+01 9.9944946061184837e+01 -2.4904510123798245e+00 -5.3828545239935079e+02 9.9999999999999986e+01 -5.3828545239935091e+00 -1.6790269536076980e+01 1.1407415012083471e+01\n", - " 163 1.0000420768621231e+02 9.9983038063763075e+01 -2.4996077180092655e+00 -5.3836992556280597e+02 1.0000000000000000e+02 -5.3836992556280601e+00 -1.6792398189760757e+01 1.1408698934132694e+01\n", - " 164 1.0000539283359618e+02 1.0000946955216347e+02 -2.5244694910698819e+00 -5.3787785105935234e+02 1.0000000000000000e+02 -5.3787785105935235e+00 -1.6793467348166324e+01 1.1414688837572800e+01\n", - " 165 9.9959175499908980e+01 9.9930441926335675e+01 -2.4946138037869292e+00 -5.3708987243789886e+02 1.0000000000000004e+02 -5.3708987243789856e+00 -1.6789528704851495e+01 1.1418629980472510e+01\n", - " 166 9.9978184090078599e+01 9.9939589000510878e+01 -2.4792631275789252e+00 -5.3858613357702075e+02 1.0000000000000000e+02 -5.3858613357702074e+00 -1.6793373751714800e+01 1.1407512415944593e+01\n", - " 167 1.0000868008222967e+02 9.9989859896848174e+01 -2.5046824501256060e+00 -5.3901167720167541e+02 9.9999999999999986e+01 -5.3901167720167553e+00 -1.6796581942555537e+01 1.1406465170538784e+01\n", - " 168 9.9992609784403598e+01 9.9982559232149399e+01 -2.5197547237081670e+00 -5.3946460096245551e+02 9.9999999999999986e+01 -5.3946460096245561e+00 -1.6795603368009431e+01 1.1400957358384876e+01\n", - " 169 9.9954510234298141e+01 9.9915195003090233e+01 -2.4813034854206473e+00 -5.3856054862293956e+02 9.9999999999999986e+01 -5.3856054862293963e+00 -1.6791905217882611e+01 1.1406299731653213e+01\n", - " 170 1.0003587181392801e+02 1.0005930181420689e+02 -2.5214283616854418e+00 -5.3762240380850312e+02 1.0000000000000001e+02 -5.3762240380850308e+00 -1.6786379376172075e+01 1.1410155338087039e+01\n", - " 171 9.9949698238534836e+01 9.9895961195862711e+01 -2.4917163588860105e+00 -5.3875638807950099e+02 9.9999999999999986e+01 -5.3875638807950113e+00 -1.6785676304660097e+01 1.1398112423865079e+01\n", - " 172 1.0003154553659729e+02 1.0003996808907199e+02 -2.5249078841013177e+00 -5.3797989243727602e+02 1.0000000000000000e+02 -5.3797989243727606e+00 -1.6790275597192895e+01 1.1410476672820135e+01\n", - " 173 9.9961481257620804e+01 9.9944426276071567e+01 -2.5045019737507626e+00 -5.3892929831242020e+02 9.9999999999999943e+01 -5.3892929831242053e+00 -1.6793314796287824e+01 1.1404021813163622e+01\n", - " 174 1.0000906886476307e+02 9.9987923912562493e+01 -2.5296516795610025e+00 -5.3943733507044556e+02 9.9999999999999972e+01 -5.3943733507044573e+00 -1.6803536920765236e+01 1.1409163570060777e+01\n", - " 175 9.9959873619490409e+01 9.9932729053868798e+01 -2.4973974425579422e+00 -5.3832924959783259e+02 1.0000000000000003e+02 -5.3832924959783242e+00 -1.6803658920753826e+01 1.1420366424775501e+01\n", - " 176 9.9987709063951129e+01 9.9956378565780781e+01 -2.4953757581624258e+00 -5.3799845525416777e+02 9.9999999999999986e+01 -5.3799845525416785e+00 -1.6806681679584049e+01 1.1426697127042370e+01\n", - " 177 1.0002335372838976e+02 1.0002206470140359e+02 -2.5084657889722104e+00 -5.3799049960080129e+02 1.0000000000000000e+02 -5.3799049960080128e+00 -1.6804947929096478e+01 1.1425042933088461e+01\n", - " 178 9.9980298021276397e+01 9.9969901484077013e+01 -2.5099548967369927e+00 -5.3719069768905592e+02 1.0000000000000001e+02 -5.3719069768905587e+00 -1.6806297742936543e+01 1.1434390766045988e+01\n", - " 179 9.9995652957767021e+01 1.0001273773064635e+02 -2.5120987072918624e+00 -5.3685622606153481e+02 9.9999999999999986e+01 -5.3685622606153496e+00 -1.6806135155324466e+01 1.1437572894709115e+01\n", - " 180 9.9966488299988868e+01 9.9930079297753565e+01 -2.4960142874713038e+00 -5.3686617553209226e+02 9.9999999999999986e+01 -5.3686617553209235e+00 -1.6803006864792916e+01 1.1434345109471995e+01\n", - " 181 9.9973609616329270e+01 9.9923405115513674e+01 -2.4823058152096338e+00 -5.3692374939616798e+02 1.0000000000000000e+02 -5.3692374939616796e+00 -1.6803183430068756e+01 1.1433945936107078e+01\n", - " 182 1.0001493760631766e+02 1.0000422823912653e+02 -2.5058689730779418e+00 -5.3769500091120972e+02 1.0000000000000000e+02 -5.3769500091120976e+00 -1.6800721881830366e+01 1.1423771872718271e+01\n", - " 183 1.0000965939844923e+02 1.0004067507731008e+02 -2.5180012501153919e+00 -5.3892989891267814e+02 1.0000000000000000e+02 -5.3892989891267815e+00 -1.6800894917964037e+01 1.1411595928837253e+01\n", - " 184 9.9973324137226669e+01 9.9958272718407315e+01 -2.5067406797578986e+00 -5.3866302543767563e+02 1.0000000000000000e+02 -5.3866302543767564e+00 -1.6804694324244959e+01 1.1418064069868203e+01\n", - " 185 9.9998227886208298e+01 9.9965533396386874e+01 -2.5101788350779870e+00 -5.4191171356131917e+02 1.0000000000000000e+02 -5.4191171356131917e+00 -1.6807372082623001e+01 1.1388254947009807e+01\n", - " 186 1.0004636441980561e+02 1.0009694148900782e+02 -2.5836528260125222e+00 -5.4313359078580481e+02 1.0000000000000000e+02 -5.4313359078580481e+00 -1.6797778569377758e+01 1.1366442661519709e+01\n", - " 187 9.9973895529569972e+01 9.9943611653793710e+01 -2.5508556847885346e+00 -5.4581601630660225e+02 1.0000000000000000e+02 -5.4581601630660224e+00 -1.6797862546418461e+01 1.1339702383352442e+01\n", - " 188 1.0003520767072841e+02 1.0011014034112263e+02 -2.6159602834413529e+00 -5.4221121294955560e+02 1.0000000000000000e+02 -5.4221121294955559e+00 -1.6802824110403002e+01 1.1380711980907442e+01\n", - " 189 9.9873684826635198e+01 9.8947619450809796e+01 -2.4964126607329660e+00 -5.3825579017416612e+02 9.9999999999999986e+01 -5.3825579017416620e+00 -1.6805980504510792e+01 1.1423422602769135e+01\n", - " 190 1.0000516686573459e+02 9.9932252836796224e+01 -2.4955711607369948e+00 -5.3827228453812984e+02 1.0000000000000000e+02 -5.3827228453812985e+00 -1.6806696990788893e+01 1.1423974145407596e+01\n", - " 191 9.9965602929565705e+01 9.9942387761233576e+01 -2.4838170202192624e+00 -5.3808456861711397e+02 1.0000000000000000e+02 -5.3808456861711402e+00 -1.6806398002555216e+01 1.1425552316384074e+01\n", - " 192 1.0000055152067716e+02 9.9979184316927572e+01 -2.4946690479774563e+00 -5.3669828212891093e+02 1.0000000000000000e+02 -5.3669828212891098e+00 -1.6810134117976087e+01 1.1443151296686976e+01\n", - " 193 9.9992658363468905e+01 9.9964865065554605e+01 -2.4911507233388055e+00 -5.3821051888534237e+02 1.0000000000000000e+02 -5.3821051888534237e+00 -1.6809683299190706e+01 1.1427578110337281e+01\n", - " 194 9.9999705167173744e+01 9.9961511392524869e+01 -2.4969316340854490e+00 -5.3801163301880717e+02 1.0000000000000000e+02 -5.3801163301880717e+00 -1.6812018416281969e+01 1.1431902086093899e+01\n", - " 195 1.0001395383416006e+02 1.0005267632781998e+02 -2.5097068772750157e+00 -5.3783181535018593e+02 1.0000000000000000e+02 -5.3783181535018594e+00 -1.6807579412748293e+01 1.1429261259246433e+01\n", - " 196 1.0000708287364371e+02 9.9971909961161998e+01 -2.5189884931526683e+00 -5.3765252986336748e+02 1.0000000000000000e+02 -5.3765252986336751e+00 -1.6805377034089211e+01 1.1428851735455535e+01\n", - " 197 9.9976144969457863e+01 9.9935626690733244e+01 -2.4912105788470362e+00 -5.3697763015346811e+02 1.0000000000000000e+02 -5.3697763015346816e+00 -1.6804611239668944e+01 1.1434834938134259e+01\n", - " 198 9.9967480385434570e+01 9.9946662111369207e+01 -2.4632061667099934e+00 -5.3755152606402589e+02 1.0000000000000000e+02 -5.3755152606402588e+00 -1.6803626610861400e+01 1.1428111350221140e+01\n", - " 199 1.0001359621921013e+02 1.0001863553529849e+02 -2.5011613103824399e+00 -5.3818850136898459e+02 1.0000000000000001e+02 -5.3818850136898453e+00 -1.6804985533870166e+01 1.1423100520180322e+01\n", - " 200 1.0000553135166163e+02 1.0002075821982193e+02 -2.5233608903302964e+00 -5.3899932181133363e+02 1.0000000000000000e+02 -5.3899932181133368e+00 -1.6804750461389968e+01 1.1414757243276624e+01\n", - " 201 9.9951956126159473e+01 9.9906835145606379e+01 -2.4941052512821358e+00 -5.3869055869184945e+02 1.0000000000000000e+02 -5.3869055869184947e+00 -1.6812846614426878e+01 1.1425941027508387e+01\n", - " 202 1.0003706531897184e+02 1.0006594360703581e+02 -2.5245844832171374e+00 -5.3768977823790533e+02 9.9999999999999986e+01 -5.3768977823790545e+00 -1.6808807938410201e+01 1.1431910156031147e+01\n", - " 203 9.9929313427754607e+01 9.9878664756007495e+01 -2.4835584025392285e+00 -5.3745154361149400e+02 9.9999999999999986e+01 -5.3745154361149412e+00 -1.6808516538498971e+01 1.1434001102384032e+01\n", - " 204 1.0000139895032626e+02 9.9958512965111225e+01 -2.4856728482389312e+00 -5.3720477066502156e+02 9.9999999999999986e+01 -5.3720477066502168e+00 -1.6806186016588256e+01 1.1434138309938046e+01\n", - " 205 9.9984543960713395e+01 9.9968819303054943e+01 -2.4764946638268386e+00 -5.3744475984760754e+02 1.0000000000000000e+02 -5.3744475984760758e+00 -1.6805842702069146e+01 1.1431395103593065e+01\n", - " 206 1.0002848147683834e+02 1.0008058055331139e+02 -2.5109987817355042e+00 -5.3715301676016429e+02 1.0000000000000000e+02 -5.3715301676016427e+00 -1.6808285294723763e+01 1.1436755127122122e+01\n", - " 207 9.9971833609016272e+01 9.9952293483590637e+01 -2.5036058088119777e+00 -5.3708935538850812e+02 1.0000000000000000e+02 -5.3708935538850815e+00 -1.6806044507872276e+01 1.1435150953987193e+01\n", - " 208 9.9978788006600467e+01 9.9922519263001746e+01 -2.4812402255700867e+00 -5.3690811599782376e+02 1.0000000000000003e+02 -5.3690811599782355e+00 -1.6802451217973694e+01 1.1433370057995456e+01\n", - " 209 9.9989324642189828e+01 9.9973450885522055e+01 -2.4827262173303701e+00 -5.3636617106331698e+02 1.0000000000000000e+02 -5.3636617106331697e+00 -1.6803556588587693e+01 1.1439894877954528e+01\n", - " 210 1.0000662292843177e+02 9.9987646954699997e+01 -2.4948164874423764e+00 -5.3710784447348669e+02 1.0000000000000001e+02 -5.3710784447348665e+00 -1.6803561861376910e+01 1.1432483416642039e+01\n", - " 211 9.9981373482945912e+01 9.9979357446128091e+01 -2.4803293309362413e+00 -5.3669856238593502e+02 9.9999999999999986e+01 -5.3669856238593514e+00 -1.6804762991468237e+01 1.1437777367608888e+01\n", - " 212 9.9993508458706714e+01 9.9994773035287068e+01 -2.4842344155888889e+00 -5.3654179194283893e+02 9.9999999999999972e+01 -5.3654179194283911e+00 -1.6807011832528609e+01 1.1441593913100217e+01\n", - " 213 9.9991702722059415e+01 9.9955108682805246e+01 -2.4835596301206189e+00 -5.3625177152308265e+02 1.0000000000000000e+02 -5.3625177152308270e+00 -1.6808696435026317e+01 1.1446178719795492e+01\n", - " 214 1.0000406480011080e+02 1.0000208029969357e+02 -2.4935444491760572e+00 -5.3617731474449226e+02 1.0000000000000004e+02 -5.3617731474449197e+00 -1.6811795812819046e+01 1.1450022665374128e+01\n", - " 215 9.9966799513897882e+01 9.9935484829683745e+01 -2.4726815446096504e+00 -5.3597452233334855e+02 1.0000000000000000e+02 -5.3597452233334852e+00 -1.6813501657051280e+01 1.1453756433717793e+01\n", - " 216 1.0000542989876003e+02 1.0003068269817412e+02 -2.4889897865734545e+00 -5.3491462841533064e+02 1.0000000000000001e+02 -5.3491462841533055e+00 -1.6813129865152003e+01 1.1463983580998695e+01\n", - " 217 9.9940618209265011e+01 9.9906758946312365e+01 -2.4454353942702634e+00 -5.3668229281335346e+02 1.0000000000000000e+02 -5.3668229281335345e+00 -1.6811490531816297e+01 1.1444667603682758e+01\n", - " 218 1.0002506695650180e+02 1.0003503389979427e+02 -2.4857865387173681e+00 -5.3631852968732824e+02 1.0000000000000000e+02 -5.3631852968732820e+00 -1.6816911540459820e+01 1.1453726243586537e+01\n", - " 219 9.9998373984590216e+01 9.9996313967385547e+01 -2.4953311076786640e+00 -5.3642187769776820e+02 9.9999999999999986e+01 -5.3642187769776832e+00 -1.6814443778969526e+01 1.1450225001991845e+01\n", - " 220 9.9946546386168819e+01 9.9889238227049617e+01 -2.4505066055361913e+00 -5.3713471622418683e+02 1.0000000000000001e+02 -5.3713471622418671e+00 -1.6815496465372341e+01 1.1444149303130471e+01\n", - " 221 1.0003641758696274e+02 1.0007168962405568e+02 -2.4974830171314744e+00 -5.3613842288431624e+02 1.0000000000000001e+02 -5.3613842288431615e+00 -1.6816115111403363e+01 1.1454730882560204e+01\n", - " 222 9.9971293542854724e+01 9.9958488800975104e+01 -2.4815540851694777e+00 -5.3609020223952746e+02 1.0000000000000000e+02 -5.3609020223952744e+00 -1.6816317391429667e+01 1.1455415369034396e+01\n", - " 223 9.9987400832416668e+01 9.9990922112551402e+01 -2.4780141290242987e+00 -5.3664820941439064e+02 1.0000000000000000e+02 -5.3664820941439064e+00 -1.6817927488059080e+01 1.1451445393915176e+01\n", - " 224 1.0000968450981038e+02 9.9996961133437253e+01 -2.4889388357807793e+00 -5.3628480874393779e+02 1.0000000000000000e+02 -5.3628480874393780e+00 -1.6818096009881927e+01 1.1455247922442551e+01\n", - " 225 9.9994004853629363e+01 9.9983965725618333e+01 -2.4853873782699378e+00 -5.3645314738383365e+02 1.0000000000000000e+02 -5.3645314738383370e+00 -1.6816556665721123e+01 1.1452025191882790e+01\n", - " 226 9.9988602019812348e+01 9.9957579220779621e+01 -2.4926197729796864e+00 -5.3592034682487463e+02 1.0000000000000000e+02 -5.3592034682487464e+00 -1.6815626492756124e+01 1.1456423024507378e+01\n", - " 227 9.9985031066832832e+01 1.0002020354250051e+02 -2.4929153732997746e+00 -5.3614819753418942e+02 1.0000000000000001e+02 -5.3614819753418930e+00 -1.6815107654524759e+01 1.1453625679182867e+01\n", - " 228 9.9973258617255127e+01 9.9904965713078056e+01 -2.4641683073134106e+00 -5.3564247576597575e+02 9.9999999999999986e+01 -5.3564247576597586e+00 -1.6815840682339335e+01 1.1459415924679574e+01\n", - " 229 9.9983483891980484e+01 9.9940684177976280e+01 -2.4567825754124817e+00 -5.3644219427929238e+02 9.9999999999999986e+01 -5.3644219427929247e+00 -1.6813950156362960e+01 1.1449528213570035e+01\n", - " 230 1.0000579334305813e+02 1.0002919364240698e+02 -2.4798722332028182e+00 -5.3688478187406417e+02 1.0000000000000003e+02 -5.3688478187406403e+00 -1.6815419624784788e+01 1.1446571806044151e+01\n", - " 231 1.0000260311552671e+02 1.0002414243423398e+02 -2.4961603275355619e+00 -5.3714024247595125e+02 1.0000000000000000e+02 -5.3714024247595127e+00 -1.6811872156058147e+01 1.1440469731298636e+01\n", - " 232 9.9974792704279793e+01 9.9939964311850815e+01 -2.4746102406879218e+00 -5.3708720953452314e+02 1.0000000000000000e+02 -5.3708720953452316e+00 -1.6810829373831215e+01 1.1439957278485984e+01\n", - " 233 9.9982151239675460e+01 9.9956285128962961e+01 -2.4704803915158964e+00 -5.3788034033315489e+02 1.0000000000000000e+02 -5.3788034033315490e+00 -1.6811100827549470e+01 1.1432297424217920e+01\n", - " 234 1.0003270788666802e+02 1.0006487735273190e+02 -2.5131703105496199e+00 -5.3863100176646515e+02 1.0000000000000000e+02 -5.3863100176646519e+00 -1.6814530921937859e+01 1.1428220904273207e+01\n", - " 235 9.9970445421088939e+01 9.9951880493517962e+01 -2.4901460410190954e+00 -5.3835352462939227e+02 1.0000000000000003e+02 -5.3835352462939206e+00 -1.6812753904772507e+01 1.1429218658478588e+01\n", - " 236 1.0001946140303124e+02 1.0007257337749219e+02 -2.5293728187506881e+00 -5.3879003289342620e+02 1.0000000000000001e+02 -5.3879003289342613e+00 -1.6814137466458636e+01 1.1426237137524375e+01\n", - " 237 9.9966557580619209e+01 9.9933475471022817e+01 -2.5056830969189905e+00 -5.3886157177921950e+02 1.0000000000000000e+02 -5.3886157177921952e+00 -1.6809976611104894e+01 1.1421360893312698e+01\n", - " 238 1.0001956144900427e+02 1.0000346793143575e+02 -2.5355207932352699e+00 -5.3819754143425450e+02 1.0000000000000000e+02 -5.3819754143425449e+00 -1.6803537438837484e+01 1.1421562024494941e+01\n", - " 239 9.9935677169596914e+01 9.9879666889680237e+01 -2.4727250069619275e+00 -5.3677517455328154e+02 1.0000000000000001e+02 -5.3677517455328143e+00 -1.6805232739895331e+01 1.1437480994362513e+01\n", - " 240 1.0001219481026172e+02 9.9983089746030473e+01 -2.4799658646160081e+00 -5.3731230561786072e+02 1.0000000000000000e+02 -5.3731230561786072e+00 -1.6807149947268364e+01 1.1434026891089754e+01\n", - " 241 9.9969551031089964e+01 9.9992273799581724e+01 -2.4801023183325470e+00 -5.3729553476971637e+02 9.9999999999999972e+01 -5.3729553476971654e+00 -1.6802461441457904e+01 1.1429506093760738e+01\n", - " 242 9.9983409857723288e+01 9.9971601297470286e+01 -2.4915210047717533e+00 -5.3746115012505288e+02 1.0000000000000001e+02 -5.3746115012505280e+00 -1.6807052654712646e+01 1.1432441153462118e+01\n", - " 243 9.9995043208999732e+01 9.9992666926940188e+01 -2.4900019056420102e+00 -5.3765895295719736e+02 1.0000000000000001e+02 -5.3765895295719730e+00 -1.6812258863320654e+01 1.1435669333748681e+01\n", - " 244 9.9970181049578898e+01 9.9934810561398592e+01 -2.4691546880512143e+00 -5.3775740389752673e+02 9.9999999999999972e+01 -5.3775740389752693e+00 -1.6811915784905423e+01 1.1434341745930157e+01\n", - " 245 1.0000576311513579e+02 1.0000586999912002e+02 -2.4904902046259187e+00 -5.3765446115267866e+02 1.0000000000000003e+02 -5.3765446115267848e+00 -1.6814209151995421e+01 1.1437664540468635e+01\n", - " 246 9.9992263833232073e+01 1.0000529634712295e+02 -2.4978318615557442e+00 -5.3763768166867487e+02 1.0000000000000003e+02 -5.3763768166867472e+00 -1.6811249243446348e+01 1.1434872426759604e+01\n", - " 247 9.9967683016732209e+01 9.9914797051750469e+01 -2.4721901161938122e+00 -5.3867646973701710e+02 1.0000000000000001e+02 -5.3867646973701699e+00 -1.6800969101441403e+01 1.1414204404071231e+01\n", - " 248 1.0004235376180490e+02 1.0009242881170860e+02 -2.5473547483540413e+00 -5.4117377623766447e+02 1.0000000000000000e+02 -5.4117377623766449e+00 -1.6804293126980312e+01 1.1392555364603664e+01\n", - " 249 9.9972381948005207e+01 9.9976327914318887e+01 -2.5079267406918300e+00 -5.3761711637690723e+02 1.0000000000000003e+02 -5.3761711637690706e+00 -1.6809259661292160e+01 1.1433088497523089e+01\n", - " 250 9.9982448249761418e+01 9.9908804201697592e+01 -2.5033240531194014e+00 -5.3692478880093961e+02 1.0000000000000000e+02 -5.3692478880093963e+00 -1.6808840543384832e+01 1.1439592655375431e+01\n", - " 251 9.9972998221592860e+01 9.9941937830605966e+01 -2.4905435941471050e+00 -5.3836677161532214e+02 1.0000000000000003e+02 -5.3836677161532194e+00 -1.6815632608515369e+01 1.1431964892362146e+01\n", - " 252 9.9999257481538777e+01 9.9996454346792277e+01 -2.4889214223711957e+00 -5.3850974963725946e+02 9.9999999999999986e+01 -5.3850974963725955e+00 -1.6811744148707330e+01 1.1426646652334734e+01\n", - " 253 9.9992991053206353e+01 9.9980739319318488e+01 -2.5082432745757912e+00 -5.3744709562706146e+02 1.0000000000000001e+02 -5.3744709562706134e+00 -1.6810321268405382e+01 1.1435850312134766e+01\n", - " 254 9.9988513610620984e+01 9.9967927574846797e+01 -2.4950024822752677e+00 -5.3749758131197746e+02 9.9999999999999972e+01 -5.3749758131197769e+00 -1.6808821807884165e+01 1.1433845994764381e+01\n", - " 255 9.9961722148531550e+01 9.9921023612339212e+01 -2.4737852651773489e+00 -5.3834515047883121e+02 9.9999999999999986e+01 -5.3834515047883134e+00 -1.6807825231160798e+01 1.1424373726372483e+01\n", - " 256 1.0004532734995881e+02 1.0004739368733746e+02 -2.5204204725775363e+00 -5.3768109911967645e+02 9.9999999999999986e+01 -5.3768109911967654e+00 -1.6809494218039426e+01 1.1432683226842659e+01\n", - " 257 1.0000934289577748e+02 1.0003584456534742e+02 -2.5348536668762942e+00 -5.3752877514341117e+02 1.0000000000000000e+02 -5.3752877514341115e+00 -1.6808287966490489e+01 1.1433000215056374e+01\n", - " 258 9.9948086108563331e+01 9.9853905395858789e+01 -2.4882053054768849e+00 -5.3704544314132352e+02 1.0000000000000000e+02 -5.3704544314132354e+00 -1.6808733458544047e+01 1.1438279027130809e+01\n", - " 259 1.0001106948199629e+02 1.0000115980536144e+02 -2.4982173953109381e+00 -5.3676684961287822e+02 1.0000000000000001e+02 -5.3676684961287817e+00 -1.6807061385520655e+01 1.1439392889391875e+01\n", - " 260 9.9944200723043906e+01 9.9881702959965338e+01 -2.4645434125679575e+00 -5.3683785697170333e+02 1.0000000000000001e+02 -5.3683785697170325e+00 -1.6806953337497344e+01 1.1438574767780306e+01\n", - " 261 1.0001616454421162e+02 1.0002965365105908e+02 -2.4818128326815629e+00 -5.3697301209369994e+02 1.0000000000000000e+02 -5.3697301209369996e+00 -1.6809107597448318e+01 1.1439377476511318e+01\n", - " 262 1.0001694897148094e+02 9.9997260374230024e+01 -2.5015203965385950e+00 -5.3686152046303675e+02 9.9999999999999972e+01 -5.3686152046303697e+00 -1.6807184761933772e+01 1.1438569557303401e+01\n", - " 263 9.9951253873692366e+01 9.9927186089176445e+01 -2.4703207657281059e+00 -5.3631719827159236e+02 1.0000000000000001e+02 -5.3631719827159232e+00 -1.6804211378137015e+01 1.1441039395421091e+01\n", - " 264 1.0000680864276511e+02 9.9978148068839658e+01 -2.4768937585305610e+00 -5.3595727480914127e+02 1.0000000000000000e+02 -5.3595727480914128e+00 -1.6807802267672077e+01 1.1448229519580666e+01\n", - " 265 9.9970830661280402e+01 9.9961534350171419e+01 -2.4615548443330901e+00 -5.3576420607031253e+02 9.9999999999999986e+01 -5.3576420607031263e+00 -1.6801518364758277e+01 1.1443876304055152e+01\n", - " 266 1.0001447803363459e+02 9.9988437806194952e+01 -2.4792758306962606e+00 -5.3599693110665646e+02 1.0000000000000001e+02 -5.3599693110665640e+00 -1.6799044642380395e+01 1.1439075331313834e+01\n", - " 267 1.0001500643232858e+02 1.0005758020158956e+02 -2.5045091811558660e+00 -5.3704418013073803e+02 1.0000000000000001e+02 -5.3704418013073791e+00 -1.6798660166072160e+01 1.1428218364764783e+01\n", - " 268 9.9948018226082695e+01 9.9876029391693905e+01 -2.4517450882341638e+00 -5.3726537218732835e+02 1.0000000000000001e+02 -5.3726537218732826e+00 -1.6796898307873267e+01 1.1424244585999979e+01\n", - " 269 1.0004051590315403e+02 1.0005870065763219e+02 -2.5075302308965735e+00 -5.3835008765335488e+02 9.9999999999999986e+01 -5.3835008765335495e+00 -1.6796963605393646e+01 1.1413462728860093e+01\n", - " 270 1.0001271084160672e+02 1.0003478318558555e+02 -2.5334492677456271e+00 -5.3900992915658298e+02 1.0000000000000000e+02 -5.3900992915658303e+00 -1.6797448591036993e+01 1.1407349299471162e+01\n", - " 271 9.9941182968942741e+01 9.9904542442916650e+01 -2.4961804862942727e+00 -5.3884479900396207e+02 9.9999999999999986e+01 -5.3884479900396220e+00 -1.6797975018669110e+01 1.1409527028629489e+01\n", - " 272 1.0003902507394248e+02 1.0004630824713173e+02 -2.5365001249861363e+00 -5.3809450530122899e+02 9.9999999999999986e+01 -5.3809450530122911e+00 -1.6803252319625628e+01 1.1422307266613336e+01\n", - " 273 9.9973430473277986e+01 9.9972704365956929e+01 -2.5295020511374497e+00 -5.3748062031264453e+02 9.9999999999999986e+01 -5.3748062031264467e+00 -1.6804612068657175e+01 1.1429805865530732e+01\n", - " 274 9.9914904710724230e+01 9.9814510008171979e+01 -2.4553975987970720e+00 -5.3754598997803805e+02 1.0000000000000000e+02 -5.3754598997803802e+00 -1.6801684359204479e+01 1.1426224459424095e+01\n", - " 275 9.9994466559888494e+01 9.9979852914402144e+01 -2.4773153225620814e+00 -5.3794375917033528e+02 1.0000000000000001e+02 -5.3794375917033523e+00 -1.6795545673022588e+01 1.1416108081319230e+01\n", - " 276 9.9979078126461999e+01 9.9963059736908832e+01 -2.4742634752767625e+00 -5.3768344469783131e+02 1.0000000000000000e+02 -5.3768344469783136e+00 -1.6803372315857015e+01 1.1426537868878704e+01\n", - " 277 9.9991351735502391e+01 9.9967357453624459e+01 -2.4779152615060944e+00 -5.3729573500735705e+02 1.0000000000000000e+02 -5.3729573500735706e+00 -1.6799551030521336e+01 1.1426593680447764e+01\n", - " 278 9.9976231597016493e+01 9.9983101979727564e+01 -2.4655266856381419e+00 -5.3657996662784990e+02 1.0000000000000000e+02 -5.3657996662784990e+00 -1.6803389545435106e+01 1.1437589879156610e+01\n", - " 279 9.9981352482260718e+01 9.9932549732644802e+01 -2.4727491914857236e+00 -5.3616474568173578e+02 1.0000000000000003e+02 -5.3616474568173560e+00 -1.6802522175705374e+01 1.1440874718888018e+01\n", - " 280 1.0001921290364500e+02 1.0004240039663020e+02 -2.4908047250070546e+00 -5.3626827580939369e+02 9.9999999999999986e+01 -5.3626827580939382e+00 -1.6802840423627895e+01 1.1440157665533954e+01\n", - " 281 9.9978940327346862e+01 9.9943425756090932e+01 -2.4749124346434646e+00 -5.3677328793986203e+02 1.0000000000000000e+02 -5.3677328793986208e+00 -1.6803516756468238e+01 1.1435783877069616e+01\n", - " 282 1.0000561801084683e+02 9.9995389083250487e+01 -2.4925574071826930e+00 -5.3677074895877297e+02 9.9999999999999972e+01 -5.3677074895877315e+00 -1.6807061826548711e+01 1.1439354336960978e+01\n", - " 283 9.9971772039470395e+01 9.9932169709237641e+01 -2.4657081198620245e+00 -5.3742404904663545e+02 1.0000000000000000e+02 -5.3742404904663550e+00 -1.6810138286758910e+01 1.1435897796292553e+01\n", - " 284 1.0004226755515883e+02 1.0007485321402150e+02 -2.5144807510780933e+00 -5.3829437740118692e+02 1.0000000000000000e+02 -5.3829437740118697e+00 -1.6814371667708528e+01 1.1431427893696657e+01\n", - " 285 9.9943647589470999e+01 9.9906794636524083e+01 -2.4756525260784001e+00 -5.3867820876173982e+02 1.0000000000000001e+02 -5.3867820876173971e+00 -1.6817486728494377e+01 1.1430704640876982e+01\n", - " 286 1.0005917731258778e+02 1.0009416293061442e+02 -2.5387831157810594e+00 -5.3795162102432357e+02 1.0000000000000000e+02 -5.3795162102432359e+00 -1.6812498299758733e+01 1.1432982089515502e+01\n", - " 287 9.9917881422370996e+01 9.9855209826333180e+01 -2.4729644321023287e+00 -5.3796059987820695e+02 1.0000000000000000e+02 -5.3796059987820692e+00 -1.6814953729541379e+01 1.1435347730759311e+01\n", - " 288 1.0001807150440840e+02 1.0000119104444795e+02 -2.4969003479380900e+00 -5.3954217262480881e+02 1.0000000000000000e+02 -5.3954217262480881e+00 -1.6817080372804970e+01 1.1421658646556882e+01\n", - " 289 9.9997024227377409e+01 9.9972541718414604e+01 -2.5100592200819976e+00 -5.3892632855587851e+02 1.0000000000000003e+02 -5.3892632855587834e+00 -1.6814837229156353e+01 1.1425573943597570e+01\n", - " 290 9.9965202655726628e+01 9.9926589754407814e+01 -2.4793242323755393e+00 -5.3709761480599468e+02 9.9999999999999972e+01 -5.3709761480599489e+00 -1.6811938726230899e+01 1.1440962578170952e+01\n", - " 291 1.0002668891868433e+02 1.0002383940472737e+02 -2.5159966270653058e+00 -5.3760842497233102e+02 1.0000000000000003e+02 -5.3760842497233083e+00 -1.6811431957273921e+01 1.1435347707550612e+01\n", - " 292 9.9986190380648665e+01 1.0001833400959245e+02 -2.5158750699027688e+00 -5.3819651916666919e+02 9.9999999999999986e+01 -5.3819651916666933e+00 -1.6809418499257507e+01 1.1427453307590817e+01\n", - " 293 9.9940795291858578e+01 9.9874655724736485e+01 -2.4795192591938395e+00 -5.3717720026501036e+02 1.0000000000000000e+02 -5.3717720026501032e+00 -1.6814012728928976e+01 1.1442240726278873e+01\n", - " 294 1.0000866899314767e+02 9.9983420197677148e+01 -2.4895584984046777e+00 -5.3682080698078494e+02 9.9999999999999986e+01 -5.3682080698078503e+00 -1.6814769547958083e+01 1.1446561478150235e+01\n", - " 295 1.0000677361224587e+02 1.0001272823642960e+02 -2.5030777260900301e+00 -5.3635734500491992e+02 9.9999999999999986e+01 -5.3635734500492003e+00 -1.6816281561309758e+01 1.1452708111260556e+01\n", - " 296 9.9959171380650105e+01 9.9889614354061848e+01 -2.4500288839050572e+00 -5.3653681657956167e+02 9.9999999999999957e+01 -5.3653681657956191e+00 -1.6815542041287500e+01 1.1450173875491886e+01\n", - " 297 1.0001832687208218e+02 1.0001636246914624e+02 -2.4792331846986824e+00 -5.3579464635436216e+02 9.9999999999999986e+01 -5.3579464635436223e+00 -1.6811585438970791e+01 1.1453638975427166e+01\n", - " 298 9.9985398881009118e+01 9.9990583177572489e+01 -2.4835554631685941e+00 -5.3629421194094130e+02 1.0000000000000001e+02 -5.3629421194094125e+00 -1.6816893560579370e+01 1.1453951441169959e+01\n", - " 299 9.9980377152279090e+01 9.9971474569247363e+01 -2.4758387312583774e+00 -5.3654302708279840e+02 1.0000000000000000e+02 -5.3654302708279840e+00 -1.6815320213179987e+01 1.1449889942352002e+01\n", - " 300 9.9992127051181271e+01 9.9988307922560679e+01 -2.4776331406867693e+00 -5.3660295949572458e+02 1.0000000000000000e+02 -5.3660295949572463e+00 -1.6815939123707516e+01 1.1449909528750270e+01\n", - " 301 1.0002372086014518e+02 1.0003798580764452e+02 -2.5068646742857186e+00 -5.3684730421626659e+02 9.9999999999999986e+01 -5.3684730421626670e+00 -1.6817496452526015e+01 1.1449023410363349e+01\n", - " 302 9.9983187998204500e+01 1.0000642818132030e+02 -2.5042167136549125e+00 -5.3646450274997915e+02 1.0000000000000000e+02 -5.3646450274997912e+00 -1.6818192800804827e+01 1.1453547773305036e+01\n", - " 303 9.9970981766441113e+01 9.9916685053733218e+01 -2.4810304558835745e+00 -5.3719151049502750e+02 1.0000000000000004e+02 -5.3719151049502720e+00 -1.6812152190050469e+01 1.1440237085100197e+01\n", - " 304 9.9993923987440311e+01 9.9972160293840204e+01 -2.4909870299398622e+00 -5.3732645065795214e+02 1.0000000000000001e+02 -5.3732645065795204e+00 -1.6809430337312072e+01 1.1436165830732554e+01\n", - " 305 1.0002554178281977e+02 1.0006270630467962e+02 -2.5230426408877711e+00 -5.3886552064110833e+02 1.0000000000000003e+02 -5.3886552064110820e+00 -1.6808813615125903e+01 1.1420158408714821e+01\n", - " 306 9.9997495062346204e+01 9.9980397652855672e+01 -2.5326051831085841e+00 -5.3961758167928008e+02 1.0000000000000000e+02 -5.3961758167928009e+00 -1.6810371943673175e+01 1.1414196126880375e+01\n", - " 307 9.9965708337755046e+01 9.9919725180608367e+01 -2.5005859963699661e+00 -5.3996248865939435e+02 9.9999999999999972e+01 -5.3996248865939451e+00 -1.6814622188737633e+01 1.1414997302143687e+01\n", - " 308 9.9994515623315380e+01 9.9993103056989227e+01 -2.5101769526432758e+00 -5.3852580027832096e+02 1.0000000000000001e+02 -5.3852580027832087e+00 -1.6808679543738027e+01 1.1423421540954815e+01\n", - " 309 9.9984618105781436e+01 1.0071834614539672e+02 -2.4919149017677680e+00 -5.3678909813369364e+02 1.0000000000000000e+02 -5.3678909813369362e+00 -1.6806370410396060e+01 1.1438479429059122e+01\n", - " 310 9.9988881661531920e+01 9.9950406656624679e+01 -2.4834938804460682e+00 -5.3584804815506243e+02 9.9999999999999986e+01 -5.3584804815506253e+00 -1.6812910806024998e+01 1.1454430324474377e+01\n", - " 311 1.0000361506053572e+02 1.0001135047068398e+02 -2.5017845012565476e+00 -5.3597125091902592e+02 1.0000000000000003e+02 -5.3597125091902571e+00 -1.6810759090337903e+01 1.1451046581147653e+01\n", - " 312 9.9982718336903815e+01 9.9960694487788956e+01 -2.4909793319786506e+00 -5.3566042185354081e+02 1.0000000000000001e+02 -5.3566042185354075e+00 -1.6811492051052355e+01 1.1454887832516947e+01\n", - " 313 9.9970824503980253e+01 9.9961108658528289e+01 -2.4798683223270124e+00 -5.3595492280538303e+02 1.0000000000000000e+02 -5.3595492280538304e+00 -1.6811225416119047e+01 1.1451676188065218e+01\n", - " 314 1.0000998500871370e+02 9.9988178577145405e+01 -2.4991022397490821e+00 -5.3585938685809720e+02 1.0000000000000000e+02 -5.3585938685809724e+00 -1.6814895421849293e+01 1.1456301553268316e+01\n", - " 315 9.9960800857309010e+01 9.9956614440412039e+01 -2.4676457049423539e+00 -5.3530520124714178e+02 9.9999999999999972e+01 -5.3530520124714194e+00 -1.6814515387797297e+01 1.1461463375325875e+01\n", - " 316 9.9989549348185108e+01 9.9961157265218262e+01 -2.4775577670244751e+00 -5.3598008968373711e+02 9.9999999999999986e+01 -5.3598008968373723e+00 -1.6814444532897184e+01 1.1454643636059814e+01\n", - " 317 1.0002459038556771e+02 1.0007616166677956e+02 -2.5084941158313292e+00 -5.3594515737896540e+02 9.9999999999999986e+01 -5.3594515737896549e+00 -1.6813242107788859e+01 1.1453790533999202e+01\n", - " 318 9.9984588160244783e+01 9.9965347548872671e+01 -2.4907906759326992e+00 -5.3707894859488692e+02 1.0000000000000000e+02 -5.3707894859488690e+00 -1.6816213351961448e+01 1.1445423866012575e+01\n", - " 319 9.9991430703264854e+01 9.9964230663504594e+01 -2.5059082424639891e+00 -5.3824121785537227e+02 1.0000000000000001e+02 -5.3824121785537216e+00 -1.6811041073000219e+01 1.1428628894446497e+01\n", - " 320 9.9953723565433720e+01 9.9962691520259867e+01 -2.4751513224023518e+00 -5.3638192145421965e+02 9.9999999999999986e+01 -5.3638192145421977e+00 -1.6807891176560123e+01 1.1444071962017924e+01\n", - " 321 1.0000094487169618e+02 9.9938105417714979e+01 -2.4815681309886743e+00 -5.3725561976177539e+02 1.0000000000000001e+02 -5.3725561976177527e+00 -1.6808629311844239e+01 1.1436073114226486e+01\n", - " 322 1.0000994179706930e+02 1.0003400564788785e+02 -2.5054832988363391e+00 -5.3776372806349741e+02 1.0000000000000000e+02 -5.3776372806349739e+00 -1.6811093686168970e+01 1.1433456405534001e+01\n", - " 323 9.9974041514857802e+01 9.9935091539535875e+01 -2.4825167015533354e+00 -5.3708852231301910e+02 1.0000000000000000e+02 -5.3708852231301911e+00 -1.6810067811557143e+01 1.1439182588426950e+01\n", - " 324 9.9983570546615681e+01 9.9955380013218260e+01 -2.4736966448412274e+00 -5.3701320921980800e+02 1.0000000000000000e+02 -5.3701320921980802e+00 -1.6815921781158533e+01 1.1445789688960447e+01\n", - " 325 9.9991854063094479e+01 9.9971952440811464e+01 -2.4778395170979866e+00 -5.3800824837298626e+02 9.9999999999999986e+01 -5.3800824837298640e+00 -1.6816926373682314e+01 1.1436843889952451e+01\n", - " 326 1.0001586992726450e+02 1.0002373595229508e+02 -2.4992939727000616e+00 -5.3766258433460655e+02 9.9999999999999986e+01 -5.3766258433460665e+00 -1.6813698376900863e+01 1.1437072533554794e+01\n", - " 327 9.9997993362792755e+01 9.9995078809907099e+01 -2.4982009642040643e+00 -5.3889645569313427e+02 1.0000000000000000e+02 -5.3889645569313425e+00 -1.6815011655739596e+01 1.1426047098808253e+01\n", - " 328 9.9985308421865014e+01 9.9966693653012570e+01 -2.5157959755727455e+00 -5.4102921399310173e+02 1.0000000000000000e+02 -5.4102921399310171e+00 -1.6815187580128104e+01 1.1404895440197086e+01\n", - " 329 9.9997924841191448e+01 1.0003312393541356e+02 -2.5287202566509652e+00 -5.4004446242159611e+02 1.0000000000000001e+02 -5.4004446242159601e+00 -1.6810058999975055e+01 1.1409614375759096e+01\n", - " 330 9.9963052965208362e+01 9.9965686942363519e+01 -2.5182824722052994e+00 -5.3846642086154202e+02 1.0000000000000001e+02 -5.3846642086154191e+00 -1.6811431442615788e+01 1.1426767234000366e+01\n", - " 331 9.9997949765913091e+01 9.9976589341920871e+01 -2.5257982012759070e+00 -5.3859986579245538e+02 1.0000000000000000e+02 -5.3859986579245538e+00 -1.6817505153605229e+01 1.1431506495680678e+01\n", - " 332 9.9981926367569216e+01 9.9972500542522781e+01 -2.5209498322604746e+00 -5.4124096198954931e+02 1.0000000000000001e+02 -5.4124096198954925e+00 -1.6816911592008065e+01 1.1404501972112572e+01\n", - " 333 1.0000575042799876e+02 1.0005103640628262e+02 -2.5581544100375266e+00 -5.4076537730646760e+02 1.0000000000000000e+02 -5.4076537730646761e+00 -1.6812821276680523e+01 1.1405167503615846e+01\n", - " 334 9.9977826522382202e+01 9.9927590660390820e+01 -2.5330112587712987e+00 -5.3859462909432045e+02 1.0000000000000003e+02 -5.3859462909432025e+00 -1.6807754218961989e+01 1.1421807928018785e+01\n", - " 335 9.9954214036100382e+01 9.9866247052412788e+01 -2.4879113691993133e+00 -5.3868400919493445e+02 9.9999999999999986e+01 -5.3868400919493453e+00 -1.6809857567678435e+01 1.1423017475729091e+01\n", - " 336 1.0001538573828864e+02 9.9997563989120607e+01 -2.5206763620636097e+00 -5.3870773523699359e+02 1.0000000000000001e+02 -5.3870773523699347e+00 -1.6810082410975046e+01 1.1423005058605108e+01\n", - " 337 9.9962099439103298e+01 9.9966955337552079e+01 -2.4982755143461732e+00 -5.3890162775144142e+02 9.9999999999999986e+01 -5.3890162775144157e+00 -1.6810154695184565e+01 1.1421138417670150e+01\n", - " 338 9.9966517626712630e+01 9.9927331459213264e+01 -2.4845936048505974e+00 -5.3721929504650086e+02 1.0000000000000003e+02 -5.3721929504650072e+00 -1.6810796164259290e+01 1.1438603213794284e+01\n", - " 339 1.0001969795237262e+02 1.0002250741095760e+02 -2.5129453706696707e+00 -5.3643402573631556e+02 9.9999999999999986e+01 -5.3643402573631569e+00 -1.6811571838020566e+01 1.1447231580657414e+01\n", - " 340 9.9980267137466470e+01 9.9948381763899178e+01 -2.4981573846064706e+00 -5.3626939107172893e+02 1.0000000000000000e+02 -5.3626939107172893e+00 -1.6810279817419723e+01 1.1447585906702434e+01\n", - " 341 9.9984697699007754e+01 9.9986939136808488e+01 -2.4832188048131236e+00 -5.3607852031220864e+02 1.0000000000000000e+02 -5.3607852031220862e+00 -1.6815814412141837e+01 1.1455029209019749e+01\n", - " 342 9.9979988335055054e+01 9.9938104163232225e+01 -2.4826626838901116e+00 -5.3754899895153369e+02 9.9999999999999972e+01 -5.3754899895153390e+00 -1.6815221034545427e+01 1.1439731045030088e+01\n", - " 343 9.9994576005478649e+01 9.9991247190507153e+01 -2.4894507989279155e+00 -5.3823959734714208e+02 9.9999999999999986e+01 -5.3823959734714215e+00 -1.6814757442683032e+01 1.1432361469211607e+01\n", - " 344 1.0000739705706724e+02 1.0000719036614743e+02 -2.5001082689156999e+00 -5.3768580251259061e+02 1.0000000000000000e+02 -5.3768580251259062e+00 -1.6814094121504944e+01 1.1437236096379037e+01\n", - " 345 9.9976153807715562e+01 9.9963887661184472e+01 -2.5018089583492515e+00 -5.3742790541619706e+02 1.0000000000000001e+02 -5.3742790541619696e+00 -1.6819803899269726e+01 1.1445524845107757e+01\n", - " 346 9.9986614384987973e+01 1.0074087213051000e+02 -2.4876130199472439e+00 -5.3942957424176973e+02 9.9999999999999986e+01 -5.3942957424176985e+00 -1.6820608061642393e+01 1.1426312319224694e+01\n", - " 347 1.0000745957108106e+02 1.0003762790860594e+02 -2.5252354591024435e+00 -5.4065406449488580e+02 1.0000000000000000e+02 -5.4065406449488584e+00 -1.6825672800165314e+01 1.1419132155216460e+01\n", - " 348 9.9977857929728330e+01 9.9957453197979817e+01 -2.5187174090641133e+00 -5.4185032586457953e+02 1.0000000000000001e+02 -5.4185032586457949e+00 -1.6826984200271667e+01 1.1408480941625871e+01\n", - " 349 1.0003142960426167e+02 1.0007066531546192e+02 -2.5771349723424017e+00 -5.4051893153970377e+02 1.0000000000000001e+02 -5.4051893153970365e+00 -1.6824784370988919e+01 1.1419595055591879e+01\n", - " 350 9.9940803564000660e+01 9.9875804787693852e+01 -2.5240272508804007e+00 -5.4001773081476460e+02 1.0000000000000001e+02 -5.4001773081476454e+00 -1.6823477098973175e+01 1.1423299790825528e+01\n", - " 351 1.0000267826251951e+02 9.9939824670832863e+01 -2.5280070505657730e+00 -5.3814527399383064e+02 9.9999999999999972e+01 -5.3814527399383083e+00 -1.6823471091480904e+01 1.1442018351542595e+01\n", - " 352 9.9913605920871419e+01 9.9085570678950589e+01 -2.4734637871206568e+00 -5.3614000565664389e+02 1.0000000000000000e+02 -5.3614000565664393e+00 -1.6819351159898524e+01 1.1457951103332082e+01\n", - " 353 1.0003017355258503e+02 1.0004561114936801e+02 -2.5021542854805143e+00 -5.3623893206480591e+02 1.0000000000000001e+02 -5.3623893206480586e+00 -1.6818597433140429e+01 1.1456208112492364e+01\n", - " 354 9.9980988672988531e+01 9.9936970930082410e+01 -2.4959583382070272e+00 -5.3651928250919934e+02 1.0000000000000000e+02 -5.3651928250919934e+00 -1.6812805896545221e+01 1.1447613071453230e+01\n", - " 355 9.9997235994135025e+01 9.9970110561258153e+01 -2.4963578440331289e+00 -5.3594434589287437e+02 1.0000000000000000e+02 -5.3594434589287436e+00 -1.6817150569525541e+01 1.1457707110596793e+01\n", - " 356 9.9947579763299061e+01 9.9925120083620641e+01 -2.4542095667000483e+00 -5.3550470178141654e+02 9.9999999999999972e+01 -5.3550470178141678e+00 -1.6819071686208584e+01 1.1464024668394416e+01\n", - " 357 1.0002256730299935e+02 1.0000851750368916e+02 -2.4802620748880546e+00 -5.3525833655567499e+02 1.0000000000000000e+02 -5.3525833655567503e+00 -1.6817939251333947e+01 1.1465355885777194e+01\n", - " 358 1.0000454037100378e+02 1.0000920108366667e+02 -2.4868327808177013e+00 -5.3591841848791466e+02 1.0000000000000001e+02 -5.3591841848791457e+00 -1.6813698491004637e+01 1.1454514306125494e+01\n", - " 359 9.9979413348165508e+01 9.9940964982214396e+01 -2.4839774838299107e+00 -5.3599867678943951e+02 9.9999999999999986e+01 -5.3599867678943962e+00 -1.6811635048045684e+01 1.1451648280151288e+01\n", - " 360 9.9997847994815729e+01 9.9992879940303922e+01 -2.4864982289092326e+00 -5.3596271168622877e+02 1.0000000000000000e+02 -5.3596271168622875e+00 -1.6808481371011617e+01 1.1448854254149326e+01\n", - " 361 9.9972542102795728e+01 9.9955300882478497e+01 -2.4664830636354154e+00 -5.3820111983569848e+02 9.9999999999999972e+01 -5.3820111983569872e+00 -1.6812186461555704e+01 1.1430175263198716e+01\n", - " 362 1.0003866119934024e+02 1.0007242231507982e+02 -2.5364560728024368e+00 -5.3915661897189716e+02 1.0000000000000001e+02 -5.3915661897189704e+00 -1.6812120453394826e+01 1.1420554263675857e+01\n", - " 363 9.9990478447435834e+01 1.0002256901476831e+02 -2.5293035455158108e+00 -5.4054802481957313e+02 1.0000000000000000e+02 -5.4054802481957314e+00 -1.6818019921653704e+01 1.1412539673457969e+01\n", - " 364 9.9992365900524192e+01 9.9966463495102360e+01 -2.5378908067578578e+00 -5.4071332166677576e+02 9.9999999999999986e+01 -5.4071332166677584e+00 -1.6814729381495482e+01 1.1407596164827719e+01\n", - " 365 9.9998315459032298e+01 1.0000728380254264e+02 -2.5409873884189533e+00 -5.4026520662237101e+02 1.0000000000000001e+02 -5.4026520662237090e+00 -1.6815277473151173e+01 1.1412625406927463e+01\n", - " 366 9.9980185485926086e+01 9.9952662066829134e+01 -2.5318812353006650e+00 -5.4011265505476115e+02 1.0000000000000000e+02 -5.4011265505476116e+00 -1.6819842746040564e+01 1.1418716195492950e+01\n", - " 367 9.9985688001098609e+01 9.9935988901870076e+01 -2.5158418377924670e+00 -5.3895498300905183e+02 1.0000000000000001e+02 -5.3895498300905178e+00 -1.6820822544819173e+01 1.1431272714728655e+01\n", - " 368 9.9981593256913371e+01 9.9957090639381903e+01 -2.5100261663864649e+00 -5.3798931208583929e+02 9.9999999999999986e+01 -5.3798931208583936e+00 -1.6825382567728095e+01 1.1445489446869701e+01\n", - " 369 1.0001999292130351e+02 1.0001713162775046e+02 -2.5305893788847902e+00 -5.3880161843503549e+02 1.0000000000000000e+02 -5.3880161843503549e+00 -1.6824249759047269e+01 1.1436233574696912e+01\n", - " 370 9.9958764972011906e+01 9.9908888290044132e+01 -2.5082410918056000e+00 -5.4029931208163225e+02 1.0000000000000001e+02 -5.4029931208163218e+00 -1.6830719291065925e+01 1.1427726170249604e+01\n", - " 371 9.9992653779339761e+01 9.9978465289754311e+01 -2.5116900882019939e+00 -5.3817667936078385e+02 9.9999999999999986e+01 -5.3817667936078397e+00 -1.6830029525733195e+01 1.1448262732125356e+01\n", - " 372 9.9991347686189272e+01 9.9954308892558174e+01 -2.5076772374593124e+00 -5.3846228161444890e+02 9.9999999999999972e+01 -5.3846228161444909e+00 -1.6828864929500313e+01 1.1444242113355825e+01\n", - " 373 9.9975182213590458e+01 9.9949611279273739e+01 -2.4908500937334326e+00 -5.3894750618351907e+02 1.0000000000000000e+02 -5.3894750618351912e+00 -1.6833765902028759e+01 1.1444290840193567e+01\n", - " 374 1.0001612107328017e+02 1.0003270526160624e+02 -2.5318521732164294e+00 -5.3993251089527632e+02 1.0000000000000001e+02 -5.3993251089527625e+00 -1.6834577120456892e+01 1.1435252011504131e+01\n", - " 375 9.9986438615398825e+01 9.9994034155156442e+01 -2.5326218540161505e+00 -5.3847787924532372e+02 1.0000000000000001e+02 -5.3847787924532362e+00 -1.6833694010728198e+01 1.1448915218274959e+01\n", - " 376 9.9959734194493080e+01 9.9900748497221159e+01 -2.5004677047048105e+00 -5.3866711483688368e+02 1.0000000000000000e+02 -5.3866711483688370e+00 -1.6833857375499591e+01 1.1447186227130755e+01\n", - " 377 9.9986972874230275e+01 9.9963011830678767e+01 -2.4954202972439341e+00 -5.3809078391336288e+02 1.0000000000000000e+02 -5.3809078391336289e+00 -1.6834905011579504e+01 1.1453997172445876e+01\n", - " 378 9.9994822419946985e+01 9.9971514438282853e+01 -2.5084241918099375e+00 -5.3803882503698492e+02 1.0000000000000000e+02 -5.3803882503698492e+00 -1.6832944999006187e+01 1.1452556748636338e+01\n", - " 379 9.9969279890439566e+01 9.9964894963034880e+01 -2.4907105422911227e+00 -5.3898890812761874e+02 9.9999999999999986e+01 -5.3898890812761886e+00 -1.6839030912032683e+01 1.1449141830756494e+01\n", - " 380 1.0000515720389038e+02 9.9974095824198216e+01 -2.5060043502568119e+00 -5.3967329228757046e+02 1.0000000000000001e+02 -5.3967329228757039e+00 -1.6843379920997872e+01 1.1446646998122175e+01\n", - " 381 9.9993325574937558e+01 9.9972352131520552e+01 -2.5123993552680997e+00 -5.3767125302188776e+02 1.0000000000000001e+02 -5.3767125302188772e+00 -1.6830664852330280e+01 1.1453952322111400e+01\n", - " 382 9.9953184626886156e+01 9.9913164791108613e+01 -2.4809875750151820e+00 -5.3835183535815179e+02 1.0000000000000001e+02 -5.3835183535815174e+00 -1.6824387317157040e+01 1.1440868963575522e+01\n", - " 383 1.0000076589574019e+02 1.0001265887347961e+02 -2.5012970902978879e+00 -5.3878944252180827e+02 9.9999999999999972e+01 -5.3878944252180849e+00 -1.6822455344368798e+01 1.1434560919150714e+01\n", - " 384 1.0000759730890941e+02 1.0001060473413546e+02 -2.5224442502276001e+00 -5.3966919259533574e+02 9.9999999999999972e+01 -5.3966919259533590e+00 -1.6822663351960774e+01 1.1425971426007415e+01\n", - " 385 9.9989324282881540e+01 9.9994602033394912e+01 -2.5131929161458593e+00 -5.3893017780513821e+02 1.0000000000000001e+02 -5.3893017780513812e+00 -1.6825232423237743e+01 1.1435930645186358e+01\n", - " 386 9.9980257090275586e+01 9.9939510527585142e+01 -2.5143926226825060e+00 -5.4060755192804186e+02 1.0000000000000001e+02 -5.4060755192804182e+00 -1.6817988464901457e+01 1.1411912945621037e+01\n", - " 387 1.0000013557088552e+02 1.0000654700595473e+02 -2.5306480760040877e+00 -5.4058355273458676e+02 1.0000000000000001e+02 -5.4058355273458671e+00 -1.6813692792342984e+01 1.1407857264997119e+01\n", - " 388 9.9962337938463833e+01 9.9916309670090712e+01 -2.5019720604571138e+00 -5.3987953008485385e+02 9.9999999999999943e+01 -5.3987953008485414e+00 -1.6812305312096580e+01 1.1413510011248041e+01\n", - " 389 1.0001681130239901e+02 1.0000314937622480e+02 -2.5184660747168701e+00 -5.3960240678397770e+02 1.0000000000000001e+02 -5.3960240678397762e+00 -1.6817596250327998e+01 1.1421572182488219e+01\n", - " 390 1.0003315286618701e+02 1.0003787545568106e+02 -2.5490692251235196e+00 -5.3826161846870650e+02 1.0000000000000000e+02 -5.3826161846870653e+00 -1.6814962550866397e+01 1.1432346366179333e+01\n", - " 391 9.9926682492735608e+01 9.9897834800549433e+01 -2.4906372169456814e+00 -5.3824322732316432e+02 1.0000000000000000e+02 -5.3824322732316432e+00 -1.6808961001333714e+01 1.1426528728102069e+01\n", - " 392 1.0000580937384979e+02 9.9946172189217521e+01 -2.5031325085356682e+00 -5.3757174380711126e+02 1.0000000000000001e+02 -5.3757174380711117e+00 -1.6811791617394643e+01 1.1436074179323530e+01\n", - " 393 9.9981160866112475e+01 9.9992347055857095e+01 -2.5021512282683056e+00 -5.3741407029766833e+02 9.9999999999999986e+01 -5.3741407029766846e+00 -1.6805538073114381e+01 1.1431397370137697e+01\n", - " 394 9.9981089117869729e+01 9.9944007049320135e+01 -2.4899405819655476e+00 -5.3651026292684344e+02 9.9999999999999986e+01 -5.3651026292684358e+00 -1.6805455217804163e+01 1.1440352588535729e+01\n", - " 395 1.0002299000397637e+02 1.0008118082645899e+02 -2.5330710604052573e+00 -5.3729454121134802e+02 1.0000000000000001e+02 -5.3729454121134790e+00 -1.6806677745038993e+01 1.1433732332925521e+01\n", - " 396 9.9950182247483681e+01 9.9914376870722506e+01 -2.4930849703713500e+00 -5.3740612920756519e+02 9.9999999999999986e+01 -5.3740612920756528e+00 -1.6808512895569752e+01 1.1434451603494098e+01\n", - " 397 9.9976883603800871e+01 9.9914658235784316e+01 -2.4825173752755876e+00 -5.3655476002317107e+02 9.9999999999999986e+01 -5.3655476002317117e+00 -1.6813034686080940e+01 1.1447487085849229e+01\n", - " 398 1.0000471020071220e+02 1.0001041624862805e+02 -2.4928453037407845e+00 -5.3667844797907435e+02 1.0000000000000000e+02 -5.3667844797907440e+00 -1.6809360275897461e+01 1.1442575796106716e+01\n", - " 399 9.9965549831098798e+01 9.9917191087705049e+01 -2.4753756527422599e+00 -5.3615435574170317e+02 1.0000000000000001e+02 -5.3615435574170309e+00 -1.6810254514612446e+01 1.1448710957195415e+01\n", - " 400 1.0000088946775675e+02 9.9984393640461974e+01 -2.4786361623407731e+00 -5.3643194739150465e+02 1.0000000000000000e+02 -5.3643194739150468e+00 -1.6807873252054360e+01 1.1443553778139314e+01\n", - "# Reblock based on autocorrelation time\n", - "nsamples, tac = 2, 0.0\n", - "nsamples, tac = 5, 0.06030527329960722\n", - "nsamples, tac = 10, 0.1866211266811364\n", - "nsamples, tac = 21, 1.8346308527135862\n", - "nsamples, tac = 43, 2.4045455125234874\n", - "nsamples, tac = 87, 5.404683504019605\n", - "nsamples, tac = 175, 5.786482775276736\n", - "nsamples, tac = 351, 5.463382431375136\n", - "ETotal_ac,ETotal_error_ac,ETotal_nsamp_ac,ac\n", - "-5.377138918577865,0.0013808392047723354,58,6\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ankitmahajan/softwares/ipie/ipie/analysis/autocorr.py:92: FutureWarning: The behavior of `series[i:j]` with an integer-dtype index is deprecated. In a future version, this will be treated as *label-based* indexing, consistent with e.g. `series[i]` lookups. To retain the old behavior, use `series.iloc[i:j]`. To get the future behavior, use `series.loc[i:j]`.\n", - " tacs += [autocorr_gw2010(y[:n])]\n", - "/Users/ankitmahajan/softwares/ipie/ipie/analysis/autocorr.py:107: FutureWarning: The behavior of `series[i:j]` with an integer-dtype index is deprecated. In a future version, this will be treated as *label-based* indexing, consistent with e.g. `series[i]` lookups. To retain the old behavior, use `series.iloc[i:j]`. To get the future behavior, use `series.loc[i:j]`.\n", - " yblocked += [numpy.mean(y[offset : offset + block_size])]\n", - "/Users/ankitmahajan/softwares/ipie/ipie/analysis/autocorr.py:105: FutureWarning: The behavior of `series[i:j]` with an integer-dtype index is deprecated. In a future version, this will be treated as *label-based* indexing, consistent with e.g. `series[i]` lookups. To retain the old behavior, use `series.iloc[i:j]`. To get the future behavior, use `series.loc[i:j]`.\n", - " yblocked += [numpy.mean(y[offset:])]\n" - ] - } - ], + "outputs": [], "source": [ "from ipie.qmc.calc import build_afqmc_driver\n", "from ipie.config import MPI\n", diff --git a/ipie/addons/free_projection/__init__.py b/ipie/addons/free_projection/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/__init__.py +++ b/ipie/addons/free_projection/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/analysis/__init__.py b/ipie/addons/free_projection/analysis/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/analysis/__init__.py +++ b/ipie/addons/free_projection/analysis/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/analysis/tests/__init__.py b/ipie/addons/free_projection/analysis/tests/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/analysis/tests/__init__.py +++ b/ipie/addons/free_projection/analysis/tests/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/estimators/__init__.py b/ipie/addons/free_projection/estimators/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/estimators/__init__.py +++ b/ipie/addons/free_projection/estimators/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/estimators/tests/__init__.py b/ipie/addons/free_projection/estimators/tests/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/estimators/tests/__init__.py +++ b/ipie/addons/free_projection/estimators/tests/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/propagation/__init__.py b/ipie/addons/free_projection/propagation/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/propagation/__init__.py +++ b/ipie/addons/free_projection/propagation/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/propagation/tests/__init__.py b/ipie/addons/free_projection/propagation/tests/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/propagation/tests/__init__.py +++ b/ipie/addons/free_projection/propagation/tests/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/qmc/__init__.py b/ipie/addons/free_projection/qmc/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/qmc/__init__.py +++ b/ipie/addons/free_projection/qmc/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/qmc/tests/__init__.py b/ipie/addons/free_projection/qmc/tests/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/qmc/tests/__init__.py +++ b/ipie/addons/free_projection/qmc/tests/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/utils/__init__.py b/ipie/addons/free_projection/utils/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/utils/__init__.py +++ b/ipie/addons/free_projection/utils/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/walkers/__init__.py b/ipie/addons/free_projection/walkers/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/walkers/__init__.py +++ b/ipie/addons/free_projection/walkers/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc. diff --git a/ipie/addons/free_projection/walkers/tests/__init__.py b/ipie/addons/free_projection/walkers/tests/__init__.py index 871770c1..e2aed039 100644 --- a/ipie/addons/free_projection/walkers/tests/__init__.py +++ b/ipie/addons/free_projection/walkers/tests/__init__.py @@ -11,7 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# Directory for additions to ipie which depend on the core ipie library. -# New features should mirror the ipie layout e.g. -# ipie/addons/finite_temperature/qmc/afqmc.py etc.