diff --git a/.codecov.yml b/.codecov.yml index 86671410..505809d2 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,2 +1,37 @@ +# codecov can find this file anywhere in the repo, so we don't need to clutter +# the root folder. +#comment: false + fixes: - ".*/site-packages/::src/" + +codecov: + notify: + require_ci_to_pass: no + +coverage: + status: + patch: + default: + target: '70' + if_no_uploads: error + if_not_found: success + if_ci_failed: failure + project: + default: false + library: + target: auto + if_no_uploads: error + if_not_found: success + if_ci_failed: error + paths: '!*/tests/.*' + + tests: + target: 97.9% + paths: '*/tests/.*' + if_not_found: success + +flags: + tests: + paths: + - tests/ diff --git a/.coveragerc b/.coveragerc index d0a0d16d..13b71cd9 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,22 +1,26 @@ -# Configuration of the coverage.py tool for reporting test coverage. - +[run] +source = + diffpy.pdffit2 +omit = + # exclude debug.py from codecov report + */tests/debug.py [report] +omit = + */python?.?/* + */site-packages/nose/* + # ignore _version.py and versioneer.py + .*version.* + *_version.py # RE patterns for lines to be excluded from consideration. exclude_lines = - ## Have to re-enable the standard pragma + # Have to re-enable the standard pragma pragma: no cover - ## Don't complain if tests don't hit defensive assertion code: + # Don't complain if tests don't hit defensive assertion code: raise AssertionError raise NotImplementedError ^[ ]*assert False - ## Don't complain if non-runnable code isn't run: + # Don't complain if non-runnable code isn't run: ^[ ]*@unittest.skip\b ^[ ]{4}unittest.main() - if __name__ == .__main__.: - - -[run] -omit = - ## exclude debug.py from codecov report - */tests/debug.py + if __name__ == '__main__': diff --git a/.flake8 b/.flake8 new file mode 100644 index 00000000..2d2cb168 --- /dev/null +++ b/.flake8 @@ -0,0 +1,11 @@ +[flake8] +exclude = + .git, + __pycache__, + build, + dist, + doc/source/conf.py +max-line-length = 115 +# Ignore some style 'errors' produced while formatting by 'black' +# https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html#labels-why-pycodestyle-warnings +extend-ignore = E203 diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 82adbdc8..00000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,67 +0,0 @@ -name: build and upload - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - build: - strategy: - max-parallel: 4 - matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] - os: [ubuntu-latest, macos-latest, windows-latest] - - runs-on: ${{ matrix.os }} - steps: - - name: Check-out repository - uses: actions/checkout@v2 - - - name: set up conda - uses: s-weigand/setup-conda@v1 - with: - update-conda: true - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - conda install -c conda-forge twine - conda install -c conda-forge wheel - conda install -c conda-forge setuptools - conda install -c conda-forge pip - conda install -c conda-forge gsl - - - name: Build wheels - run: | - python setup.py sdist bdist_wheel - - - name: Run tests - run: | - conda install -c conda-forge numpy - python setup.py install - python conda-recipe/run_test.py - - - name: Upload Artifacts GitHub releases - uses: ncipollo/release-action@v1 - with: - draft: false - prerelease: true - allowUpdates: true - replacesArtifacts: true - token: ${{ secrets.GITHUB_TOKEN }} - artifacts: ${{ github.workspace }}/dist/*.whl - tag: 1.4.1 - body: This is an alpha build of the pdffit2 library (1.4.2) - - # This step will upload tagged commits to pypi. - # The pypi token must be added to GH secrets - # - # - name: Publish package - # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - # uses: pypa/gh-action-pypi-publish@release/v1 - # with: - # password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..bbe70f33 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,44 @@ +name: Build Documentation + +on: + push: + branches: + - main + - cookie # to be removed during merge to main + release: + +jobs: + test: + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: build + auto-update-conda: true + + - name: install requirements + run: >- + conda install -n build -c conda-forge + --file requirements/build.txt + --file requirements/run.txt + --file requirements/docs.txt + --quiet --yes + + - name: install the package + run: python -m pip install . --no-deps + + - name: build documents + run: make -C doc html + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./doc/build/html diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..6ebff6a1 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,66 @@ +name: CI + +on: + push: + branches: + - main + - CI + pull_request: + workflow_dispatch: + +jobs: + miniconda: + name: Miniconda ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: ['3.10', '3.11', '3.12'] + os: ["macos-latest", "ubuntu-latest", "windows-latest"] + steps: + - name: check out diffpy.pdffit2 + uses: actions/checkout@v3 + with: + repository: diffpy/diffpy.pdffit2 + path: . + fetch-depth: 0 # avoid shallow clone with no tags + + - name: initialize miniconda + # this uses a marketplace action that sets up miniconda in a way that makes + # it easier to use. I tried setting it up without this and it was a pain + uses: conda-incubator/setup-miniconda@v3 + with: + miniconda-version: "latest" + activate-environment: test + # environment.yml file is needed by this action. Because I don't want + # maintain this but rather maintain the requirements files it just has + # basic things in it like conda and pip + environment-file: environment.yml + python-version: ${{ matrix.python-version }} + auto-activate-base: false + + - name: install diffpy.pdffit2 requirements + shell: bash -l {0} + run: | + conda config --set always_yes yes --set changeps1 no + conda config --add channels conda-forge + conda activate test + conda install --file requirements/build.txt + conda install --file requirements/run.txt + conda install --file requirements/test.txt + pip install . + - name: Validate diffpy.pdffit2 + shell: bash -l {0} + run: | + conda activate test + coverage run src/diffpy/pdffit2/tests/run.py + coverage report -m + codecov + +# Use this after migrating to pytest +# - name: Validate diffpy.pdffit2 +# shell: bash -l {0} +# run: | +# conda activate test +# coverage run -m pytest -vv -s +# coverage report -m +# codecov diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 00000000..f2ff7e42 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,19 @@ +name: pre-commit + +on: + pull_request: + push: + workflow_dispatch: + +jobs: + pre-commit: + # pull requests are a duplicate of a branch push if within the same repo. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + - uses: pre-commit/action@v3.0.0 + with: + extra_args: --all-files diff --git a/.gitignore b/.gitignore index 7a8f6d5b..3298c515 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,10 @@ lib64 tags errors.err +# IDE configs +.idea +.vscode + # Installer logs pip-log.txt MANIFEST diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 00000000..e0926f42 --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,4 @@ +[settings] +line_length = 115 +multi_line_output = 3 +include_trailing_comma = True diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..8aedd156 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,45 @@ +default_language_version: + python: python3 +ci: + autofix_commit_msg: | + [pre-commit.ci] auto fixes from pre-commit hooks + autofix_prs: true + autoupdate_branch: 'pre-commit-autoupdate' + autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate' + autoupdate_schedule: monthly + skip: [no-commit-to-branch] + submodules: false +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: check-yaml + exclude: ^conda-recipe/meta\.yaml$ + - id: end-of-file-fixer + - id: trailing-whitespace + exclude: '\.(rst|txt)$' + - repo: https://github.com/psf/black + rev: 24.4.2 + hooks: + - id: black + - repo: https://github.com/pycqa/flake8 + rev: 7.0.0 + hooks: + - id: flake8 + - repo: https://github.com/pycqa/isort + rev: 5.13.2 + hooks: + - id: isort + args: ["--profile", "black", "--order-by-type"] + exclude: ^src/diffpy/pdffit2/__init__\.py$ + - repo: https://github.com/kynan/nbstripout + rev: 0.7.1 + hooks: + - id: nbstripout + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: no-commit-to-branch + name: Prevent Commit to Main Branch + args: ["--branch", "main"] + stages: [pre-commit] diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d5979526..00000000 --- a/.travis.yml +++ /dev/null @@ -1,108 +0,0 @@ -dist: xenial -language: generic - -os: - - linux - - osx - -env: - - MYUSEMC=true MYPYTHON_VERSION=2.7 - - MYUSEMC=true MYPYTHON_VERSION=3.7 - - MYUSEMC=true MYPYTHON_VERSION=3.8 - - MYUSEMC=true MYPYTHON_VERSION=3.9 - - MYUSEMC=true MYPYTHON_VERSION=3.10 - - MYUSEMC=true MYPYTHON_VERSION=3.11 - - MYUSEMC=true MYPYTHON_VERSION=3.12 - - MYUSEMC=false - -matrix: - exclude: - - os: osx - env: MYUSEMC=false - -git: - depth: 999999 - -branches: - except: - - /^v[0-9]/ - - -before_install: - - MYNAME=diffpy.pdffit2 - - MYCOMMIT="$(git rev-parse HEAD)" - - umask 022 - - git fetch origin --tags - - if ${MYUSEMC}; then - NOAPT=true; NOMC=false; - else - NOAPT=false; NOMC=true; - MYPIPFLAGS="--user"; - fi - - MYMCREPO=https://repo.anaconda.com/miniconda - - case ${TRAVIS_OS_NAME} in - linux) - MYMCBUNDLE=Miniconda3-latest-Linux-x86_64.sh ;; - osx) - MYMCBUNDLE=Miniconda3-latest-MacOSX-x86_64.sh ;; - *) - echo "Unsupported operating system." >&2; - exit 2 ;; - esac - - MYRUNDIR=${PWD}/build/rundir - - - mkdir -p ~/pkgs - - mkdir -p ${MYRUNDIR} - - cp .coveragerc ${MYRUNDIR}/ - - - $NOMC || pushd ~/pkgs - - $NOMC || wget --timestamping ${MYMCREPO}/${MYMCBUNDLE} - - $NOMC || test -x ~/mc/bin/conda || bash ${MYMCBUNDLE} -b -f -p ~/mc - - $NOMC || popd - - $NOMC || source ~/mc/bin/activate base - - $NOMC || conda update --yes conda - - $NOMC || conda install --yes conda-build conda-verify jinja2 - # avoid warnings from setup.py - - $NOMC || conda install --yes gsl - - $NOMC || conda create --name=testenv --yes python=${MYPYTHON_VERSION} coverage - - $NOMC || conda config --add channels diffpy - - - $NOAPT || test "${TRAVIS_OS_NAME}" = "linux" || exit $? - - $NOAPT || PATH="$(echo "$PATH" | sed 's,:/opt/pyenv/[^:]*,,g')" - - $NOAPT || test "$(which python)" = "/usr/bin/python" || ( - which python; exit 1) - - $NOAPT || sudo apt-get update -qq - - $NOAPT || sudo apt-get install -y - build-essential libgsl0-dev python-dev - python-numpy python-setuptools python-pip - - $NOAPT || devutils/makesdist - - $NOAPT || MYTARBUNDLE="$(ls -t "${PWD}"/dist/*.tar.gz | head -1)" - - -install: - - $NOMC || conda build --python=${MYPYTHON_VERSION} conda-recipe - - $NOMC || conda render --python=${MYPYTHON_VERSION} --output conda-recipe | - sed 's,.*/,,; s/[.]tar[.]bz2$//; s/-/=/g' > /tmp/mypackage.txt - - $NOMC || source activate testenv - - $NOMC || conda install --yes --use-local --file=/tmp/mypackage.txt - - - $NOAPT || pip install $MYPIPFLAGS coverage - # TODO - restore pip install once it works. - # - $NOAPT || pip install $MYPIPFLAGS "${MYTARBUNDLE}" - - $NOAPT || easy_install --user "${MYTARBUNDLE}" - - - cd ${MYRUNDIR} - - MYGIT_REV=$(python -c "import ${MYNAME}.version as v; print(v.__git_commit__)") - - if [[ "${MYCOMMIT}" != "${MYGIT_REV}" ]]; then - echo "Version mismatch ${MYCOMMIT} vs ${MYGIT_REV}."; - exit 1; - fi - - -script: - - coverage run --source ${MYNAME} -m ${MYNAME}.tests.rundeps - - -after_success: - - pip install $MYPIPFLAGS codecov - - codecov diff --git a/AUTHORS.txt b/AUTHORS.rst similarity index 82% rename from AUTHORS.txt rename to AUTHORS.rst index 2c1d7f81..d6679278 100644 --- a/AUTHORS.txt +++ b/AUTHORS.rst @@ -1,3 +1,10 @@ +Authors +======= + +Billinge Group and community contibutors. + +---- + This code was derived from the first PDFFIT program by Thomas Proffen. The sources were converted to C++ by Jacques Bloch and then extensively hacked, extended and purged from most glaring bugs by Chris Farrow and Pavol Juhas. @@ -6,17 +13,12 @@ python modules for structure investigations from diffraction data. The DiffPy team is located in the Billinge-group at the Applied Physics and Applied Mathematics Department of the Columbia University in New York. -Currently the team consists of +Previous significant contributors to this code were - Simon Billinge - Pavol Juhas - Chris Farrow - Emil Bozin - Wenduo Zhou - Peng Tian - Timur Dykhne + Pavol Juhas, Chris Farrow, Jacques Bloch, Wenduo Zhou -Please see the header of each source file for a detailed list of +Please see the github contributions and the header of each source file +for a detailed list of contributors. This is an open-source project and we hope and expect that the list of contributors will expand with time. Many thanks to all current and future contributors! @@ -30,7 +32,8 @@ found at http://danse.us. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the NSF. -Acknowledgments: +Acknowledgments +--------------- We are truly grateful to all the people who have contributed, in all different ways, to this project: Thomas Proffen, Xiangyun Qiu, Pete @@ -45,3 +48,10 @@ especially HyunJeong Kim and Ahmad Masadeh for enthusiastic testing and feature requests; Last but not least, our long suffering family members, and the whole coffee and tea industries at large, without whom none of this would have been possible. + + +Contributors +------------ + +For a list of contributors, visit +https://github.com/diffpy/diffpy.pdffit2/graphs/contributors diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index b77944e4..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,17 +0,0 @@ -# Release notes - -No notable functional changes from 1.4.1 - -## Version 1.4.2 – 2023-12-09 - -### Added - -- Support for Python 3.11, 3.12 - -### Changed - -### Deprecated - -### Removed - -### Fixed diff --git a/CHANGELOG.rst b/CHANGELOG.rst new file mode 100644 index 00000000..55012a9d --- /dev/null +++ b/CHANGELOG.rst @@ -0,0 +1,26 @@ +============= +Release Notes +============= + +No notable functional changes from 1.4.1 + +-------------------------- +Version 1.4.2 – 2023-12-09 +-------------------------- + +Added +===== + +- Support for Python 3.11, 3.12 + +Changed +======= + +Deprecated +========== + +Removed +======= + +Fixed +===== diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.rst new file mode 100644 index 00000000..ff9c3561 --- /dev/null +++ b/CODE_OF_CONDUCT.rst @@ -0,0 +1,133 @@ +===================================== + Contributor Covenant Code of Conduct +===================================== + +Our Pledge +---------- + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +Our Standards +------------- + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +Enforcement Responsibilities +---------------------------- + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +Scope +----- + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +sb2896@columbia.edu. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +Enforcement Guidelines +---------------------- + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +1. Correction +**************** + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +2. Warning +************* + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +3. Temporary Ban +****************** + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +4. Permanent Ban +****************** + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant `_. + +Community Impact Guidelines were inspired by `Mozilla's code of conduct enforcement ladder `_. + +For answers to common questions about this code of conduct, see the `FAQ `_. `Translations are available `_ diff --git a/LICENSE.txt b/LICENSE.rst similarity index 85% rename from LICENSE.txt rename to LICENSE.rst index 3949fdf0..0a1d4f66 100644 --- a/LICENSE.txt +++ b/LICENSE.rst @@ -1,3 +1,6 @@ +License +####### + This program is part of the DiffPy and DANSE open-source projects and is available subject to the conditions and terms laid out below. @@ -5,13 +8,12 @@ If you use this program to do productive scientific research that leads to publication, we ask that you acknowledge use of the program by citing the following paper in your publication: - C. L. Farrow, P. Juhas, J. W. Liu, D. Bryndin, E. S. Bozin, - J. Bloch, Th. Proffen and S. J. L. Billinge, PDFfit2 and - PDFgui: computer programs for studying nanostructure in - crystals, J. Phys.: Condens. Matter 19, 335219 (2007) + C\. L. Farrow, P. Juhás, J. W. Liu, D. Bryndin, E. S. Božin, J. Bloch, Th. Proffen + and S. J. L. Billinge, PDFfit2 and PDFgui: computer programs for studying nanostructure + in crystals (https://stacks.iop.org/0953-8984/19/335219), *J. Phys.: Condens. Matter*, 19, 335219 (2007) Copyright 2006-2007, Board of Trustees of Michigan State University, -Copyright 2008-2019, Board of Trustees of Columbia University in the +Copyright 2008-2024, Board of Trustees of Columbia University in the city of New York. (Copyright holder indicated in each source file). For more information please visit the project web-page: diff --git a/MANIFEST.in b/MANIFEST.in index 1b41a5df..9902cd57 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,20 +1,28 @@ -recursive-include diffpy * -recursive-exclude diffpy *.py[co] *.so -recursive-include libpdffit2 *.[ch]* -recursive-include pdffit2module *.[ch]* -recursive-include examples * -include AUTHORS.txt LICENSE*.txt README* -include Makefile -prune libpdffit2/tests +recursive-include src/diffpy * +recursive-exclude src/diffpy *.py[co] *.so +recursive-include docs *.rst conf.py Makefile make.bat + +recursive-include src/extensions/libpdffit2 *.[ch]* +recursive-include src/extensions/pdffit2module *.[ch]* +recursive-include src/examples * +include AUTHORS.rst +include diffpy.pdffit2/version.py +include LICENSE.rst +include README.rst +include requirements/ +prune src/extensions/libpdffit2/tests global-exclude .gitattributes .gitignore .gitarchive.cfg global-exclude .DS_Store +recursive-exclude * __pycache__ +recursive-exclude * *.py[co] + +# If including data files in the package, add them like: +# include path/to/data_file # Avoid user content in setup.cfg to make distribution reproducible. exclude setup.cfg # Exclude git-tracked files spuriously added by setuptools_scm exclude .coveragerc -exclude .travis* -prune conda-recipe prune devutils prune doc diff --git a/README.rst b/README.rst index bef2a4ce..702131a4 100644 --- a/README.rst +++ b/README.rst @@ -1,12 +1,39 @@ -.. image:: https://travis-ci.org/diffpy/diffpy.pdffit2.svg?branch=master - :target: https://travis-ci.org/diffpy/diffpy.pdffit2 +|Icon| |title|_ +=============== -.. image:: https://codecov.io/gh/diffpy/diffpy.pdffit2/branch/master/graph/badge.svg - :target: https://codecov.io/gh/diffpy/diffpy.pdffit2 +.. |title| replace:: diffpy.pdffit2 +.. _title: https://diffpy.github.io/diffpy.pdffit2 +.. |Icon| image:: https://avatars.githubusercontent.com/diffpy + :target: https://diffpy.github.io/diffpy.pdffit2 + :height: 100px -PDFfit2 -======================================================================== +|PyPi| |Forge| |PythonVersion| |PR| + +|CI| |Codecov| |Black| |Tracking| + +.. |Black| image:: https://img.shields.io/badge/code_style-black-black + :target: https://github.com/psf/black + +.. |CI| image:: https://github.com/diffpy/diffpy.pdffit2/actions/workflows/main.yml/badge.svg + :target: https://github.com/diffpy/diffpy.pdffit2/actions/workflows/main.yml + +.. |Codecov| image:: https://codecov.io/gh/diffpy/diffpy.pdffit2/branch/main/graph/badge.svg + :target: https://codecov.io/gh/diffpy/diffpy.pdffit2 + +.. |Forge| image:: https://img.shields.io/conda/vn/conda-forge/diffpy.pdffit2 + :target: https://anaconda.org/conda-forge/diffpy.pdffit2 + +.. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff + +.. |PyPi| image:: https://img.shields.io/pypi/v/diffpy.pdffit2 + :target: https://pypi.org/project/diffpy.pdffit2/ + +.. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.pdffit2 + :target: https://pypi.org/project/diffpy.pdffit2/ + +.. |Tracking| image:: https://img.shields.io/badge/issue_tracking-github-blue + :target: https://github.com/diffpy/diffpy.pdffit2/issues Real space structure refinement to atomic pair distribution function. @@ -31,11 +58,19 @@ To learn more about diffpy.pdffit2 library, see the examples directory included in this distribution or the API documentation at http://www.diffpy.org/doc/pdffit2. +Citation +-------- + +If you use diffpy.pdffit2 in a scientific publication, we would like you to cite the following paper: -REQUIREMENTS ------------------------------------------------------------------------- + C\. L. Farrow, P. Juhás, J. W. Liu, D. Bryndin, E. S. Božin, J. Bloch, Th. Proffen + and S. J. L. Billinge, PDFfit2 and PDFgui: computer programs for studying nanostructure + in crystals (https://stacks.iop.org/0953-8984/19/335219), *J. Phys.: Condens. Matter*, 19, 335219 (2007) -diffpy.pdffit2 requires Python 3.7 or later or 2.7 and +Installation +------------ + +diffpy.pdffit2 requires Python 3.10 or later and the following external software: * ``setuptools`` - software distribution tools for Python @@ -45,50 +80,44 @@ the following external software: * ``diffpy.structure`` - simple storage and manipulation of atomic structures, https://github.com/diffpy/diffpy.structure -We recommend to use `Anaconda Python `_ -as it allows to install all software dependencies together with -PDFfit2. For other Python distributions it is necessary to -install the required software separately. As an example, on Ubuntu -Linux some of the required software can be installed using :: - - sudo apt-get install \ - python-setuptools python-dev libgsl0-dev build-essential +---- +The preferred method is to use `Miniconda Python +`_ +and install from the "conda-forge" channel of Conda packages. -INSTALLATION ------------------------------------------------------------------------- +To add "conda-forge" to the conda channels, run the following in a terminal. :: -The preferred method is to use Anaconda Python and install from the -"conda-forge" channel of Anaconda packages :: + conda config --add channels conda-forge - conda install -c conda-forge diffpy.pdffit2 +We want to install our packages in a suitable conda environment. +The following creates and activates a new environment named ``diffpy.pdffit2_env`` :: -If you don't use Anaconda or prefer to install from sources, make -sure the required software is in place and run :: + conda create -n diffpy.pdffit2_env python=3 + conda activate diffpy.pdffit2_env - python setup.py install +Then, to fully install ``diffpy.pdffit2`` in our active environment, run :: -By default the files get installed to standard system directories, -which may require the use of ``sudo`` for write permissions. If -administrator (root) access is not available, consult the output from -``python setup.py install --help`` for options to install as a regular -user to other locations. The installation integrity can be -verified by changing to the HOME directory and running :: + conda install diffpy.pdffit2 - python -m diffpy.pdffit2.tests.rundeps +Another option is to use ``pip`` to download and install the latest release from +`Python Package Index `_. +To install using ``pip`` into your ``diffpy.pdffit2_env`` environment, we will also have to install dependencies :: -Anaconda Python allows to later update PDFfit2 using :: + pip install -r https://raw.githubusercontent.com/diffpy/diffpy.pdffit2/main/requirements/run.txt - conda update diffpy.pdffit2 +and then install the package :: -With other Python distributions use the easy_install program to -upgraded to the latest version :: + pip install diffpy.pdffit2 - easy_install --upgrade diffpy.pdffit2 +If you prefer to install from sources, after installing the dependencies, obtain the source archive from +`GitHub `_. Once installed, ``cd`` into your ``diffpy.pdffit2`` directory +and run the following :: + pip install . -DEVELOPMENT ------------------------------------------------------------------------- +Support and Contribute +---------------------- PDFfit2 is not developed anymore and is only maintained due to its status of a sole computational engine for PDFgui. We don't expect any @@ -99,12 +128,36 @@ at https://github.com/diffpy/diffpy.pdffit2. For an actively developed codes for PDF simulations see the DiffPy-CMI framework at http://www.diffpy.org. +---- + +`Diffpy user group `_ is the discussion forum for general questions and discussions about the use of diffpy.pdffit2. Please join the diffpy.pdffit2 users community by joining the Google group. The diffpy.pdffit2 project welcomes your expertise and enthusiasm! + +If you see a bug or want to request a feature, please `report it as an issue `_ and/or `submit a fix as a PR `_. You can also post it to the `Diffpy user group `_. + +Feel free to fork the project and contribute. To install diffpy.pdffit2 +in a development mode, with its sources being directly used by Python +rather than copied to a package directory, use the following in the root +directory :: + + pip install -e . + +To ensure code quality and to prevent accidental commits into the default branch, please set up the use of our pre-commit +hooks. + +1. Install pre-commit in your working environment by running ``conda install pre-commit``. + +2. Initialize pre-commit (one time only) ``pre-commit install``. + +Thereafter your code will be linted by black and isort and checked against flake8 before you can commit. +If it fails by black or isort, just rerun and it should pass (black and isort will modify the files so should +pass after they are modified). If the flake8 test fails please see the error messages and fix them manually before +trying to commit again. -CONTACTS ------------------------------------------------------------------------- +Improvements and fixes are always appreciated. -For more information on diffpy.pdffit2 please visit the project web-page: +Before contributing, please read our `Code of Conduct `_. -http://www.diffpy.org/ +Contact +------- -or email Prof. Simon Billinge at sb2896@columbia.edu. +For more information on diffpy.pdffit2 please visit the project `web-page `_ or email Prof. Simon Billinge at sb2896@columbia.edu. diff --git a/conda-recipe/run_test.py b/conda-recipe/run_test.py index f7099645..1432eed6 100644 --- a/conda-recipe/run_test.py +++ b/conda-recipe/run_test.py @@ -1,4 +1,5 @@ #!/usr/bin/env python import diffpy.pdffit2.tests + assert diffpy.pdffit2.tests.test().wasSuccessful() diff --git a/devutils/makesdist b/devutils/makesdist index 6aaae616..dccfaa99 100755 --- a/devutils/makesdist +++ b/devutils/makesdist @@ -1,51 +1,57 @@ #!/usr/bin/env python -'''Create source distribution tar.gz archive, where each file belongs +"""Create source distribution tar.gz archive, where each file belongs to a root user and modification time is set to the git commit time. -''' +""" -import sys +import glob +import gzip import os import subprocess -import glob +import sys import tarfile -import gzip + +from setup import FALLBACK_VERSION, versiondata BASEDIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) sys.path.insert(0, BASEDIR) -from setup import versiondata, FALLBACK_VERSION -timestamp = versiondata.getint('DEFAULT', 'timestamp') +timestamp = versiondata.getint("DEFAULT", "timestamp") -vfb = versiondata.get('DEFAULT', 'version').split('.post')[0] + '.post0' +vfb = versiondata.get("DEFAULT", "version").split(".post")[0] + ".post0" emsg = "Invalid FALLBACK_VERSION. Expected %r got %r." assert vfb == FALLBACK_VERSION, emsg % (vfb, FALLBACK_VERSION) + def inform(s): sys.stdout.write(s) sys.stdout.flush() return + inform('Run "setup.py sdist --formats=tar" ') -cmd_sdist = [sys.executable] + 'setup.py sdist --formats=tar'.split() -ec = subprocess.call(cmd_sdist, cwd=BASEDIR, stdout=open(os.devnull, 'w')) -if ec: sys.exit(ec) +cmd_sdist = [sys.executable] + "setup.py sdist --formats=tar".split() +ec = subprocess.call(cmd_sdist, cwd=BASEDIR, stdout=open(os.devnull, "w")) +if ec: + sys.exit(ec) inform("[done]\n") -tarname = max(glob.glob(BASEDIR + '/dist/*.tar'), key=os.path.getmtime) +tarname = max(glob.glob(BASEDIR + "/dist/*.tar"), key=os.path.getmtime) tfin = tarfile.open(tarname) -fpout = gzip.GzipFile(tarname + '.gz', 'w', mtime=0) -tfout = tarfile.open(fileobj=fpout, mode='w') +fpout = gzip.GzipFile(tarname + ".gz", "w", mtime=0) +tfout = tarfile.open(fileobj=fpout, mode="w") + def fixtarinfo(tinfo): tinfo.uid = tinfo.gid = 0 - tinfo.uname = tinfo.gname = 'root' + tinfo.uname = tinfo.gname = "root" tinfo.mtime = timestamp tinfo.mode &= ~0o022 return tinfo -inform('Filter %s --> %s.gz ' % (2 * (os.path.basename(tarname),))) + +inform("Filter %s --> %s.gz " % (2 * (os.path.basename(tarname),))) for ti in tfin: tfout.addfile(fixtarinfo(ti), tfin.extractfile(ti)) diff --git a/diffpy/__init__.py b/diffpy/__init__.py deleted file mode 100644 index 1a099c09..00000000 --- a/diffpy/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python -############################################################################## -# -# diffpy by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2008 trustees of the Michigan State University. -# All rights reserved. -# -# File coded by: Pavol Juhas -# -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE.txt for license information. -# -############################################################################## - - -"""diffpy - tools for structure analysis by diffraction. - -Blank namespace package. -""" - - -from pkgutil import extend_path -__path__ = extend_path(__path__, __name__) - - -# End of file diff --git a/diffpy/pdffit2/__init__.py b/diffpy/pdffit2/__init__.py deleted file mode 100644 index 0f33c5c4..00000000 --- a/diffpy/pdffit2/__init__.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python -############################################################################## -# -# pdffit2 by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2006 trustees of the Michigan State University. -# All rights reserved. -# -# File coded by: Pavol Juhas -# -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE.txt for license information. -# -############################################################################## - -"""PDFfit2 - real space structure refinement program. -Classes: - PdfFit -Routines: - redirect_stdout -""" - - -from diffpy.pdffit2.version import __version__, __date__ -from diffpy.pdffit2.pdffit import PdfFit -from diffpy.pdffit2.output import redirect_stdout -from diffpy.pdffit2.pdffit2 import is_element - -# silence pyflakes checker -assert __version__ or True -assert __date__ or True -assert all((PdfFit, redirect_stdout, is_element)) - -# End of file diff --git a/diffpy/pdffit2/tests/TestPdfFit.py b/diffpy/pdffit2/tests/TestPdfFit.py deleted file mode 100644 index 90f1ad7c..00000000 --- a/diffpy/pdffit2/tests/TestPdfFit.py +++ /dev/null @@ -1,787 +0,0 @@ -#!/usr/bin/env python - -"""Unit tests for PdfFit.py -""" - - -import unittest - -from diffpy.structure import loadStructure - -from diffpy.pdffit2 import PdfFit -from diffpy.pdffit2 import pdffit2 -from diffpy.pdffit2.tests.pdffit2testutils import datafile, capture_output - -# ---------------------------------------------------------------------------- - -class TestPdfFit(unittest.TestCase): - - places = 6 - - def setUp(self): - self.P = PdfFit() - return - - def tearDown(self): - del self.P - return - - def test__exportAll(self): - "check PdfFit._exportAll()" - ns = {} - self.P._exportAll(ns) - self.assertEqual('ALL', ns['ALL']) - self.assertEqual('FSQR', ns['FSQR']) - self.assertEqual('N', ns['N']) - self.assertIs('N', ns['N']) - self.assertIs(self.P.lat, ns['lat']) - self.assertEqual(self.P.reset, ns['reset']) - return - -# def test_intro(self): -# """check PdfFit.intro() -# """ -# return - - def test_add_structure(self): - """check PdfFit.add_structure() - """ - ni = loadStructure(datafile('Ni.stru')) - self.P.add_structure(ni) - self.assertEqual(4, self.P.num_atoms()) - return - -# def test_read_struct(self): -# """check PdfFit.read_struct() -# """ -# return -# -# def test_read_struct_string(self): -# """check PdfFit.read_struct_string() -# """ -# return -# -# def test_read_data(self): -# """check PdfFit.read_data() -# """ -# return - - def test_read_data_string(self): - """check PdfFit.read_data_string() - """ - pf = self.P - with open(datafile('300K.gr')) as fp: - s = fp.read() - self.assertEqual([], pf.data_files) - pf.read_data_string(s, 'N', 32, 0.03, 'lmo') - self.assertEqual(1, len(pf.data_files)) - gobs = pf.getpdf_obs() - self.assertEqual(2000, len(gobs)) - self.assertEqual(0.384, gobs[-1]) - self.assertEqual(0.03, pf.getvar('qdamp')) - return - -# def test_read_data_lists(self): -# """check PdfFit.read_data_lists() -# """ -# return -# -# def test_pdfrange(self): -# """check PdfFit.pdfrange() -# """ -# return -# -# def test_reset(self): -# """check PdfFit.reset() -# """ -# return - - def test_alloc(self): - """check PdfFit.alloc() - """ - # alloc and read_struct can be called in any order. - self.P.alloc('X', 25, 0.0, 0.01, 10, 1000) - # without a structure calculated PDF is all zero - self.P.calc() - Gzero = self.P.getpdf_fit() - self.assertEqual(1000*[0.0], Gzero) - self.P.read_struct(datafile('Ni.stru')) - self.P.calc() - # check r-values - r = self.P.getR() - self.assertEqual(1000, len(r)) - for i in range(1000): - self.assertAlmostEqual(0.01*(i + 1), r[i], self.places) - Gfit_alloc_read = self.P.getpdf_fit() - # now try the other order - self.P.reset() - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 25, 0.0, 0.01, 10, 1000) - self.P.calc() - Gfit_read_alloc = self.P.getpdf_fit() - # and they should be the same - self.assertEqual(Gfit_read_alloc, Gfit_alloc_read) - return - -# def test_calc(self): -# """check PdfFit.calc() -# """ -# return -# -# def test_refine(self): -# """check PdfFit.refine() -# """ -# return -# -# def test_refine_step(self): -# """check PdfFit.refine_step() -# """ -# return -# -# def test_save_pdf(self): -# """check PdfFit.save_pdf() -# """ -# return -# -# def test_save_pdf_string(self): -# """check PdfFit.save_pdf_string() -# """ -# return -# -# def test_save_dif(self): -# """check PdfFit.save_dif() -# """ -# return -# -# def test_save_dif_string(self): -# """check PdfFit.save_dif_string() -# """ -# return -# -# def test_save_res(self): -# """check PdfFit.save_res() -# """ -# return -# -# def test_save_res_string(self): -# """check PdfFit.save_res_string() -# """ -# return - - def test_get_structure(self): - """check PdfFit.get_structure() - """ - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - stru1 = self.P.get_structure(1) - self.assertEqual(4, len(stru1)) - self.assertEqual('Ni', stru1[0].element) - stru2 = self.P.get_structure(2) - self.assertEqual(56, len(stru2)) - self.assertEqual('Ti', stru2[-1].element) - return - -# def test_save_struct(self): -# """check PdfFit.save_struct() -# """ -# return -# -# def test_save_struct_string(self): -# """check PdfFit.save_struct_string() -# """ -# return -# -# def test_show_struct(self): -# """check PdfFit.show_struct() -# """ -# return -# -# def test_constrain(self): -# """check PdfFit.constrain() -# """ -# return - - def test_setpar(self): - """check PdfFit.setpar() - """ - pf = self.P - pf.read_struct(datafile('Ni.stru')) - pf.setpar(1, 'lat(1)') - self.assertEqual(3.52, pf.getpar(1)) - pf.setpar(1, 4.0) - self.assertEqual(4, pf.getpar(1)) - pf.setpar(1, pf.lat('a')) - self.assertEqual(3.52, pf.getpar(1)) - return - - def test_setvar(self): - """check PdfFit.setvar() - """ - pf = self.P - pf.read_struct(datafile('Ni.stru')) - pf.setvar(pf.delta1, 1.2) - self.assertEqual(1.2, pf.getvar(pf.delta1)) - pf.setvar('delta1', 1.7) - self.assertEqual(1.7, pf.getvar('delta1')) - return - -# def test_getvar(self): -# """check PdfFit.getvar() -# """ -# return -# -# def test_getrw(self): -# """check PdfFit.getrw() -# """ -# return -# -# def test_getR(self): -# """check PdfFit.getR() -# """ -# return -# -# def test_getpdf_fit(self): -# """check PdfFit.getpdf_fit() -# """ -# return -# -# def test_getpdf_obs(self): -# """check PdfFit.getpdf_obs() -# """ -# return -# -# def test_getpdf_diff(self): -# """check PdfFit.getpdf_diff() -# """ -# return - - def test_get_atoms(self): - """check PdfFit.get_atoms() - """ - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.setphase(1) - a1 = self.P.get_atoms() - a2 = self.P.get_atoms(2) - self.assertEqual(4*['NI'], a1) - self.assertEqual(8*['PB']+24*['O']+8*['SC']+8*['W']+8*['TI'], a2) - return - - def test_get_atom_types(self): - """check PdfFit.get_atom_types() - """ - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.setphase(1) - atp1 = self.P.get_atom_types() - atp2 = self.P.get_atom_types(2) - self.assertEqual(['NI'], atp1) - self.assertEqual(['PB', 'O', 'SC', 'W', 'TI'], atp2) - return - - def test_num_phases(self): - """check PdfFit.num_phases() - """ - self.assertEqual(0, self.P.num_phases()) - self.P.read_struct(datafile('Ni.stru')) - self.assertEqual(1, self.P.num_phases()) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.assertEqual(2, self.P.num_phases()) - self.P.reset() - self.assertEqual(0, self.P.num_phases()) - return - - def test_num_datasets(self): - """check PdfFit.num_datasets() - """ - self.assertEqual(0, self.P.num_datasets()) - self.P.read_data(datafile('Ni.dat'), 'X', 25.0, 0.5) - self.assertEqual(1, self.P.num_datasets()) - # failed data should not increase num_datasets - try: - self.P.read_data(datafile('badNi.dat')) - except: - pass - self.assertEqual(1, self.P.num_datasets()) - # alloc should increase number of datasets - # alloc requires a loaded structure - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 30.0, 0.05, 2, 10, 100) - self.assertEqual(2, self.P.num_datasets()) - self.P.reset() - self.assertEqual(0, self.P.num_datasets()) - return - - def test_getcrw(self): - """check PdfFit.getcrw() - """ - import numpy - self.assertEqual(0, self.P.num_datasets()) - # Setting qmax=0 so that partial crw are not disturbed by - # termination ripples. - self.P.read_data(datafile('Ni.dat'), 'X', 0.0, 0.0) - # crw is empty before data refinement - self.assertEqual([], self.P.getcrw()) - self.P.read_struct(datafile('Ni.stru')) - self.P.pdfrange(1, 2, 19) - self.P.refine() - crw19 = numpy.array(self.P.getcrw()) - self.assertTrue(numpy.all(crw19 >= 0.0)) - # check that crw19 is non decreasing - self.assertTrue(numpy.all(numpy.diff(crw19) >= 0.0)) - # check that crw19 and getrw give the same value - rw19 = crw19[-1] - self.assertAlmostEqual(self.P.getrw(), rw19, self.places) - # renormalize cumulative Rw and compare with Rw at r=15 - Gobs19 = numpy.array(self.P.getpdf_obs()) - Gnorm19 = numpy.sqrt(numpy.sum(Gobs19**2)) - r = numpy.array(self.P.getR()) - idx = numpy.nonzero(r <= 15)[0] - Gnorm15 = numpy.sqrt(numpy.sum(Gobs19[idx]**2)) - i15 = idx[-1] - rw15 = crw19[i15] * Gnorm19 / Gnorm15 - self.P.pdfrange(1, 2, r[i15] + 1e-5) - self.P.refine() - self.assertAlmostEqual(self.P.getrw(), rw15, self.places) - return - - def test_getcrw_two_datasets(self): - """check that getcrw() and getrw() are consistent for two datasets. - """ - self.P.read_data(datafile('Ni.dat'), 'X', 25.0, 0.0) - self.P.pdfrange(1, 2, 8) - self.P.read_data(datafile('300K.gr'), 'N', 32.0, 0.0) - self.P.pdfrange(2, 1, 11) - self.P.read_struct(datafile('Ni.stru')) - # mess lattice parameters to have comparable Rw contributions - self.P.setvar('lat(1)', 3) - self.P.setvar('lat(2)', 3) - self.P.setvar('lat(3)', 3) - self.P.refine() - rwtot = self.P.getrw() - self.assertTrue(rwtot > 0.0) - self.P.setdata(1) - rw1 = self.P.getcrw()[-1] - self.P.setdata(2) - rw2 = self.P.getcrw()[-1] - self.assertAlmostEqual(rwtot**2, rw1**2 + rw2**2, self.places) - return - -# def test_getpar(self): -# """check PdfFit.getpar() -# """ -# return - - def test_fixpar(self): - """check PdfFit.fixpar() - """ - self.P.fixpar('all') - self.assertRaises(TypeError, self.P.fixpar, 'x') - return - - def test_freepar(self): - """check PdfFit.freepar() - """ - self.P.freepar('all') - self.assertRaises(TypeError, self.P.freepar, 'x') - return - -# def test_setphase(self): -# """check PdfFit.setphase() -# """ -# return -# -# def test_setdata(self): -# """check PdfFit.setdata() -# """ -# return -# - def test_psel(self): - """check PdfFit.psel() - """ - def doalloc(): - self.P.alloc('X', 30.0, 0.05, 2, 10, 100) - return - self.assertRaises(pdffit2.unassignedError, self.P.psel, 0) - self.assertRaises(pdffit2.unassignedError, self.P.psel, 1) - self.P.read_struct(datafile('Ni.stru')) - doalloc() - self.P.calc() - G1 = self.P.getpdf_fit() - self.P.reset() - self.P.read_struct(datafile('PbScW25TiO3.stru')) - doalloc() - self.P.calc() - G2 = self.P.getpdf_fit() - self.P.reset() - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - doalloc() - self.P.pdesel('ALL') - self.P.psel(1) - self.P.calc() - self.assertEqual(G1, self.P.getpdf_fit()) - self.P.pdesel('ALL') - self.P.psel(2) - self.P.calc() - self.assertEqual(G2, self.P.getpdf_fit()) - self.P.psel('ALL') - self.P.calc() - Gall = self.P.getpdf_fit() - dGmax = max([abs(g1 + g2 - gall) - for g1, g2, gall in zip(G1, G2, Gall)]) - self.assertAlmostEqual(0, dGmax, self.places) - self.assertRaises(pdffit2.unassignedError, self.P.psel, 10) - self.assertRaises(pdffit2.unassignedError, self.P.psel, 0) - self.assertRaises(pdffit2.unassignedError, self.P.psel, -100) - return - - def test_pdesel(self): - """check PdfFit.pdesel() - """ - def doalloc(): - self.P.alloc('X', 30.0, 0.05, 2, 10, 100) - return - self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 0) - self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 1) - self.P.read_struct(datafile('Ni.stru')) - doalloc() - self.P.calc() - G1 = self.P.getpdf_fit() - self.P.reset() - self.P.read_struct(datafile('PbScW25TiO3.stru')) - doalloc() - self.P.calc() - G2 = self.P.getpdf_fit() - self.P.reset() - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - doalloc() - self.P.psel('ALL') - self.P.pdesel(2) - self.P.calc() - self.assertEqual(G1, self.P.getpdf_fit()) - self.P.psel('ALL') - self.P.pdesel(1) - self.P.calc() - self.assertEqual(G2, self.P.getpdf_fit()) - self.P.pdesel('ALL') - self.P.calc() - G0 = self.P.getpdf_fit() - self.assertEqual([0.0]*len(G0), G0) - self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 10) - self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 0) - self.assertRaises(pdffit2.unassignedError, self.P.pdesel, -100) - return -# -# def test_selectAtomType(self): -# """check PdfFit.selectAtomType() -# """ -# return -# -# def test_selectAtomIndex(self): -# """check PdfFit.selectAtomIndex() -# """ -# return -# -# def test_selectAll(self): -# """check PdfFit.selectAll() -# """ -# return -# -# def test_selectNone(self): -# """check PdfFit.selectNone() -# """ -# return - - def test_bond_angle(self): - """check PdfFit.bond_angle() - """ - self.P.read_struct(datafile('Ni.stru')) - a, e = self.P.bond_angle(1, 2, 3) - self.assertAlmostEqual(60.0, a, self.places) - self.assertRaises(ValueError, self.P.bond_angle, 0, 1, 2) - self.assertRaises(ValueError, self.P.bond_angle, 1, 2, 7) - return - - def test_bang(self): - "check PdfFit.bang() function" - self.P.read_struct(datafile('Ni.stru')) - out = capture_output(self.P.bang, 1, 2, 3).strip() - self.assertTrue(out.endswith('60 degrees')) - self.assertTrue(out.startswith('NI (#1) - NI (#2) - NI (#3)')) - return - - def test_bond_length_atoms(self): - """check PdfFit.bond_length_atoms() - """ - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - dij, ddij = self.P.bond_length_atoms(1, 5) - self.assertAlmostEqual(4.03635, dij, self.places) - self.P.setphase(1) - self.assertRaises(ValueError, self.P.bond_length_atoms, 1, 5) - return - - def test_bond_length_types(self): - """check PdfFit.bond_length_types() - """ - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - dPbO = self.P.bond_length_types('Pb', 'O', 0.1, 3.0) - # check if keys are present - self.assertTrue('dij' in dPbO) - self.assertTrue('ddij' in dPbO) - self.assertTrue('ij0' in dPbO) - self.assertTrue('ij1' in dPbO) - # check if they have the same length - npts = len(dPbO['dij']) - self.assertEqual(npts, len(dPbO['ddij'])) - self.assertEqual(npts, len(dPbO['ij0'])) - self.assertEqual(npts, len(dPbO['ij1'])) - # 8 Pb atoms have coordination 12 in perovskite structure - self.assertEqual(8*12, len(dPbO['dij'])) - self.P.setphase(1) - dfcc = self.P.bond_length_types('ALL', 'ALL', 0.1, 2.6) - # 4 Ni atoms with coordination 12 - self.assertEqual(4*12, len(dfcc['dij'])) - # invalid element - self.assertRaises(ValueError, self.P.bond_length_types, 'Ni', 'Nix', 0.1, 5.0) - # check indices ij0 - allij0 = sum(dfcc['ij0'], tuple()) - self.assertEqual(0, min(allij0)) - self.assertEqual(3, max(allij0)) - # check indices ij1 - allij1 = sum(dfcc['ij1'], tuple()) - self.assertEqual(1, min(allij1)) - self.assertEqual(4, max(allij1)) - # check index values - ij0check = [(i1 - 1, j1 - 1) for i1, j1 in dfcc['ij1']] - self.assertEqual(ij0check, dfcc['ij0']) - # test valid element which is not present in the structure - dnone = self.P.bond_length_types('Ni', 'Au', 0.1, 5.0) - self.assertEqual(0, len(dnone['dij'])) - self.assertEqual(0, len(dnone['ddij'])) - self.assertEqual(0, len(dnone['ij0'])) - self.assertEqual(0, len(dnone['ij1'])) - return - - def test_blen(self): - """check PdfFit.blen() - """ - self.P.read_struct(datafile('PbScW25TiO3.stru')) - blen = self.P.blen - o = capture_output(blen, 1, 5).strip() - self.assertTrue(o.endswith('4.03635 A')) - self.assertTrue('PB (#1)' in o) - self.assertTrue('PB (#5)' in o) - self.assertRaises(ValueError, blen, 1, 99) - self.assertRaises(ValueError, blen, 0, 1) - o1 = capture_output(blen, 1, 1, 0.1, 1) - self.assertTrue('No pairs found' in o1) - o2 = capture_output(blen, 1, 50, 0.1, 1) - self.assertEqual('', o2) - o3 = capture_output(blen, 'Sc', 'O', 0.5, 2.3).strip() - self.assertEqual(1 + 48, len(o3.split('\n'))) - self.assertEqual(6, o3.count("SC (#33)")) - self.assertEqual(2, o3.count("O (#9)")) - self.assertRaises(TypeError, blen, "Sc", "O", 0.5) - return - -# def test_show_scat(self): -# """check PdfFit.show_scat() -# """ -# return -# -# def test_get_scat_string(self): -# """check PdfFit.get_scat_string() -# """ -# return - - def test_get_scat(self): - """check PdfFit.get_scat() - """ - # x-ray scattering factors - fPb = self.P.get_scat('X', 'Pb') - self.assertEqual(82.0, fPb) - fTi = self.P.get_scat('X', 'tI') - self.assertEqual(22.0, fTi) - # neutron scattering lengths - bPb = self.P.get_scat('N', 'PB') - self.assertAlmostEqual(9.401, bPb, 3) - bTi = self.P.get_scat('N', 'ti') - self.assertAlmostEqual(-3.370, bTi, 3) - # exceptions - self.assertRaises(ValueError, self.P.get_scat, 'N', 'zz') - self.assertRaises(ValueError, self.P.get_scat, 'Z', 'Ti') - return - - def test_set_scat(self): - """check PdfFit.set_scat() - """ - # raises exception when no phase exists - self.assertRaises(pdffit2.unassignedError, - self.P.set_scat, 'N', 'Ti', -11) - # check if it is local to phase - fPb = self.P.get_scat('X', 'Pb') - bPb = self.P.get_scat('N', 'Pb') - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.set_scat('X', 'Pb', 142) - self.assertEqual(142, self.P.get_scat('X', 'Pb')) - self.assertEqual(bPb, self.P.get_scat('N', 'Pb')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.assertEqual(fPb, self.P.get_scat('X', 'Pb')) - self.P.setphase(1) - self.assertEqual(142, self.P.get_scat('X', 'Pb')) - self.P.setphase(2) - self.assertEqual(fPb, self.P.get_scat('X', 'Pb')) - # check exception for invalid inputs - self.assertRaises(ValueError, self.P.set_scat, 'Z', 'C', 123) - self.assertRaises(ValueError, self.P.set_scat, 'X', 'ZZ', 123) - return - - def test_reset_scat(self): - """check PdfFit.reset_scat() - """ - # raises exception when no phase exists - self.assertRaises(pdffit2.unassignedError, self.P.reset_scat, 'Ti') - # check if it is local to phase - fPb = self.P.get_scat('X', 'Pb') - bPb = self.P.get_scat('N', 'Pb') - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.set_scat('X', 'Pb', 142) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.set_scat('N', 'Pb', -17) - self.P.setphase(1) - self.assertNotEqual(fPb, self.P.get_scat('X', 'Pb')) - self.P.reset_scat('Pb') - self.assertEqual(fPb, self.P.get_scat('X', 'Pb')) - self.P.setphase(2) - self.assertNotEqual(bPb, self.P.get_scat('N', 'Pb')) - self.P.reset_scat('Pb') - self.assertEqual(bPb, self.P.get_scat('N', 'Pb')) - # check exception for invalid inputs - self.assertRaises(ValueError, self.P.reset_scat, 'Zz') - return - - def test_num_atoms(self): - """check PdfFit.num_atoms() - """ - self.P.read_struct(datafile('Ni.stru')) - self.assertEqual(4, self.P.num_atoms()) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.assertEqual(56, self.P.num_atoms()) - self.P.setphase(1) - self.assertEqual(4, self.P.num_atoms()) - self.P.setphase(2) - self.assertEqual(56, self.P.num_atoms()) - return - - def test_lat(self): - """check PdfFit.lat() - """ - pf = self.P - pf.read_struct(datafile('Ni.stru')) - for i in ('a', 'b', 'c', 1, 2, 3): - self.assertEqual(3.52, pf.getvar(pf.lat(i))) - for i in ('alpha', 'beta', 'gamma', 4, 5, 6): - self.assertEqual(90, pf.getvar(pf.lat(i))) - return - - def test_xyz(self): - """check PdfFit.x() PdfFit.y(), PdfFit.z() - """ - pf = self.P - pf.read_struct(datafile('Ni.stru')) - self.assertEqual(0.5, pf.getvar(pf.x(3))) - self.assertEqual(0, pf.getvar(pf.y(3))) - self.assertEqual(0.5, pf.getvar(pf.z(3))) - return - - def test_uij(self): - """check PdfFit.uij() - """ - ni = loadStructure(datafile('Ni.stru')) - ni[2].anisotropy = True - ni[2].U11, ni[2].U22, ni[2].U33 = 1, 2, 3 - ni[2].U12, ni[2].U13, ni[2].U23 = 4, 5, 6 - pf = self.P - pf.add_structure(ni) - self.assertEqual(1, pf.getvar(pf.u11(3))) - self.assertEqual(2, pf.getvar(pf.u22(3))) - self.assertEqual(3, pf.getvar(pf.u33(3))) - self.assertEqual(4, pf.getvar(pf.u12(3))) - self.assertEqual(5, pf.getvar(pf.u13(3))) - self.assertEqual(6, pf.getvar(pf.u23(3))) - return - - def test_occ(self): - """check PdfFit.occ() - """ - pf = self.P - pf.read_struct(datafile('Ni.stru')) - for i in range(1, 5): - self.assertEqual(1, pf.getvar(pf.occ(i))) - return - -# def test_pscale(self): -# """check PdfFit.pscale() -# """ -# return -# -# def test_pscale(self): -# """check PdfFit.pscale() -# """ -# return -# -# def test_sratio(self): -# """check PdfFit.sratio() -# """ -# return -# -# def test_delta1(self): -# """check PdfFit.delta1() -# """ -# return -# -# def test_delta2(self): -# """check PdfFit.delta2() -# """ -# return -# -# def test_dscale(self): -# """check PdfFit.dscale() -# """ -# return -# -# def test_qdamp(self): -# """check PdfFit.qdamp() -# """ -# return -# -# def test_qbroad(self): -# """check PdfFit.qbroad() -# """ -# return -# -# def test_rcut(self): -# """check PdfFit.rcut() -# """ -# return -# -# def test___init__(self): -# """check PdfFit.__init__() -# """ -# return -# -# def test__PdfFit__getRef(self): -# """check PdfFit._PdfFit__getRef() -# """ -# return - -# End of class TestPdfFit - -if __name__ == '__main__': - unittest.main() - -# End of file diff --git a/diffpy/pdffit2/tests/TestPhaseFractions.py b/diffpy/pdffit2/tests/TestPhaseFractions.py deleted file mode 100644 index aa3b27e6..00000000 --- a/diffpy/pdffit2/tests/TestPhaseFractions.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env python - -"""Unit tests for phase fraction calculations. -""" - - -import unittest - -from diffpy.pdffit2 import PdfFit -from diffpy.pdffit2.tests.pdffit2testutils import datafile - -############################################################################## -class TestPhaseFractions(unittest.TestCase): - - places = 4 - - def setUp(self): - self.P = PdfFit() - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.alloc('N', 0.0, 0.05, 0.1, 10, 200) - return - - def tearDown(self): - del self.P - return - - def test_xray_fractions(self): - """test_xray_fractions -- check phase fractions in x-ray dataset. - """ - self.P.setdata(1) - ph = self.P.phase_fractions() - bb1 = 28**2 - bb2 = ((8*82 + 24*8 + 4*21 + 2*74 + 2*22) / 40.0)**2 - self.assertAlmostEqual(1.0, sum(ph['atom']), self.places) - self.assertAlmostEqual(1.0, sum(ph['cell']), self.places) - self.assertAlmostEqual(1.0, sum(ph['mass']), self.places) - self.assertAlmostEqual(bb2/bb1, - ph['atom'][0]/ph['atom'][1], self.places) - self.assertAlmostEqual(bb2/bb1 * 40.0/4.0, - ph['cell'][0]/ph['cell'][1], self.places) - mavg1 = 58.69 - mavg2 = (8*207.19 + 24*15.994 + 4*44.956 + 2*183.85 + 2*47.90)/40.0 - self.assertAlmostEqual(bb2/bb1 * mavg1/mavg2, - ph['mass'][0]/ph['mass'][1], self.places) - self.assertEqual(0.0, sum(ph['stdatom'])) - self.assertEqual(0.0, sum(ph['stdcell'])) - self.assertEqual(0.0, sum(ph['stdmass'])) - self.P.setphase(1) - self.P.setvar('pscale', 2.0) - ph2 = self.P.phase_fractions() - self.assertAlmostEqual(1.0, sum(ph2['atom']), self.places) - self.assertAlmostEqual(1.0, sum(ph2['cell']), self.places) - self.assertAlmostEqual(1.0, sum(ph2['mass']), self.places) - self.assertAlmostEqual(2.0, ph2['atom'][0]/ph2['atom'][1] / - (ph['atom'][0]/ph['atom'][1]), self.places) - self.assertAlmostEqual(2.0, ph2['cell'][0]/ph2['cell'][1] / - (ph['cell'][0]/ph['cell'][1]), self.places) - self.assertAlmostEqual(2.0, ph2['mass'][0]/ph2['mass'][1] / - (ph['mass'][0]/ph['mass'][1]), self.places) - return - - def test_neutron_fractions(self): - """test_neutron_fractions -- check phase fractions in neutron dataset. - """ - self.P.setdata(2) - ph = self.P.phase_fractions() - bb1 = 10.31**2 - bPb = 9.4012 - bO = 5.8054 - bSc = 12.11 - bW = 4.75518 - bTi = -3.37013 - bb2 = ((8*bPb + 24*bO + 4*bSc + 2*bW + 2*bTi) / 40.0)**2 - self.assertAlmostEqual(1.0, sum(ph['atom']), self.places) - self.assertAlmostEqual(1.0, sum(ph['cell']), self.places) - self.assertAlmostEqual(1.0, sum(ph['mass']), self.places) - self.assertAlmostEqual(bb2/bb1, - ph['atom'][0]/ph['atom'][1], self.places) - self.assertAlmostEqual(bb2/bb1 * 40.0/4.0, - ph['cell'][0]/ph['cell'][1], self.places) - mavg1 = 58.69 - mavg2 = (8*207.19 + 24*15.994 + 4*44.956 + 2*183.85 + 2*47.90)/40.0 - self.assertAlmostEqual(bb2/bb1 * mavg1/mavg2, - ph['mass'][0]/ph['mass'][1], self.places) - self.assertEqual(0.0, sum(ph['stdatom'])) - self.assertEqual(0.0, sum(ph['stdcell'])) - self.assertEqual(0.0, sum(ph['stdmass'])) - self.P.setphase(1) - self.P.setvar('pscale', 2.0) - ph2 = self.P.phase_fractions() - self.assertAlmostEqual(1.0, sum(ph2['atom']), self.places) - self.assertAlmostEqual(1.0, sum(ph2['cell']), self.places) - self.assertAlmostEqual(1.0, sum(ph2['mass']), self.places) - self.assertAlmostEqual(2.0, ph2['atom'][0]/ph2['atom'][1] / - (ph['atom'][0]/ph['atom'][1]), self.places) - self.assertAlmostEqual(2.0, ph2['cell'][0]/ph2['cell'][1] / - (ph['cell'][0]/ph['cell'][1]), self.places) - self.assertAlmostEqual(2.0, ph2['mass'][0]/ph2['mass'][1] / - (ph['mass'][0]/ph['mass'][1]), self.places) - return - -# End of class TestSphereEnvelope - -if __name__ == '__main__': - unittest.main() - -# End of file diff --git a/diffpy/pdffit2/tests/run.py b/diffpy/pdffit2/tests/run.py deleted file mode 100644 index 8519454c..00000000 --- a/diffpy/pdffit2/tests/run.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python -############################################################################## -# -# diffpy.pdffit2 by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2012 Trustees of the Columbia University -# in the City of New York. All rights reserved. -# -# File coded by: Pavol Juhas -# -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE.txt for license information. -# -############################################################################## - -"""Convenience module for executing all unit tests with - -python -m diffpy.pdffit2.tests.run -""" - - -if __name__ == '__main__': - import sys - # show warnings by default - if not sys.warnoptions: - import os, warnings - warnings.simplefilter("default") - # also affect subprocesses - os.environ["PYTHONWARNINGS"] = "default" - from diffpy.pdffit2.tests import test - # produce zero exit code for a successful test - sys.exit(not test().wasSuccessful()) - -# End of file diff --git a/diffpy/pdffit2/version.py b/diffpy/pdffit2/version.py deleted file mode 100644 index e77b09d0..00000000 --- a/diffpy/pdffit2/version.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -############################################################################## -# -# pdffit2 by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2008 trustees of the Michigan State University. -# All rights reserved. -# -# File coded by: Pavol Juhas -# -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE.txt for license information. -# -############################################################################## - -""" -Definition of __version__, __date__, __timestamp__, __git_commit__. - -Notes ------ -Variable `__gitsha__` is deprecated as of version 1.2. -Use `__git_commit__` instead. -""" - -__all__ = ['__date__', '__git_commit__', '__timestamp__', '__version__'] - -import os.path - -from pkg_resources import resource_filename - - -# obtain version information from the version.cfg file -cp = dict(version='', date='', commit='', timestamp='0') -fcfg = resource_filename(__name__, 'version.cfg') -if not os.path.isfile(fcfg): # pragma: no cover - from warnings import warn - warn('Package metadata not found, execute "./setup.py egg_info".') - fcfg = os.devnull -with open(fcfg) as fp: - kwords = [[w.strip() for w in line.split(' = ', 1)] - for line in fp if line[:1].isalpha() and ' = ' in line] -assert all(w[0] in cp for w in kwords), "received unrecognized keyword" -cp.update(kwords) - -__version__ = cp['version'] -__date__ = cp['date'] -__git_commit__ = cp['commit'] -__timestamp__ = int(cp['timestamp']) - -# TODO remove deprecated __gitsha__ in version 1.3. -__gitsha__ = __git_commit__ - -del cp, fcfg, fp, kwords - -# End of file diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 00000000..ef016bb8 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,194 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build +BASENAME = $(subst .,,$(subst $() $(),,diffpy.pdffit2)) + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/$(BASENAME).qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/$(BASENAME).qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/$(BASENAME)" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/$(BASENAME)" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +# Manual publishing to the gh-pages branch + +GITREPOPATH = $(shell cd $(CURDIR) && git rev-parse --git-dir) +GITREMOTE = origin +GITREMOTEURL = $(shell git config --get remote.$(GITREMOTE).url) +GITLASTCOMMIT = $(shell git rev-parse --short HEAD) + +publish: + @test -d build/html || \ + ( echo >&2 "Run 'make html' first!"; false ) + git show-ref --verify --quiet refs/heads/gh-pages || \ + git branch --track gh-pages $(GITREMOTE)/gh-pages + test -d build/gh-pages || \ + git clone -s -b gh-pages $(GITREPOPATH) build/gh-pages + cd build/gh-pages && \ + git pull $(GITREMOTEURL) gh-pages + rsync -acv --delete --exclude=.git --exclude=.rsync-exclude \ + --exclude-from=build/gh-pages/.rsync-exclude \ + --link-dest=$(CURDIR)/build/html build/html/ build/gh-pages/ + cd build/gh-pages && \ + git add --all . && \ + git diff --cached --quiet || \ + git commit -m "Sync with the source at $(GITLASTCOMMIT)." + cd build/gh-pages && \ + git push origin gh-pages diff --git a/examples/Ni-xray.gr b/doc/examples/Ni-xray.gr similarity index 93% rename from examples/Ni-xray.gr rename to doc/examples/Ni-xray.gr index 14193844..76b7a94f 100644 --- a/examples/Ni-xray.gr +++ b/doc/examples/Ni-xray.gr @@ -26,7 +26,7 @@ sambkgfile= num_sambkgs=1 confile= num_cons=1 conbkgfile= num_conbkgs=1 det# used xcol detcol deterrcol xmin xmax add_det mul_det add_bkg mul_bkg add_con mul_con add_conbkg mul_conbkg - 0 1 0 1 3 0.00000 35.0000 0.00000 1.00000 0.00000 0.998691 0.00000 1.00000 0.00000 1.00000 + 0 1 0 1 3 0.00000 35.0000 0.00000 1.00000 0.00000 0.998691 0.00000 1.00000 0.00000 1.00000 ##### Experiment_Setup title=Ni at 300K with MAR345 Image Plate at 6-ID-DAPS Synchrotron @@ -128,2007 +128,2007 @@ gropttype=OptFq miscdatatype=AtomASF ##### start data #F Ni_2-8.chi.gr #D Tue Feb 8 11:46:14 2005 -#C +#C #S 1 G(r) -#D +#D #L r G(r) d_r d_Gr - 1.000000e-02 -7.734561e-02 -1.381170e-02 3.134926e-02 - 2.000000e-02 -1.596764e-01 -2.762339e-02 6.045792e-02 - 3.000000e-02 -2.516875e-01 -4.143509e-02 8.526468e-02 - 4.000000e-02 -3.575096e-01 -5.524679e-02 1.040541e-01 - 5.000000e-02 -4.804651e-01 -6.905849e-02 1.155991e-01 - 6.000000e-02 -6.228668e-01 -8.287018e-02 1.192732e-01 - 7.000000e-02 -7.858705e-01 -9.668188e-02 1.151330e-01 - 8.000000e-02 -9.693874e-01 -1.104936e-01 1.039918e-01 - 9.000000e-02 -1.172061e+00 -1.243053e-01 8.755577e-02 - 1.000000e-01 -1.391306e+00 -1.381170e-01 6.884717e-02 - 1.100000e-01 -1.623409e+00 -1.519287e-01 5.341991e-02 - 1.200000e-01 -1.863680e+00 -1.657404e-01 4.979434e-02 - 1.300000e-01 -2.106649e+00 -1.795521e-01 6.017895e-02 - 1.400000e-01 -2.346295e+00 -1.933638e-01 7.640497e-02 - 1.500000e-01 -2.576293e+00 -2.071755e-01 9.161881e-02 - 1.600000e-01 -2.790268e+00 -2.209872e-01 1.024655e-01 - 1.700000e-01 -2.982047e+00 -2.347989e-01 1.074539e-01 - 1.800000e-01 -3.145891e+00 -2.486105e-01 1.062389e-01 - 1.900000e-01 -3.276707e+00 -2.624222e-01 9.942805e-02 - 2.000000e-01 -3.370223e+00 -2.762339e-01 8.860376e-02 - 2.100000e-01 -3.423130e+00 -2.900456e-01 7.650761e-02 - 2.200000e-01 -3.433181e+00 -3.038573e-01 6.719764e-02 - 2.300000e-01 -3.399254e+00 -3.176690e-01 6.493149e-02 - 2.400000e-01 -3.321377e+00 -3.314807e-01 7.061632e-02 - 2.500000e-01 -3.200715e+00 -3.452924e-01 8.074527e-02 - 2.600000e-01 -3.039527e+00 -3.591041e-01 9.101665e-02 - 2.700000e-01 -2.841094e+00 -3.729158e-01 9.850821e-02 - 2.800000e-01 -2.609626e+00 -3.867275e-01 1.017102e-01 - 2.900000e-01 -2.350147e+00 -4.005392e-01 1.002266e-01 - 3.000000e-01 -2.068363e+00 -4.143509e-01 9.462396e-02 - 3.100000e-01 -1.770519e+00 -4.281626e-01 8.640470e-02 - 3.200000e-01 -1.463237e+00 -4.419743e-01 7.800773e-02 - 3.300000e-01 -1.153355e+00 -4.557860e-01 7.249483e-02 - 3.400000e-01 -8.477479e-01 -4.695977e-01 7.224522e-02 - 3.500000e-01 -5.531450e-01 -4.834094e-01 7.713224e-02 - 3.600000e-01 -2.759477e-01 -4.972211e-01 8.467203e-02 - 3.700000e-01 -2.204310e-02 -5.110328e-01 9.195493e-02 - 3.800000e-01 2.033757e-01 -5.248445e-01 9.686320e-02 - 3.900000e-01 3.959788e-01 -5.386562e-01 9.828977e-02 - 4.000000e-01 5.524508e-01 -5.524679e-01 9.606310e-02 - 4.100000e-01 6.706182e-01 -5.662796e-01 9.087598e-02 - 4.200000e-01 7.495432e-01 -5.800913e-01 8.423689e-02 - 4.300000e-01 7.895774e-01 -5.939030e-01 7.831796e-02 - 4.400000e-01 7.923692e-01 -6.077147e-01 7.538431e-02 - 4.500000e-01 7.608195e-01 -6.215264e-01 7.662821e-02 - 4.600000e-01 6.989824e-01 -6.353381e-01 8.131523e-02 - 4.700000e-01 6.119129e-01 -6.491498e-01 8.737928e-02 - 4.800000e-01 5.054623e-01 -6.629615e-01 9.267455e-02 - 4.900000e-01 3.860302e-01 -6.767732e-01 9.569092e-02 - 5.000000e-01 2.602819e-01 -6.905849e-01 9.573000e-02 - 5.100000e-01 1.348438e-01 -7.043966e-01 9.289354e-02 - 5.200000e-01 1.599279e-02 -7.182083e-01 8.803723e-02 - 5.300000e-01 -9.064421e-02 -7.320200e-01 8.267435e-02 - 5.400000e-01 -1.803637e-01 -7.458316e-01 7.868367e-02 - 5.500000e-01 -2.496148e-01 -7.596433e-01 7.762463e-02 - 5.600000e-01 -2.961697e-01 -7.734550e-01 7.986113e-02 - 5.700000e-01 -3.192238e-01 -7.872667e-01 8.433275e-02 - 5.800000e-01 -3.194177e-01 -8.010784e-01 8.926692e-02 - 5.900000e-01 -2.987769e-01 -8.148901e-01 9.303294e-02 - 6.000000e-01 -2.605717e-01 -8.287018e-01 9.458206e-02 - 6.100000e-01 -2.091040e-01 -8.425135e-01 9.356811e-02 - 6.200000e-01 -1.494329e-01 -8.563252e-01 9.034444e-02 - 6.300000e-01 -8.705466e-02 -8.701369e-01 8.590452e-02 - 6.400000e-01 -2.755745e-02 -8.839486e-01 8.171553e-02 - 6.500000e-01 2.372868e-02 -8.977603e-01 7.931299e-02 - 6.600000e-01 6.206366e-02 -9.115720e-01 7.962749e-02 - 6.700000e-01 8.359014e-02 -9.253837e-01 8.244920e-02 - 6.800000e-01 8.556789e-02 -9.391954e-01 8.658046e-02 - 6.900000e-01 6.653458e-02 -9.530071e-01 9.051104e-02 - 7.000000e-01 2.638255e-02 -9.668188e-01 9.300732e-02 - 7.100000e-01 -3.365350e-02 -9.806305e-01 9.339048e-02 - 7.200000e-01 -1.110967e-01 -9.944422e-01 9.161189e-02 - 7.300000e-01 -2.024086e-01 -1.008254e+00 8.823550e-02 - 7.400000e-01 -3.032383e-01 -1.022066e+00 8.434109e-02 - 7.500000e-01 -4.087215e-01 -1.035877e+00 8.127899e-02 - 7.600000e-01 -5.138097e-01 -1.049689e+00 8.019975e-02 - 7.700000e-01 -6.136058e-01 -1.063501e+00 8.149425e-02 - 7.800000e-01 -7.036833e-01 -1.077312e+00 8.457797e-02 - 7.900000e-01 -7.803670e-01 -1.091124e+00 8.824255e-02 - 8.000000e-01 -8.409562e-01 -1.104936e+00 9.123004e-02 - 8.100000e-01 -8.838756e-01 -1.118747e+00 9.263856e-02 - 8.200000e-01 -9.087437e-01 -1.132559e+00 9.209884e-02 - 8.300000e-01 -9.163567e-01 -1.146371e+00 8.981209e-02 - 8.400000e-01 -9.085893e-01 -1.160183e+00 8.650416e-02 - 8.500000e-01 -8.882216e-01 -1.173994e+00 8.327654e-02 - 8.600000e-01 -8.587063e-01 -1.187806e+00 8.129051e-02 - 8.700000e-01 -8.238944e-01 -1.201618e+00 8.129498e-02 - 8.800000e-01 -7.877398e-01 -1.215429e+00 8.324441e-02 - 8.900000e-01 -7.540061e-01 -1.229241e+00 8.633665e-02 - 9.000000e-01 -7.259969e-01 -1.243053e+00 8.943578e-02 - 9.100000e-01 -7.063286e-01 -1.256864e+00 9.152907e-02 - 9.200000e-01 -6.967632e-01 -1.270676e+00 9.200378e-02 - 9.300000e-01 -6.981108e-01 -1.284488e+00 9.075509e-02 - 9.400000e-01 -7.102095e-01 -1.298300e+00 8.818933e-02 - 9.500000e-01 -7.319798e-01 -1.312111e+00 8.513983e-02 - 9.600000e-01 -7.615502e-01 -1.325923e+00 8.266016e-02 - 9.700000e-01 -7.964408e-01 -1.339735e+00 8.166394e-02 - 9.800000e-01 -8.337897e-01 -1.353546e+00 8.251468e-02 - 9.900000e-01 -8.706036e-01 -1.367358e+00 8.484194e-02 - 1.000000e-00 -9.040117e-01 -1.381170e+00 8.774748e-02 - 1.010000e+00 -9.315033e-01 -1.394981e+00 9.021996e-02 - 1.020000e+00 -9.511296e-01 -1.408793e+00 9.148261e-02 - 1.030000e+00 -9.616553e-01 -1.422605e+00 9.117828e-02 - 1.040000e+00 -9.626475e-01 -1.436417e+00 8.942710e-02 - 1.050000e+00 -9.544971e-01 -1.450228e+00 8.679399e-02 - 1.060000e+00 -9.383712e-01 -1.464040e+00 8.415952e-02 - 1.070000e+00 -9.161027e-01 -1.477852e+00 8.246149e-02 - 1.080000e+00 -8.900263e-01 -1.491663e+00 8.233013e-02 - 1.090000e+00 -8.627749e-01 -1.505475e+00 8.378993e-02 - 1.100000e+00 -8.370557e-01 -1.519287e+00 8.625490e-02 - 1.110000e+00 -8.154227e-01 -1.533098e+00 8.882170e-02 - 1.120000e+00 -8.000647e-01 -1.546910e+00 9.063428e-02 - 1.130000e+00 -7.926282e-01 -1.560722e+00 9.113887e-02 - 1.140000e+00 -7.940862e-01 -1.574533e+00 9.020245e-02 - 1.150000e+00 -8.046667e-01 -1.588345e+00 8.812929e-02 - 1.160000e+00 -8.238427e-01 -1.602157e+00 8.559113e-02 - 1.170000e+00 -8.503875e-01 -1.615969e+00 8.345275e-02 - 1.180000e+00 -8.824866e-01 -1.629780e+00 8.248185e-02 - 1.190000e+00 -9.178991e-01 -1.643592e+00 8.302436e-02 - 1.200000e+00 -9.541530e-01 -1.657404e+00 8.484068e-02 - 1.210000e+00 -9.887581e-01 -1.671215e+00 8.723378e-02 - 1.220000e+00 -1.019420e+00 -1.685027e+00 8.936506e-02 - 1.230000e+00 -1.044233e+00 -1.698839e+00 9.055378e-02 - 1.240000e+00 -1.061845e+00 -1.712650e+00 9.045794e-02 - 1.250000e+00 -1.071566e+00 -1.726462e+00 8.914106e-02 - 1.260000e+00 -1.073431e+00 -1.740274e+00 8.704942e-02 - 1.270000e+00 -1.068188e+00 -1.754086e+00 8.489959e-02 - 1.280000e+00 -1.057242e+00 -1.767897e+00 8.346229e-02 - 1.290000e+00 -1.042527e+00 -1.781709e+00 8.327095e-02 - 1.300000e+00 -1.026351e+00 -1.795521e+00 8.438368e-02 - 1.310000e+00 -1.011191e+00 -1.809332e+00 8.636090e-02 - 1.320000e+00 -9.994919e-01 -1.823144e+00 8.847613e-02 - 1.330000e+00 -9.934586e-01 -1.836956e+00 9.000844e-02 - 1.340000e+00 -9.948682e-01 -1.850767e+00 9.047021e-02 - 1.350000e+00 -1.004922e+00 -1.864579e+00 8.972635e-02 - 1.360000e+00 -1.024143e+00 -1.878391e+00 8.801881e-02 - 1.370000e+00 -1.052329e+00 -1.892203e+00 8.590676e-02 - 1.380000e+00 -1.088569e+00 -1.906014e+00 8.411382e-02 - 1.390000e+00 -1.131312e+00 -1.919826e+00 8.328369e-02 - 1.400000e+00 -1.178493e+00 -1.933638e+00 8.371558e-02 - 1.410000e+00 -1.227697e+00 -1.947449e+00 8.522786e-02 - 1.420000e+00 -1.276352e+00 -1.961261e+00 8.724927e-02 - 1.430000e+00 -1.321931e+00 -1.975073e+00 8.906920e-02 - 1.440000e+00 -1.362151e+00 -1.988884e+00 9.009276e-02 - 1.450000e+00 -1.395148e+00 -2.002696e+00 9.000846e-02 - 1.460000e+00 -1.419612e+00 -2.016508e+00 8.885776e-02 - 1.470000e+00 -1.434881e+00 -2.030319e+00 8.702023e-02 - 1.480000e+00 -1.440976e+00 -2.044131e+00 8.511516e-02 - 1.490000e+00 -1.438578e+00 -2.057943e+00 8.381334e-02 - 1.500000e+00 -1.428952e+00 -2.071755e+00 8.358812e-02 - 1.510000e+00 -1.413823e+00 -2.085566e+00 8.451113e-02 - 1.520000e+00 -1.395219e+00 -2.099378e+00 8.622309e-02 - 1.530000e+00 -1.375288e+00 -2.113190e+00 8.810063e-02 - 1.540000e+00 -1.356109e+00 -2.127001e+00 8.950526e-02 - 1.550000e+00 -1.339521e+00 -2.140813e+00 8.998983e-02 - 1.560000e+00 -1.326967e+00 -2.154625e+00 8.941412e-02 - 1.570000e+00 -1.319389e+00 -2.168436e+00 8.797326e-02 - 1.580000e+00 -1.317160e+00 -2.182248e+00 8.614643e-02 - 1.590000e+00 -1.320081e+00 -2.196060e+00 8.456224e-02 - 1.600000e+00 -1.327421e+00 -2.209872e+00 8.378773e-02 - 1.610000e+00 -1.338016e+00 -2.223683e+00 8.410190e-02 - 1.620000e+00 -1.350401e+00 -2.237495e+00 8.537324e-02 - 1.630000e+00 -1.362974e+00 -2.251307e+00 8.712414e-02 - 1.640000e+00 -1.374170e+00 -2.265118e+00 8.873653e-02 - 1.650000e+00 -1.382635e+00 -2.278930e+00 8.967598e-02 - 1.660000e+00 -1.387368e+00 -2.292742e+00 8.964903e-02 - 1.670000e+00 -1.387843e+00 -2.306553e+00 8.867411e-02 - 1.680000e+00 -1.384077e+00 -2.320365e+00 8.707293e-02 - 1.690000e+00 -1.376637e+00 -2.334177e+00 8.538419e-02 - 1.700000e+00 -1.366606e+00 -2.347989e+00 8.419842e-02 - 1.710000e+00 -1.355480e+00 -2.361800e+00 8.394229e-02 - 1.720000e+00 -1.345031e+00 -2.375612e+00 8.470005e-02 - 1.730000e+00 -1.337123e+00 -2.389424e+00 8.617890e-02 - 1.740000e+00 -1.333527e+00 -2.403235e+00 8.784186e-02 - 1.750000e+00 -1.335716e+00 -2.417047e+00 8.912123e-02 - 1.760000e+00 -1.344696e+00 -2.430859e+00 8.960623e-02 - 1.770000e+00 -1.360861e+00 -2.444670e+00 8.915473e-02 - 1.780000e+00 -1.383901e+00 -2.458482e+00 8.792463e-02 - 1.790000e+00 -1.412776e+00 -2.472294e+00 8.633026e-02 - 1.800000e+00 -1.445754e+00 -2.486105e+00 8.492298e-02 - 1.810000e+00 -1.480514e+00 -2.499917e+00 8.420620e-02 - 1.820000e+00 -1.514312e+00 -2.513729e+00 8.443860e-02 - 1.830000e+00 -1.544202e+00 -2.527541e+00 8.552365e-02 - 1.840000e+00 -1.567278e+00 -2.541352e+00 8.705601e-02 - 1.850000e+00 -1.580939e+00 -2.555164e+00 8.849338e-02 - 1.860000e+00 -1.583140e+00 -2.568976e+00 8.935436e-02 - 1.870000e+00 -1.572609e+00 -2.582787e+00 8.936496e-02 - 1.880000e+00 -1.549013e+00 -2.596599e+00 8.852906e-02 - 1.890000e+00 -1.513057e+00 -2.610411e+00 8.712423e-02 - 1.900000e+00 -1.466490e+00 -2.624222e+00 8.562504e-02 - 1.910000e+00 -1.412034e+00 -2.638034e+00 8.455578e-02 - 1.920000e+00 -1.353220e+00 -2.651846e+00 8.430059e-02 - 1.930000e+00 -1.294150e+00 -2.665658e+00 8.494598e-02 - 1.940000e+00 -1.239192e+00 -2.679469e+00 8.624521e-02 - 1.950000e+00 -1.192639e+00 -2.693281e+00 8.772760e-02 - 1.960000e+00 -1.158358e+00 -2.707093e+00 8.888395e-02 - 1.970000e+00 -1.139441e+00 -2.720904e+00 8.933725e-02 - 1.980000e+00 -1.137915e+00 -2.734716e+00 8.894918e-02 - 1.990000e+00 -1.154511e+00 -2.748528e+00 8.785320e-02 - 2.000000e+00 -1.188531e+00 -2.762339e+00 8.641699e-02 - 2.010000e+00 -1.237823e+00 -2.776151e+00 8.513478e-02 - 2.020000e+00 -1.298870e+00 -2.789963e+00 8.446166e-02 - 2.030000e+00 -1.366998e+00 -2.803775e+00 8.463800e-02 - 2.040000e+00 -1.436686e+00 -2.817586e+00 8.558855e-02 - 2.050000e+00 -1.501962e+00 -2.831398e+00 8.695755e-02 - 2.060000e+00 -1.556856e+00 -2.845210e+00 8.825708e-02 - 2.070000e+00 -1.595879e+00 -2.859021e+00 8.904528e-02 - 2.080000e+00 -1.614491e+00 -2.872833e+00 8.906364e-02 - 2.090000e+00 -1.609514e+00 -2.886645e+00 8.830655e-02 - 2.100000e+00 -1.579460e+00 -2.900456e+00 8.702107e-02 - 2.110000e+00 -1.524741e+00 -2.914268e+00 8.563829e-02 - 2.120000e+00 -1.447736e+00 -2.928080e+00 8.463963e-02 - 2.130000e+00 -1.352693e+00 -2.941891e+00 8.438444e-02 - 2.140000e+00 -1.245484e+00 -2.955703e+00 8.496517e-02 - 2.150000e+00 -1.133191e+00 -2.969515e+00 8.616936e-02 - 2.160000e+00 -1.023574e+00 -2.983327e+00 8.757206e-02 - 2.170000e+00 -9.244251e-01 -2.997138e+00 8.870195e-02 - 2.180000e+00 -8.428719e-01 -3.010950e+00 8.920000e-02 - 2.190000e+00 -7.846657e-01 -3.024762e+00 8.892219e-02 - 2.200000e+00 -7.535071e-01 -3.038573e+00 8.797447e-02 - 2.210000e+00 -7.504647e-01 -3.052385e+00 8.668116e-02 - 2.220000e+00 -7.735306e-01 -3.066197e+00 8.548894e-02 - 2.230000e+00 -8.173576e-01 -3.080008e+00 8.481846e-02 - 2.240000e+00 -8.732071e-01 -3.093820e+00 8.490579e-02 - 2.250000e+00 -9.291271e-01 -3.107632e+00 8.570642e-02 - 2.260000e+00 -9.703641e-01 -3.121444e+00 8.691730e-02 - 2.270000e+00 -9.799987e-01 -3.135255e+00 8.810312e-02 - 2.280000e+00 -9.397761e-01 -3.149067e+00 8.885701e-02 - 2.290000e+00 -8.310933e-01 -3.162879e+00 8.893019e-02 - 2.300000e+00 -6.360900e-01 -3.176690e+00 8.830113e-02 - 2.310000e+00 -3.387799e-01 -3.190502e+00 8.717917e-02 - 2.320000e+00 7.384109e-02 -3.204314e+00 8.594395e-02 - 2.330000e+00 6.107803e-01 -3.218125e+00 8.502589e-02 - 2.340000e+00 1.276191e+00 -3.231937e+00 8.475268e-02 - 2.350000e+00 2.068731e+00 -3.245749e+00 8.521931e-02 - 2.360000e+00 2.981181e+00 -3.259561e+00 8.624936e-02 - 2.370000e+00 4.000357e+00 -3.273372e+00 8.747046e-02 - 2.380000e+00 5.107337e+00 -3.287184e+00 8.845949e-02 - 2.390000e+00 6.277992e+00 -3.300996e+00 8.888735e-02 - 2.400000e+00 7.483803e+00 -3.314807e+00 8.861696e-02 - 2.410000e+00 8.692939e+00 -3.328619e+00 8.773945e-02 - 2.420000e+00 9.871525e+00 -3.342431e+00 8.654753e-02 - 2.430000e+00 1.098505e+01 -3.356242e+00 8.544831e-02 - 2.440000e+00 1.199985e+01 -3.370054e+00 8.482790e-02 - 2.450000e+00 1.288455e+01 -3.383866e+00 8.490680e-02 - 2.460000e+00 1.361146e+01 -3.397678e+00 8.565094e-02 - 2.470000e+00 1.415774e+01 -3.411489e+00 8.678792e-02 - 2.480000e+00 1.450644e+01 -3.425301e+00 8.791879e-02 - 2.490000e+00 1.464718e+01 -3.439113e+00 8.866444e-02 - 2.500000e+00 1.457658e+01 -3.452924e+00 8.878714e-02 - 2.510000e+00 1.429830e+01 -3.466736e+00 8.825730e-02 - 2.520000e+00 1.382281e+01 -3.480548e+00 8.725920e-02 - 2.530000e+00 1.316686e+01 -3.494359e+00 8.613645e-02 - 2.540000e+00 1.235258e+01 -3.508171e+00 8.528323e-02 - 2.550000e+00 1.140650e+01 -3.521983e+00 8.500491e-02 - 2.560000e+00 1.035826e+01 -3.535794e+00 8.539895e-02 - 2.570000e+00 9.239323e+00 -3.549606e+00 8.631613e-02 - 2.580000e+00 8.081607e+00 -3.563418e+00 8.742391e-02 - 2.590000e+00 6.916163e+00 -3.577230e+00 8.833600e-02 - 2.600000e+00 5.771973e+00 -3.591041e+00 8.874584e-02 - 2.610000e+00 4.674897e+00 -3.604853e+00 8.852008e-02 - 2.620000e+00 3.646830e+00 -3.618665e+00 8.773500e-02 - 2.630000e+00 2.705100e+00 -3.632476e+00 8.665363e-02 - 2.640000e+00 1.862122e+00 -3.646288e+00 8.564608e-02 - 2.650000e+00 1.125307e+00 -3.660100e+00 8.506583e-02 - 2.660000e+00 4.972252e-01 -3.673911e+00 8.511794e-02 - 2.670000e+00 -2.400927e-02 -3.687723e+00 8.577693e-02 - 2.680000e+00 -4.441723e-01 -3.701535e+00 8.679855e-02 - 2.690000e+00 -7.722150e-01 -3.715347e+00 8.781860e-02 - 2.700000e+00 -1.019459e+00 -3.729158e+00 8.848654e-02 - 2.710000e+00 -1.198748e+00 -3.742970e+00 8.857941e-02 - 2.720000e+00 -1.323610e+00 -3.756782e+00 8.806668e-02 - 2.730000e+00 -1.407472e+00 -3.770593e+00 8.711793e-02 - 2.740000e+00 -1.462967e+00 -3.784405e+00 8.605324e-02 - 2.750000e+00 -1.501372e+00 -3.798217e+00 8.524228e-02 - 2.760000e+00 -1.532185e+00 -3.812028e+00 8.497442e-02 - 2.770000e+00 -1.562860e+00 -3.825840e+00 8.534686e-02 - 2.780000e+00 -1.598702e+00 -3.839652e+00 8.622582e-02 - 2.790000e+00 -1.642903e+00 -3.853464e+00 8.730239e-02 - 2.800000e+00 -1.696711e+00 -3.867275e+00 8.821161e-02 - 2.810000e+00 -1.759700e+00 -3.881087e+00 8.865812e-02 - 2.820000e+00 -1.830120e+00 -3.894899e+00 8.850613e-02 - 2.830000e+00 -1.905285e+00 -3.908710e+00 8.781616e-02 - 2.840000e+00 -1.981979e+00 -3.922522e+00 8.682582e-02 - 2.850000e+00 -2.056843e+00 -3.936334e+00 8.587719e-02 - 2.860000e+00 -2.126718e+00 -3.950145e+00 8.530316e-02 - 2.870000e+00 -2.188935e+00 -3.963957e+00 8.530532e-02 - 2.880000e+00 -2.241518e+00 -3.977769e+00 8.587504e-02 - 2.890000e+00 -2.283314e+00 -3.991580e+00 8.679888e-02 - 2.900000e+00 -2.314031e+00 -4.005392e+00 8.774513e-02 - 2.910000e+00 -2.334204e+00 -4.019204e+00 8.838627e-02 - 2.920000e+00 -2.345096e+00 -4.033016e+00 8.850696e-02 - 2.930000e+00 -2.348533e+00 -4.046827e+00 8.806776e-02 - 2.940000e+00 -2.346723e+00 -4.060639e+00 8.721507e-02 - 2.950000e+00 -2.342043e+00 -4.074451e+00 8.623706e-02 - 2.960000e+00 -2.336835e+00 -4.088262e+00 8.547181e-02 - 2.970000e+00 -2.333219e+00 -4.102074e+00 8.518872e-02 - 2.980000e+00 -2.332935e+00 -4.115886e+00 8.548554e-02 - 2.990000e+00 -2.337236e+00 -4.129697e+00 8.624986e-02 - 3.000000e+00 -2.346817e+00 -4.143509e+00 8.720597e-02 - 3.010000e+00 -2.361806e+00 -4.157321e+00 8.802122e-02 - 3.020000e+00 -2.381792e+00 -4.171133e+00 8.842215e-02 - 3.030000e+00 -2.405909e+00 -4.184944e+00 8.828001e-02 - 3.040000e+00 -2.432939e+00 -4.198756e+00 8.764730e-02 - 3.050000e+00 -2.461444e+00 -4.212568e+00 8.674126e-02 - 3.060000e+00 -2.489911e+00 -4.226379e+00 8.587672e-02 - 3.070000e+00 -2.516886e+00 -4.240191e+00 8.536071e-02 - 3.080000e+00 -2.541103e+00 -4.254003e+00 8.537964e-02 - 3.090000e+00 -2.561584e+00 -4.267814e+00 8.592621e-02 - 3.100000e+00 -2.577712e+00 -4.281626e+00 8.680329e-02 - 3.110000e+00 -2.589266e+00 -4.295438e+00 8.770250e-02 - 3.120000e+00 -2.596420e+00 -4.309250e+00 8.831725e-02 - 3.130000e+00 -2.599709e+00 -4.323061e+00 8.844402e-02 - 3.140000e+00 -2.599957e+00 -4.336873e+00 8.804325e-02 - 3.150000e+00 -2.598188e+00 -4.350685e+00 8.724975e-02 - 3.160000e+00 -2.595516e+00 -4.364496e+00 8.633174e-02 - 3.170000e+00 -2.593021e+00 -4.378308e+00 8.560513e-02 - 3.180000e+00 -2.591636e+00 -4.392120e+00 8.532290e-02 - 3.190000e+00 -2.592035e+00 -4.405931e+00 8.557901e-02 - 3.200000e+00 -2.594543e+00 -4.419743e+00 8.627157e-02 - 3.210000e+00 -2.599066e+00 -4.433555e+00 8.714478e-02 - 3.220000e+00 -2.605049e+00 -4.447366e+00 8.788730e-02 - 3.230000e+00 -2.611468e+00 -4.461178e+00 8.824143e-02 - 3.240000e+00 -2.616842e+00 -4.474990e+00 8.808516e-02 - 3.250000e+00 -2.619286e+00 -4.488802e+00 8.746838e-02 - 3.260000e+00 -2.616581e+00 -4.502613e+00 8.659820e-02 - 3.270000e+00 -2.606259e+00 -4.516425e+00 8.577550e-02 - 3.280000e+00 -2.585719e+00 -4.530237e+00 8.529449e-02 - 3.290000e+00 -2.552333e+00 -4.544048e+00 8.533489e-02 - 3.300000e+00 -2.503569e+00 -4.557860e+00 8.589126e-02 - 3.310000e+00 -2.437100e+00 -4.571672e+00 8.677526e-02 - 3.320000e+00 -2.350917e+00 -4.585483e+00 8.768926e-02 - 3.330000e+00 -2.243420e+00 -4.599295e+00 8.833407e-02 - 3.340000e+00 -2.113503e+00 -4.613107e+00 8.850678e-02 - 3.350000e+00 -1.960618e+00 -4.626919e+00 8.816083e-02 - 3.360000e+00 -1.784825e+00 -4.640730e+00 8.741788e-02 - 3.370000e+00 -1.586825e+00 -4.654542e+00 8.653083e-02 - 3.380000e+00 -1.367979e+00 -4.668354e+00 8.580368e-02 - 3.390000e+00 -1.130302e+00 -4.682165e+00 8.548686e-02 - 3.400000e+00 -8.764571e-01 -4.695977e+00 8.568406e-02 - 3.410000e+00 -6.097196e-01 -4.709789e+00 8.631281e-02 - 3.420000e+00 -3.339377e-01 -4.723600e+00 8.713910e-02 - 3.430000e+00 -5.347346e-02 -4.737412e+00 8.786787e-02 - 3.440000e+00 2.268704e-01 -4.751224e+00 8.824708e-02 - 3.450000e+00 5.019383e-01 -4.765036e+00 8.814830e-02 - 3.460000e+00 7.663258e-01 -4.778847e+00 8.760434e-02 - 3.470000e+00 1.014500e+00 -4.792659e+00 8.679847e-02 - 3.480000e+00 1.240932e+00 -4.806471e+00 8.600717e-02 - 3.490000e+00 1.440250e+00 -4.820282e+00 8.550784e-02 - 3.500000e+00 1.607392e+00 -4.834094e+00 8.547816e-02 - 3.510000e+00 1.737778e+00 -4.847906e+00 8.592753e-02 - 3.520000e+00 1.827471e+00 -4.861717e+00 8.669413e-02 - 3.530000e+00 1.873343e+00 -4.875529e+00 8.750884e-02 - 3.540000e+00 1.873221e+00 -4.889341e+00 8.809407e-02 - 3.550000e+00 1.826015e+00 -4.903152e+00 8.825661e-02 - 3.560000e+00 1.731819e+00 -4.916964e+00 8.794676e-02 - 3.570000e+00 1.591965e+00 -4.930776e+00 8.727197e-02 - 3.580000e+00 1.409047e+00 -4.944588e+00 8.646361e-02 - 3.590000e+00 1.186882e+00 -4.958399e+00 8.580261e-02 - 3.600000e+00 9.304277e-01 -4.972211e+00 8.552186e-02 - 3.610000e+00 6.456414e-01 -4.986023e+00 8.571906e-02 - 3.620000e+00 3.392945e-01 -4.999834e+00 8.631881e-02 - 3.630000e+00 1.873856e-02 -5.013646e+00 8.710326e-02 - 3.640000e+00 -3.083619e-01 -5.027458e+00 8.779520e-02 - 3.650000e+00 -6.343206e-01 -5.041269e+00 8.815575e-02 - 3.660000e+00 -9.517301e-01 -5.055081e+00 8.806124e-02 - 3.670000e+00 -1.253756e+00 -5.068893e+00 8.754045e-02 - 3.680000e+00 -1.534413e+00 -5.082705e+00 8.676573e-02 - 3.690000e+00 -1.788795e+00 -5.096516e+00 8.599990e-02 - 3.700000e+00 -2.013266e+00 -5.110328e+00 8.550922e-02 - 3.710000e+00 -2.205580e+00 -5.124140e+00 8.546775e-02 - 3.720000e+00 -2.364928e+00 -5.137951e+00 8.589091e-02 - 3.730000e+00 -2.491921e+00 -5.151763e+00 8.663012e-02 - 3.740000e+00 -2.588479e+00 -5.165575e+00 8.743106e-02 - 3.750000e+00 -2.657671e+00 -5.179386e+00 8.802674e-02 - 3.760000e+00 -2.703479e+00 -5.193198e+00 8.822663e-02 - 3.770000e+00 -2.730520e+00 -5.207010e+00 8.797479e-02 - 3.780000e+00 -2.743737e+00 -5.220822e+00 8.736478e-02 - 3.790000e+00 -2.748083e+00 -5.234633e+00 8.660995e-02 - 3.800000e+00 -2.748209e+00 -5.248445e+00 8.597450e-02 - 3.810000e+00 -2.748188e+00 -5.262257e+00 8.568213e-02 - 3.820000e+00 -2.751276e+00 -5.276068e+00 8.583325e-02 - 3.830000e+00 -2.759752e+00 -5.289880e+00 8.636683e-02 - 3.840000e+00 -2.774817e+00 -5.303692e+00 8.708555e-02 - 3.850000e+00 -2.796588e+00 -5.317503e+00 8.773157e-02 - 3.860000e+00 -2.824158e+00 -5.331315e+00 8.807818e-02 - 3.870000e+00 -2.855748e+00 -5.345127e+00 8.800391e-02 - 3.880000e+00 -2.888908e+00 -5.358939e+00 8.752973e-02 - 3.890000e+00 -2.920779e+00 -5.372750e+00 8.681247e-02 - 3.900000e+00 -2.948371e+00 -5.386562e+00 8.609591e-02 - 3.910000e+00 -2.968861e+00 -5.400374e+00 8.562970e-02 - 3.920000e+00 -2.979857e+00 -5.414185e+00 8.557964e-02 - 3.930000e+00 -2.979632e+00 -5.427997e+00 8.596450e-02 - 3.940000e+00 -2.967290e+00 -5.441809e+00 8.664908e-02 - 3.950000e+00 -2.942857e+00 -5.455620e+00 8.739672e-02 - 3.960000e+00 -2.907272e+00 -5.469432e+00 8.795581e-02 - 3.970000e+00 -2.862300e+00 -5.483244e+00 8.814437e-02 - 3.980000e+00 -2.810334e+00 -5.497055e+00 8.790624e-02 - 3.990000e+00 -2.754132e+00 -5.510867e+00 8.732687e-02 - 4.000000e+00 -2.696475e+00 -5.524679e+00 8.660621e-02 - 4.010000e+00 -2.639789e+00 -5.538491e+00 8.599417e-02 - 4.020000e+00 -2.585754e+00 -5.552302e+00 8.570445e-02 - 4.030000e+00 -2.534926e+00 -5.566114e+00 8.583588e-02 - 4.040000e+00 -2.486404e+00 -5.579926e+00 8.633496e-02 - 4.050000e+00 -2.437580e+00 -5.593737e+00 8.701785e-02 - 4.060000e+00 -2.383991e+00 -5.607549e+00 8.764065e-02 - 4.070000e+00 -2.319291e+00 -5.621361e+00 8.798621e-02 - 4.080000e+00 -2.235371e+00 -5.635172e+00 8.793541e-02 - 4.090000e+00 -2.122615e+00 -5.648984e+00 8.750393e-02 - 4.100000e+00 -1.970297e+00 -5.662796e+00 8.683711e-02 - 4.110000e+00 -1.767102e+00 -5.676608e+00 8.616432e-02 - 4.120000e+00 -1.501749e+00 -5.690419e+00 8.572243e-02 - 4.130000e+00 -1.163683e+00 -5.704231e+00 8.567084e-02 - 4.140000e+00 -7.438005e-01 -5.718043e+00 8.603091e-02 - 4.150000e+00 -2.351580e-01 -5.731854e+00 8.667774e-02 - 4.160000e+00 3.663656e-01 -5.745666e+00 8.738832e-02 - 4.170000e+00 1.061510e+00 -5.759478e+00 8.792278e-02 - 4.180000e+00 1.847208e+00 -5.773289e+00 8.810524e-02 - 4.190000e+00 2.716329e+00 -5.787101e+00 8.787868e-02 - 4.200000e+00 3.657618e+00 -5.800913e+00 8.732138e-02 - 4.210000e+00 4.655841e+00 -5.814725e+00 8.662233e-02 - 4.220000e+00 5.692133e+00 -5.828536e+00 8.602054e-02 - 4.230000e+00 6.744555e+00 -5.842348e+00 8.572319e-02 - 4.240000e+00 7.788825e+00 -5.856160e+00 8.583002e-02 - 4.250000e+00 8.799190e+00 -5.869971e+00 8.629595e-02 - 4.260000e+00 9.749408e+00 -5.883783e+00 8.694977e-02 - 4.270000e+00 1.061379e+01 -5.897595e+00 8.755959e-02 - 4.280000e+00 1.136822e+01 -5.911406e+00 8.791545e-02 - 4.290000e+00 1.199120e+01 -5.925218e+00 8.789847e-02 - 4.300000e+00 1.246467e+01 -5.939030e+00 8.751740e-02 - 4.310000e+00 1.277484e+01 -5.952841e+00 8.690514e-02 - 4.320000e+00 1.291270e+01 -5.966653e+00 8.627632e-02 - 4.330000e+00 1.287439e+01 -5.980465e+00 8.585518e-02 - 4.340000e+00 1.266135e+01 -5.994277e+00 8.579510e-02 - 4.350000e+00 1.228021e+01 -6.008088e+00 8.612033e-02 - 4.360000e+00 1.174245e+01 -6.021900e+00 8.671645e-02 - 4.370000e+00 1.106387e+01 -6.035712e+00 8.737418e-02 - 4.380000e+00 1.026392e+01 -6.049523e+00 8.786556e-02 - 4.390000e+00 9.364814e+00 -6.063335e+00 8.802129e-02 - 4.400000e+00 8.390613e+00 -6.077147e+00 8.778446e-02 - 4.410000e+00 7.366263e+00 -6.090958e+00 8.722793e-02 - 4.420000e+00 6.316617e+00 -6.104770e+00 8.653223e-02 - 4.430000e+00 5.265521e+00 -6.118582e+00 8.592841e-02 - 4.440000e+00 4.234999e+00 -6.132394e+00 8.561983e-02 - 4.450000e+00 3.244559e+00 -6.146205e+00 8.570877e-02 - 4.460000e+00 2.310668e+00 -6.160017e+00 8.615855e-02 - 4.470000e+00 1.446384e+00 -6.173829e+00 8.680890e-02 - 4.480000e+00 6.611823e-01 -6.187640e+00 8.743706e-02 - 4.490000e+00 -3.905441e-02 -6.201452e+00 8.783681e-02 - 4.500000e+00 -6.518808e-01 -6.215264e+00 8.788586e-02 - 4.510000e+00 -1.177993e+00 -6.229075e+00 8.758252e-02 - 4.520000e+00 -1.620823e+00 -6.242887e+00 8.704418e-02 - 4.530000e+00 -1.986045e+00 -6.256699e+00 8.646856e-02 - 4.540000e+00 -2.281044e+00 -6.270511e+00 8.606669e-02 - 4.550000e+00 -2.514362e+00 -6.284322e+00 8.598740e-02 - 4.560000e+00 -2.695158e+00 -6.298134e+00 8.626153e-02 - 4.570000e+00 -2.832719e+00 -6.311946e+00 8.679056e-02 - 4.580000e+00 -2.936024e+00 -6.325757e+00 8.738503e-02 - 4.590000e+00 -3.013391e+00 -6.339569e+00 8.783451e-02 - 4.600000e+00 -3.072212e+00 -6.353381e+00 8.798044e-02 - 4.610000e+00 -3.118767e+00 -6.367192e+00 8.776777e-02 - 4.620000e+00 -3.158134e+00 -6.381004e+00 8.726241e-02 - 4.630000e+00 -3.194163e+00 -6.394816e+00 8.663102e-02 - 4.640000e+00 -3.229516e+00 -6.408627e+00 8.608727e-02 - 4.650000e+00 -3.265756e+00 -6.422439e+00 8.581849e-02 - 4.660000e+00 -3.303465e+00 -6.436251e+00 8.591708e-02 - 4.670000e+00 -3.342377e+00 -6.450063e+00 8.634536e-02 - 4.680000e+00 -3.381515e+00 -6.463874e+00 8.695011e-02 - 4.690000e+00 -3.419326e+00 -6.477686e+00 8.751985e-02 - 4.700000e+00 -3.453792e+00 -6.491498e+00 8.785941e-02 - 4.710000e+00 -3.482530e+00 -6.505309e+00 8.785407e-02 - 4.720000e+00 -3.502873e+00 -6.519121e+00 8.750507e-02 - 4.730000e+00 -3.511939e+00 -6.532933e+00 8.692868e-02 - 4.740000e+00 -3.506682e+00 -6.546744e+00 8.631937e-02 - 4.750000e+00 -3.483957e+00 -6.560556e+00 8.588540e-02 - 4.760000e+00 -3.440576e+00 -6.574368e+00 8.577557e-02 - 4.770000e+00 -3.373385e+00 -6.588180e+00 8.602434e-02 - 4.780000e+00 -3.279357e+00 -6.601991e+00 8.653953e-02 - 4.790000e+00 -3.155710e+00 -6.615803e+00 8.713833e-02 - 4.800000e+00 -3.000036e+00 -6.629615e+00 8.761468e-02 - 4.810000e+00 -2.810458e+00 -6.643426e+00 8.781026e-02 - 4.820000e+00 -2.585794e+00 -6.657238e+00 8.766528e-02 - 4.830000e+00 -2.325724e+00 -6.671050e+00 8.723634e-02 - 4.840000e+00 -2.030943e+00 -6.684861e+00 8.667774e-02 - 4.850000e+00 -1.703304e+00 -6.698673e+00 8.619059e-02 - 4.860000e+00 -1.345909e+00 -6.712485e+00 8.595303e-02 - 4.870000e+00 -9.631702e-01 -6.726297e+00 8.605479e-02 - 4.880000e+00 -5.608041e-01 -6.740108e+00 8.646303e-02 - 4.890000e+00 -1.457638e-01 -6.753920e+00 8.703493e-02 - 4.900000e+00 2.738950e-01 -6.767732e+00 8.757120e-02 - 4.910000e+00 6.892164e-01 -6.781543e+00 8.788676e-02 - 4.920000e+00 1.090608e+00 -6.795355e+00 8.787244e-02 - 4.930000e+00 1.468155e+00 -6.809167e+00 8.752974e-02 - 4.940000e+00 1.811980e+00 -6.822978e+00 8.697063e-02 - 4.950000e+00 2.112617e+00 -6.836790e+00 8.638246e-02 - 4.960000e+00 2.361395e+00 -6.850602e+00 8.596608e-02 - 4.970000e+00 2.550801e+00 -6.864413e+00 8.586518e-02 - 4.980000e+00 2.674816e+00 -6.878225e+00 8.611303e-02 - 4.990000e+00 2.729185e+00 -6.892037e+00 8.661999e-02 - 5.000000e+00 2.711627e+00 -6.905849e+00 8.720766e-02 - 5.010000e+00 2.621959e+00 -6.919660e+00 8.767376e-02 - 5.020000e+00 2.462128e+00 -6.933472e+00 8.786104e-02 - 5.030000e+00 2.236157e+00 -6.947284e+00 8.770755e-02 - 5.040000e+00 1.949990e+00 -6.961095e+00 8.726511e-02 - 5.050000e+00 1.611265e+00 -6.974907e+00 8.668269e-02 - 5.060000e+00 1.229002e+00 -6.988719e+00 8.615816e-02 - 5.070000e+00 8.132488e-01 -7.002530e+00 8.587099e-02 - 5.080000e+00 3.746712e-01 -7.016342e+00 8.591790e-02 - 5.090000e+00 -7.586038e-02 -7.030154e+00 8.627722e-02 - 5.100000e+00 -5.276906e-01 -7.043966e+00 8.681827e-02 - 5.110000e+00 -9.707736e-01 -7.057777e+00 8.735105e-02 - 5.120000e+00 -1.396027e+00 -7.071589e+00 8.769425e-02 - 5.130000e+00 -1.795627e+00 -7.085401e+00 8.773588e-02 - 5.140000e+00 -2.163237e+00 -7.099212e+00 8.746834e-02 - 5.150000e+00 -2.494151e+00 -7.113024e+00 8.698983e-02 - 5.160000e+00 -2.785361e+00 -7.126836e+00 8.647198e-02 - 5.170000e+00 -3.035536e+00 -7.140647e+00 8.610178e-02 - 5.180000e+00 -3.244924e+00 -7.154459e+00 8.601496e-02 - 5.190000e+00 -3.415178e+00 -7.168271e+00 8.624523e-02 - 5.200000e+00 -3.549129e+00 -7.182083e+00 8.671154e-02 - 5.210000e+00 -3.650505e+00 -7.195894e+00 8.724892e-02 - 5.220000e+00 -3.723620e+00 -7.209706e+00 8.766895e-02 - 5.230000e+00 -3.773049e+00 -7.223518e+00 8.782505e-02 - 5.240000e+00 -3.803304e+00 -7.237329e+00 8.766071e-02 - 5.250000e+00 -3.818524e+00 -7.251141e+00 8.722768e-02 - 5.260000e+00 -3.822194e+00 -7.264953e+00 8.667016e-02 - 5.270000e+00 -3.816918e+00 -7.278764e+00 8.617831e-02 - 5.280000e+00 -3.804229e+00 -7.292576e+00 8.592329e-02 - 5.290000e+00 -3.784477e+00 -7.306388e+00 8.599517e-02 - 5.300000e+00 -3.756772e+00 -7.320200e+00 8.636886e-02 - 5.310000e+00 -3.718998e+00 -7.334011e+00 8.691337e-02 - 5.320000e+00 -3.667897e+00 -7.347823e+00 8.744021e-02 - 5.330000e+00 -3.599214e+00 -7.361635e+00 8.776965e-02 - 5.340000e+00 -3.507905e+00 -7.375446e+00 8.779011e-02 - 5.350000e+00 -3.388388e+00 -7.389258e+00 8.749321e-02 - 5.360000e+00 -3.234838e+00 -7.403070e+00 8.697617e-02 - 5.370000e+00 -3.041515e+00 -7.416881e+00 8.641121e-02 - 5.380000e+00 -2.803099e+00 -7.430693e+00 8.598917e-02 - 5.390000e+00 -2.515036e+00 -7.444505e+00 8.585342e-02 - 5.400000e+00 -2.173860e+00 -7.458316e+00 8.604798e-02 - 5.410000e+00 -1.777503e+00 -7.472128e+00 8.650183e-02 - 5.420000e+00 -1.325552e+00 -7.485940e+00 8.705661e-02 - 5.430000e+00 -8.194596e-01 -7.499752e+00 8.752478e-02 - 5.440000e+00 -2.626892e-01 -7.513563e+00 8.775421e-02 - 5.450000e+00 3.392176e-01 -7.527375e+00 8.767696e-02 - 5.460000e+00 9.786512e-01 -7.541187e+00 8.732932e-02 - 5.470000e+00 1.646031e+00 -7.554998e+00 8.683885e-02 - 5.480000e+00 2.329988e+00 -7.568810e+00 8.638176e-02 - 5.490000e+00 3.017633e+00 -7.582622e+00 8.612218e-02 - 5.500000e+00 3.694900e+00 -7.596433e+00 8.615289e-02 - 5.510000e+00 4.346958e+00 -7.610245e+00 8.646102e-02 - 5.520000e+00 4.958674e+00 -7.624057e+00 8.693372e-02 - 5.530000e+00 5.515119e+00 -7.637869e+00 8.740100e-02 - 5.540000e+00 6.002084e+00 -7.651680e+00 8.769710e-02 - 5.550000e+00 6.406594e+00 -7.665492e+00 8.771699e-02 - 5.560000e+00 6.717406e+00 -7.679304e+00 8.745053e-02 - 5.570000e+00 6.925442e+00 -7.693115e+00 8.698579e-02 - 5.580000e+00 7.024169e+00 -7.706927e+00 8.648066e-02 - 5.590000e+00 7.009884e+00 -7.720739e+00 8.610998e-02 - 5.600000e+00 6.881897e+00 -7.734550e+00 8.600369e-02 - 5.610000e+00 6.642601e+00 -7.748362e+00 8.619864e-02 - 5.620000e+00 6.297426e+00 -7.762174e+00 8.662450e-02 - 5.630000e+00 5.854665e+00 -7.775986e+00 8.713015e-02 - 5.640000e+00 5.325193e+00 -7.789797e+00 8.753878e-02 - 5.650000e+00 4.722072e+00 -7.803609e+00 8.770900e-02 - 5.660000e+00 4.060080e+00 -7.817421e+00 8.758144e-02 - 5.670000e+00 3.355160e+00 -7.831232e+00 8.719768e-02 - 5.680000e+00 2.623839e+00 -7.845044e+00 8.668744e-02 - 5.690000e+00 1.882618e+00 -7.858856e+00 8.622663e-02 - 5.700000e+00 1.147384e+00 -7.872667e+00 8.597749e-02 - 5.710000e+00 4.328576e-01 -7.886479e+00 8.603025e-02 - 5.720000e+00 -2.478914e-01 -7.900291e+00 8.636931e-02 - 5.730000e+00 -8.838435e-01 -7.914102e+00 8.687907e-02 - 5.740000e+00 -1.466320e+00 -7.927914e+00 8.738655e-02 - 5.750000e+00 -1.989158e+00 -7.941726e+00 8.772229e-02 - 5.760000e+00 -2.448757e+00 -7.955538e+00 8.777674e-02 - 5.770000e+00 -2.844007e+00 -7.969349e+00 8.753466e-02 - 5.780000e+00 -3.176100e+00 -7.983161e+00 8.707946e-02 - 5.790000e+00 -3.448233e+00 -7.996973e+00 8.656641e-02 - 5.800000e+00 -3.665236e+00 -8.010784e+00 8.617139e-02 - 5.810000e+00 -3.833133e+00 -8.024596e+00 8.602990e-02 - 5.820000e+00 -3.958675e+00 -8.038408e+00 8.618804e-02 - 5.830000e+00 -4.048865e+00 -8.052219e+00 8.658593e-02 - 5.840000e+00 -4.110503e+00 -8.066031e+00 8.708082e-02 - 5.850000e+00 -4.149782e+00 -8.079843e+00 8.749955e-02 - 5.860000e+00 -4.171953e+00 -8.093655e+00 8.769861e-02 - 5.870000e+00 -4.181080e+00 -8.107466e+00 8.761101e-02 - 5.880000e+00 -4.179890e+00 -8.121278e+00 8.726695e-02 - 5.890000e+00 -4.169735e+00 -8.135090e+00 8.678365e-02 - 5.900000e+00 -4.150654e+00 -8.148901e+00 8.632682e-02 - 5.910000e+00 -4.121538e+00 -8.162713e+00 8.605422e-02 - 5.920000e+00 -4.080373e+00 -8.176525e+00 8.605936e-02 - 5.930000e+00 -4.024548e+00 -8.190336e+00 8.633734e-02 - 5.940000e+00 -3.951214e+00 -8.204148e+00 8.678737e-02 - 5.950000e+00 -3.857649e+00 -8.217960e+00 8.725091e-02 - 5.960000e+00 -3.741620e+00 -8.231772e+00 8.756870e-02 - 5.970000e+00 -3.601711e+00 -8.245583e+00 8.763482e-02 - 5.980000e+00 -3.437595e+00 -8.259395e+00 8.743080e-02 - 5.990000e+00 -3.250224e+00 -8.273207e+00 8.703087e-02 - 6.000000e+00 -3.041939e+00 -8.287018e+00 8.657745e-02 - 6.010000e+00 -2.816474e+00 -8.300830e+00 8.623311e-02 - 6.020000e+00 -2.578867e+00 -8.314642e+00 8.612316e-02 - 6.030000e+00 -2.335272e+00 -8.328453e+00 8.628953e-02 - 6.040000e+00 -2.092693e+00 -8.342265e+00 8.667500e-02 - 6.050000e+00 -1.858648e+00 -8.356077e+00 8.714473e-02 - 6.060000e+00 -1.640791e+00 -8.369888e+00 8.753548e-02 - 6.070000e+00 -1.446513e+00 -8.383700e+00 8.771242e-02 - 6.080000e+00 -1.282544e+00 -8.397512e+00 8.761380e-02 - 6.090000e+00 -1.154595e+00 -8.411324e+00 8.727067e-02 - 6.100000e+00 -1.067042e+00 -8.425135e+00 8.679705e-02 - 6.110000e+00 -1.022691e+00 -8.438947e+00 8.635272e-02 - 6.120000e+00 -1.022633e+00 -8.452759e+00 8.608880e-02 - 6.130000e+00 -1.066192e+00 -8.466570e+00 8.609374e-02 - 6.140000e+00 -1.150981e+00 -8.480382e+00 8.636059e-02 - 6.150000e+00 -1.273047e+00 -8.494194e+00 8.678994e-02 - 6.160000e+00 -1.427113e+00 -8.508005e+00 8.722702e-02 - 6.170000e+00 -1.606882e+00 -8.521817e+00 8.751718e-02 - 6.180000e+00 -1.805393e+00 -8.535629e+00 8.755858e-02 - 6.190000e+00 -2.015408e+00 -8.549441e+00 8.733548e-02 - 6.200000e+00 -2.229787e+00 -8.563252e+00 8.692355e-02 - 6.210000e+00 -2.441843e+00 -8.577064e+00 8.646565e-02 - 6.220000e+00 -2.645638e+00 -8.590876e+00 8.612434e-02 - 6.230000e+00 -2.836214e+00 -8.604687e+00 8.602490e-02 - 6.240000e+00 -3.009722e+00 -8.618499e+00 8.620926e-02 - 6.250000e+00 -3.163462e+00 -8.632311e+00 8.661987e-02 - 6.260000e+00 -3.295813e+00 -8.646122e+00 8.712074e-02 - 6.270000e+00 -3.406071e+00 -8.659934e+00 8.754630e-02 - 6.280000e+00 -3.494195e+00 -8.673746e+00 8.775802e-02 - 6.290000e+00 -3.560494e+00 -8.687558e+00 8.768946e-02 - 6.300000e+00 -3.605266e+00 -8.701369e+00 8.736689e-02 - 6.310000e+00 -3.628425e+00 -8.715181e+00 8.690065e-02 - 6.320000e+00 -3.629147e+00 -8.728993e+00 8.644948e-02 - 6.330000e+00 -3.605564e+00 -8.742804e+00 8.616701e-02 - 6.340000e+00 -3.554534e+00 -8.756616e+00 8.614766e-02 - 6.350000e+00 -3.471511e+00 -8.770428e+00 8.639233e-02 - 6.360000e+00 -3.350547e+00 -8.784239e+00 8.680872e-02 - 6.370000e+00 -3.184410e+00 -8.798051e+00 8.724599e-02 - 6.380000e+00 -2.964853e+00 -8.811863e+00 8.754876e-02 - 6.390000e+00 -2.683002e+00 -8.825674e+00 8.760987e-02 - 6.400000e+00 -2.329863e+00 -8.839486e+00 8.740504e-02 - 6.410000e+00 -1.896913e+00 -8.853298e+00 8.700040e-02 - 6.420000e+00 -1.376751e+00 -8.867110e+00 8.653120e-02 - 6.430000e+00 -7.637666e-01 -8.880921e+00 8.615719e-02 - 6.440000e+00 -5.478658e-02 -8.894733e+00 8.600743e-02 - 6.450000e+00 7.503419e-01 -8.908545e+00 8.613388e-02 - 6.460000e+00 1.648275e+00 -8.922356e+00 8.649247e-02 - 6.470000e+00 2.631839e+00 -8.936168e+00 8.696004e-02 - 6.480000e+00 3.689864e+00 -8.949980e+00 8.737928e-02 - 6.490000e+00 4.807217e+00 -8.963791e+00 8.761334e-02 - 6.500000e+00 5.965040e+00 -8.977603e+00 8.759051e-02 - 6.510000e+00 7.141184e+00 -8.991415e+00 8.732628e-02 - 6.520000e+00 8.310844e+00 -9.005227e+00 8.691727e-02 - 6.530000e+00 9.447355e+00 -9.019038e+00 8.650892e-02 - 6.540000e+00 1.052313e+01 -9.032850e+00 8.624585e-02 - 6.550000e+00 1.151068e+01 -9.046662e+00 8.622056e-02 - 6.560000e+00 1.238368e+01 -9.060473e+00 8.643989e-02 - 6.570000e+00 1.311803e+01 -9.074285e+00 8.682322e-02 - 6.580000e+00 1.369284e+01 -9.088097e+00 8.723311e-02 - 6.590000e+00 1.409131e+01 -9.101908e+00 8.752513e-02 - 6.600000e+00 1.430143e+01 -9.115720e+00 8.759756e-02 - 6.610000e+00 1.431653e+01 -9.129532e+00 8.742490e-02 - 6.620000e+00 1.413553e+01 -9.143344e+00 8.706581e-02 - 6.630000e+00 1.376303e+01 -9.157155e+00 8.664383e-02 - 6.640000e+00 1.320907e+01 -9.170967e+00 8.630586e-02 - 6.650000e+00 1.248876e+01 -9.184779e+00 8.617074e-02 - 6.660000e+00 1.162158e+01 -9.198590e+00 8.628606e-02 - 6.670000e+00 1.063063e+01 -9.212402e+00 8.661044e-02 - 6.680000e+00 9.541615e+00 -9.226214e+00 8.702918e-02 - 6.690000e+00 8.381888e+00 -9.240025e+00 8.739620e-02 - 6.700000e+00 7.179331e+00 -9.253837e+00 8.758517e-02 - 6.710000e+00 5.961341e+00 -9.267649e+00 8.753185e-02 - 6.720000e+00 4.753851e+00 -9.281461e+00 8.725476e-02 - 6.730000e+00 3.580485e+00 -9.295272e+00 8.684917e-02 - 6.740000e+00 2.461850e+00 -9.309084e+00 8.645577e-02 - 6.750000e+00 1.415025e+00 -9.322896e+00 8.621269e-02 - 6.760000e+00 4.532287e-01 -9.336707e+00 8.620624e-02 - 6.770000e+00 -4.142968e-01 -9.350519e+00 8.643915e-02 - 6.780000e+00 -1.182223e+00 -9.364331e+00 8.682945e-02 - 6.790000e+00 -1.848891e+00 -9.378142e+00 8.724072e-02 - 6.800000e+00 -2.415919e+00 -9.391954e+00 8.753056e-02 - 6.810000e+00 -2.887703e+00 -9.405766e+00 8.759901e-02 - 6.820000e+00 -3.270830e+00 -9.419577e+00 8.742103e-02 - 6.830000e+00 -3.573468e+00 -9.433389e+00 8.705433e-02 - 6.840000e+00 -3.804748e+00 -9.447201e+00 8.662072e-02 - 6.850000e+00 -3.974192e+00 -9.461013e+00 8.626564e-02 - 6.860000e+00 -4.091203e+00 -9.474824e+00 8.610804e-02 - 6.870000e+00 -4.164653e+00 -9.488636e+00 8.619781e-02 - 6.880000e+00 -4.202570e+00 -9.502448e+00 8.649787e-02 - 6.890000e+00 -4.211947e+00 -9.516259e+00 8.689872e-02 - 6.900000e+00 -4.198652e+00 -9.530071e+00 8.725885e-02 - 6.910000e+00 -4.167450e+00 -9.543883e+00 8.745463e-02 - 6.920000e+00 -4.122095e+00 -9.557694e+00 8.742188e-02 - 6.930000e+00 -4.065505e+00 -9.571506e+00 8.717653e-02 - 6.940000e+00 -3.999959e+00 -9.585318e+00 8.680901e-02 - 6.950000e+00 -3.927327e+00 -9.599130e+00 8.645406e-02 - 6.960000e+00 -3.849278e+00 -9.612941e+00 8.624413e-02 - 6.970000e+00 -3.767473e+00 -9.626753e+00 8.626168e-02 - 6.980000e+00 -3.683709e+00 -9.640565e+00 8.650827e-02 - 6.990000e+00 -3.600007e+00 -9.654376e+00 8.690351e-02 - 7.000000e+00 -3.518647e+00 -9.668188e+00 8.731419e-02 - 7.010000e+00 -3.442143e+00 -9.682000e+00 8.760140e-02 - 7.020000e+00 -3.373162e+00 -9.695811e+00 8.766765e-02 - 7.030000e+00 -3.314405e+00 -9.709623e+00 8.748867e-02 - 7.040000e+00 -3.268464e+00 -9.723435e+00 8.712136e-02 - 7.050000e+00 -3.237658e+00 -9.737247e+00 8.668565e-02 - 7.060000e+00 -3.223883e+00 -9.751058e+00 8.632511e-02 - 7.070000e+00 -3.228470e+00 -9.764870e+00 8.615774e-02 - 7.080000e+00 -3.252079e+00 -9.778682e+00 8.623406e-02 - 7.090000e+00 -3.294630e+00 -9.792493e+00 8.651903e-02 - 7.100000e+00 -3.355279e+00 -9.806305e+00 8.690579e-02 - 7.110000e+00 -3.432434e+00 -9.820117e+00 8.725504e-02 - 7.120000e+00 -3.523812e+00 -9.833928e+00 8.744407e-02 - 7.130000e+00 -3.626529e+00 -9.847740e+00 8.740803e-02 - 7.140000e+00 -3.737210e+00 -9.861552e+00 8.716079e-02 - 7.150000e+00 -3.852113e+00 -9.875363e+00 8.679014e-02 - 7.160000e+00 -3.967249e+00 -9.889175e+00 8.642857e-02 - 7.170000e+00 -4.078489e+00 -9.902987e+00 8.620775e-02 - 7.180000e+00 -4.181658e+00 -9.916799e+00 8.621132e-02 - 7.190000e+00 -4.272592e+00 -9.930610e+00 8.644384e-02 - 7.200000e+00 -4.347178e+00 -9.944422e+00 8.682872e-02 - 7.210000e+00 -4.401366e+00 -9.958234e+00 8.723616e-02 - 7.220000e+00 -4.431155e+00 -9.972045e+00 8.752910e-02 - 7.230000e+00 -4.432579e+00 -9.985857e+00 8.760985e-02 - 7.240000e+00 -4.401686e+00 -9.999669e+00 8.745203e-02 - 7.250000e+00 -4.334534e+00 -1.001348e+01 8.710905e-02 - 7.260000e+00 -4.227210e+00 -1.002729e+01 8.669701e-02 - 7.270000e+00 -4.075886e+00 -1.004110e+01 8.635634e-02 - 7.280000e+00 -3.876916e+00 -1.005492e+01 8.620357e-02 - 7.290000e+00 -3.626982e+00 -1.006873e+01 8.628964e-02 - 7.300000e+00 -3.323282e+00 -1.008254e+01 8.658147e-02 - 7.310000e+00 -2.963758e+00 -1.009635e+01 8.697451e-02 - 7.320000e+00 -2.547353e+00 -1.011016e+01 8.733096e-02 - 7.330000e+00 -2.074275e+00 -1.012397e+01 8.752789e-02 - 7.340000e+00 -1.546259e+00 -1.013779e+01 8.749837e-02 - 7.350000e+00 -9.667883e-01 -1.015160e+01 8.725294e-02 - 7.360000e+00 -3.412800e-01 -1.016541e+01 8.687595e-02 - 7.370000e+00 3.228177e-01 -1.017922e+01 8.649780e-02 - 7.380000e+00 1.016010e+00 -1.019303e+01 8.625065e-02 - 7.390000e+00 1.726847e+00 -1.020684e+01 8.622171e-02 - 7.400000e+00 2.442125e+00 -1.022066e+01 8.642147e-02 - 7.410000e+00 3.147204e+00 -1.023447e+01 8.677992e-02 - 7.420000e+00 3.826419e+00 -1.024828e+01 8.717238e-02 - 7.430000e+00 4.463596e+00 -1.026209e+01 8.746396e-02 - 7.440000e+00 5.042623e+00 -1.027590e+01 8.755554e-02 - 7.450000e+00 5.548071e+00 -1.028971e+01 8.741620e-02 - 7.460000e+00 5.965823e+00 -1.030353e+01 8.709278e-02 - 7.470000e+00 6.283678e+00 -1.031734e+01 8.669456e-02 - 7.480000e+00 6.491899e+00 -1.033115e+01 8.635679e-02 - 7.490000e+00 6.583679e+00 -1.034496e+01 8.619412e-02 - 7.500000e+00 6.555482e+00 -1.035877e+01 8.625962e-02 - 7.510000e+00 6.407260e+00 -1.037258e+01 8.652573e-02 - 7.520000e+00 6.142512e+00 -1.038640e+01 8.689495e-02 - 7.530000e+00 5.768195e+00 -1.040021e+01 8.723582e-02 - 7.540000e+00 5.294482e+00 -1.041402e+01 8.742941e-02 - 7.550000e+00 4.734383e+00 -1.042783e+01 8.740958e-02 - 7.560000e+00 4.103251e+00 -1.044164e+01 8.718460e-02 - 7.570000e+00 3.418196e+00 -1.045545e+01 8.683440e-02 - 7.580000e+00 2.697439e+00 -1.046927e+01 8.648406e-02 - 7.590000e+00 1.959645e+00 -1.048308e+01 8.626112e-02 - 7.600000e+00 1.223256e+00 -1.049689e+01 8.625008e-02 - 7.610000e+00 5.058789e-01 -1.051070e+01 8.646118e-02 - 7.620000e+00 -1.762705e-01 -1.052451e+01 8.682625e-02 - 7.630000e+00 -8.088206e-01 -1.053832e+01 8.722328e-02 - 7.640000e+00 -1.379593e+00 -1.055214e+01 8.751959e-02 - 7.650000e+00 -1.878834e+00 -1.056595e+01 8.761687e-02 - 7.660000e+00 -2.299321e+00 -1.057976e+01 8.748327e-02 - 7.670000e+00 -2.636371e+00 -1.059357e+01 8.716352e-02 - 7.680000e+00 -2.887729e+00 -1.060738e+01 8.676455e-02 - 7.690000e+00 -3.053399e+00 -1.062120e+01 8.642026e-02 - 7.700000e+00 -3.135390e+00 -1.063501e+01 8.624582e-02 - 7.710000e+00 -3.137448e+00 -1.064882e+01 8.629701e-02 - 7.720000e+00 -3.064754e+00 -1.066263e+01 8.655023e-02 - 7.730000e+00 -2.923640e+00 -1.067644e+01 8.691194e-02 - 7.740000e+00 -2.721321e+00 -1.069025e+01 8.725297e-02 - 7.750000e+00 -2.465665e+00 -1.070407e+01 8.745415e-02 - 7.760000e+00 -2.165005e+00 -1.071788e+01 8.744637e-02 - 7.770000e+00 -1.827993e+00 -1.073169e+01 8.723295e-02 - 7.780000e+00 -1.463495e+00 -1.074550e+01 8.688815e-02 - 7.790000e+00 -1.080518e+00 -1.075931e+01 8.653246e-02 - 7.800000e+00 -6.881554e-01 -1.077312e+01 8.629153e-02 - 7.810000e+00 -2.955460e-01 -1.078694e+01 8.625170e-02 - 7.820000e+00 8.818105e-02 -1.080075e+01 8.642853e-02 - 7.830000e+00 4.539747e-01 -1.081456e+01 8.676105e-02 - 7.840000e+00 7.929615e-01 -1.082837e+01 8.713417e-02 - 7.850000e+00 1.096579e+00 -1.084218e+01 8.741985e-02 - 7.860000e+00 1.356747e+00 -1.085599e+01 8.752100e-02 - 7.870000e+00 1.566073e+00 -1.086981e+01 8.740354e-02 - 7.880000e+00 1.718081e+00 -1.088362e+01 8.710728e-02 - 7.890000e+00 1.807461e+00 -1.089743e+01 8.673292e-02 - 7.900000e+00 1.830310e+00 -1.091124e+01 8.640862e-02 - 7.910000e+00 1.784361e+00 -1.092505e+01 8.624595e-02 - 7.920000e+00 1.669172e+00 -1.093886e+01 8.630016e-02 - 7.930000e+00 1.486265e+00 -1.095268e+01 8.655020e-02 - 7.940000e+00 1.239192e+00 -1.096649e+01 8.690681e-02 - 7.950000e+00 9.335295e-01 -1.098030e+01 8.724518e-02 - 7.960000e+00 5.767748e-01 -1.099411e+01 8.744885e-02 - 7.970000e+00 1.781685e-01 -1.100792e+01 8.744896e-02 - 7.980000e+00 -2.515741e-01 -1.102173e+01 8.724661e-02 - 7.990000e+00 -7.006017e-01 -1.103555e+01 8.691219e-02 - 8.000000e+00 -1.156323e+00 -1.104936e+01 8.656200e-02 - 8.010000e+00 -1.605844e+00 -1.106317e+01 8.631875e-02 - 8.020000e+00 -2.036420e+00 -1.107698e+01 8.626827e-02 - 8.030000e+00 -2.435906e+00 -1.109079e+01 8.642838e-02 - 8.040000e+00 -2.793178e+00 -1.110460e+01 8.674233e-02 - 8.050000e+00 -3.098512e+00 -1.111842e+01 8.709977e-02 - 8.060000e+00 -3.343890e+00 -1.113223e+01 8.737617e-02 - 8.070000e+00 -3.523241e+00 -1.114604e+01 8.747575e-02 - 8.080000e+00 -3.632589e+00 -1.115985e+01 8.736322e-02 - 8.090000e+00 -3.670114e+00 -1.117366e+01 8.707518e-02 - 8.100000e+00 -3.636133e+00 -1.118747e+01 8.670830e-02 - 8.110000e+00 -3.532999e+00 -1.120129e+01 8.638727e-02 - 8.120000e+00 -3.364936e+00 -1.121510e+01 8.622217e-02 - 8.130000e+00 -3.137818e+00 -1.122891e+01 8.626941e-02 - 8.140000e+00 -2.858915e+00 -1.124272e+01 8.651148e-02 - 8.150000e+00 -2.536611e+00 -1.125653e+01 8.686382e-02 - 8.160000e+00 -2.180124e+00 -1.127034e+01 8.720573e-02 - 8.170000e+00 -1.799223e+00 -1.128416e+01 8.742290e-02 - 8.180000e+00 -1.403965e+00 -1.129797e+01 8.744584e-02 - 8.190000e+00 -1.004458e+00 -1.131178e+01 8.727231e-02 - 8.200000e+00 -6.106442e-01 -1.132559e+01 8.696732e-02 - 8.210000e+00 -2.321136e-01 -1.133940e+01 8.664116e-02 - 8.220000e+00 1.220572e-01 -1.135322e+01 8.641148e-02 - 8.230000e+00 4.434491e-01 -1.136703e+01 8.636156e-02 - 8.240000e+00 7.244291e-01 -1.138084e+01 8.650989e-02 - 8.250000e+00 9.582697e-01 -1.139465e+01 8.680331e-02 - 8.260000e+00 1.139265e+00 -1.140846e+01 8.713658e-02 - 8.270000e+00 1.262844e+00 -1.142227e+01 8.739024e-02 - 8.280000e+00 1.325686e+00 -1.143609e+01 8.747210e-02 - 8.290000e+00 1.325830e+00 -1.144990e+01 8.734839e-02 - 8.300000e+00 1.262779e+00 -1.146371e+01 8.705530e-02 - 8.310000e+00 1.137587e+00 -1.147752e+01 8.668776e-02 - 8.320000e+00 9.529220e-01 -1.149133e+01 8.636844e-02 - 8.330000e+00 7.130975e-01 -1.150514e+01 8.620594e-02 - 8.340000e+00 4.240556e-01 -1.151896e+01 8.625642e-02 - 8.350000e+00 9.329779e-02 -1.153277e+01 8.650321e-02 - 8.360000e+00 -2.702450e-01 -1.154658e+01 8.686301e-02 - 8.370000e+00 -6.564063e-01 -1.156039e+01 8.721593e-02 - 8.380000e+00 -1.054043e+00 -1.157420e+01 8.744716e-02 - 8.390000e+00 -1.451351e+00 -1.158801e+01 8.748512e-02 - 8.400000e+00 -1.836238e+00 -1.160183e+01 8.732405e-02 - 8.410000e+00 -2.196723e+00 -1.161564e+01 8.702498e-02 - 8.420000e+00 -2.521366e+00 -1.162945e+01 8.669490e-02 - 8.430000e+00 -2.799690e+00 -1.164326e+01 8.645018e-02 - 8.440000e+00 -3.022590e+00 -1.165707e+01 8.637573e-02 - 8.450000e+00 -3.182695e+00 -1.167088e+01 8.649456e-02 - 8.460000e+00 -3.274671e+00 -1.168470e+01 8.675976e-02 - 8.470000e+00 -3.295447e+00 -1.169851e+01 8.707235e-02 - 8.480000e+00 -3.244348e+00 -1.171232e+01 8.731743e-02 - 8.490000e+00 -3.123134e+00 -1.172613e+01 8.740456e-02 - 8.500000e+00 -2.935929e+00 -1.173994e+01 8.729860e-02 - 8.510000e+00 -2.689061e+00 -1.175375e+01 8.703170e-02 - 8.520000e+00 -2.390808e+00 -1.176757e+01 8.669304e-02 - 8.530000e+00 -2.051063e+00 -1.178138e+01 8.639925e-02 - 8.540000e+00 -1.680950e+00 -1.179519e+01 8.625415e-02 - 8.550000e+00 -1.292393e+00 -1.180900e+01 8.631147e-02 - 8.560000e+00 -8.976655e-01 -1.182281e+01 8.655493e-02 - 8.570000e+00 -5.089507e-01 -1.183662e+01 8.690379e-02 - 8.580000e+00 -1.379157e-01 -1.185044e+01 8.724170e-02 - 8.590000e+00 2.046711e-01 -1.186425e+01 8.745698e-02 - 8.600000e+00 5.092724e-01 -1.187806e+01 8.747997e-02 - 8.610000e+00 7.678529e-01 -1.189187e+01 8.730537e-02 - 8.620000e+00 9.740860e-01 -1.190568e+01 8.699360e-02 - 8.630000e+00 1.123495e+00 -1.191949e+01 8.665084e-02 - 8.640000e+00 1.213531e+00 -1.193331e+01 8.639336e-02 - 8.650000e+00 1.243602e+00 -1.194712e+01 8.630718e-02 - 8.660000e+00 1.215045e+00 -1.196093e+01 8.641768e-02 - 8.670000e+00 1.131068e+00 -1.197474e+01 8.668092e-02 - 8.680000e+00 9.966652e-01 -1.198855e+01 8.700042e-02 - 8.690000e+00 8.184972e-01 -1.200236e+01 8.726226e-02 - 8.700000e+00 6.047687e-01 -1.201618e+01 8.737496e-02 - 8.710000e+00 3.650812e-01 -1.202999e+01 8.730014e-02 - 8.720000e+00 1.102728e-01 -1.204380e+01 8.706510e-02 - 8.730000e+00 -1.477617e-01 -1.205761e+01 8.675349e-02 - 8.740000e+00 -3.962768e-01 -1.207142e+01 8.647706e-02 - 8.750000e+00 -6.219127e-01 -1.208524e+01 8.633674e-02 - 8.760000e+00 -8.109697e-01 -1.209905e+01 8.638627e-02 - 8.770000e+00 -9.497260e-01 -1.211286e+01 8.661224e-02 - 8.780000e+00 -1.024799e+00 -1.212667e+01 8.693873e-02 - 8.790000e+00 -1.023552e+00 -1.214048e+01 8.725461e-02 - 8.800000e+00 -9.345354e-01 -1.215429e+01 8.745244e-02 - 8.810000e+00 -7.479563e-01 -1.216811e+01 8.746492e-02 - 8.820000e+00 -4.561570e-01 -1.218192e+01 8.728703e-02 - 8.830000e+00 -5.408176e-02 -1.219573e+01 8.697780e-02 - 8.840000e+00 4.602920e-01 -1.220954e+01 8.664106e-02 - 8.850000e+00 1.085586e+00 -1.222335e+01 8.639072e-02 - 8.860000e+00 1.816743e+00 -1.223716e+01 8.631117e-02 - 8.870000e+00 2.644869e+00 -1.225098e+01 8.642725e-02 - 8.880000e+00 3.557207e+00 -1.226479e+01 8.669538e-02 - 8.890000e+00 4.537280e+00 -1.227860e+01 8.701972e-02 - 8.900000e+00 5.565186e+00 -1.229241e+01 8.728657e-02 - 8.910000e+00 6.618072e+00 -1.230622e+01 8.740369e-02 - 8.920000e+00 7.670763e+00 -1.232003e+01 8.733101e-02 - 8.930000e+00 8.696530e+00 -1.233385e+01 8.709356e-02 - 8.940000e+00 9.667974e+00 -1.234766e+01 8.677302e-02 - 8.950000e+00 1.055799e+01 -1.236147e+01 8.648046e-02 - 8.960000e+00 1.134075e+01 -1.237528e+01 8.631808e-02 - 8.970000e+00 1.199270e+01 -1.238909e+01 8.634303e-02 - 8.980000e+00 1.249350e+01 -1.240290e+01 8.654665e-02 - 8.990000e+00 1.282679e+01 -1.241672e+01 8.685784e-02 - 9.000000e+00 1.298090e+01 -1.243053e+01 8.716892e-02 - 9.010000e+00 1.294932e+01 -1.244434e+01 8.737363e-02 - 9.020000e+00 1.273097e+01 -1.245815e+01 8.740326e-02 - 9.030000e+00 1.233022e+01 -1.247196e+01 8.724920e-02 - 9.040000e+00 1.175672e+01 -1.248577e+01 8.696564e-02 - 9.050000e+00 1.102496e+01 -1.249959e+01 8.665154e-02 - 9.060000e+00 1.015368e+01 -1.251340e+01 8.641715e-02 - 9.070000e+00 9.165054e+00 -1.252721e+01 8.634552e-02 - 9.080000e+00 8.083764e+00 -1.254102e+01 8.646260e-02 - 9.090000e+00 6.936027e+00 -1.255483e+01 8.672781e-02 - 9.100000e+00 5.748546e+00 -1.256864e+01 8.704891e-02 - 9.110000e+00 4.547501e+00 -1.258246e+01 8.731494e-02 - 9.120000e+00 3.357612e+00 -1.259627e+01 8.743453e-02 - 9.130000e+00 2.201315e+00 -1.261008e+01 8.736635e-02 - 9.140000e+00 1.098084e+00 -1.262389e+01 8.713241e-02 - 9.150000e+00 6.393724e-02 -1.263770e+01 8.681078e-02 - 9.160000e+00 -8.888679e-01 -1.265151e+01 8.650957e-02 - 9.170000e+00 -1.751948e+00 -1.266533e+01 8.633011e-02 - 9.180000e+00 -2.520712e+00 -1.267914e+01 8.633136e-02 - 9.190000e+00 -3.194120e+00 -1.269295e+01 8.650901e-02 - 9.200000e+00 -3.774287e+00 -1.270676e+01 8.679761e-02 - 9.210000e+00 -4.265986e+00 -1.272057e+01 8.709484e-02 - 9.220000e+00 -4.676078e+00 -1.273438e+01 8.729798e-02 - 9.230000e+00 -5.012897e+00 -1.274820e+01 8.733918e-02 - 9.240000e+00 -5.285654e+00 -1.276201e+01 8.720785e-02 - 9.250000e+00 -5.503858e+00 -1.277582e+01 8.695382e-02 - 9.260000e+00 -5.676820e+00 -1.278963e+01 8.667035e-02 - 9.270000e+00 -5.813222e+00 -1.280344e+01 8.646195e-02 - 9.280000e+00 -5.920798e+00 -1.281725e+01 8.640730e-02 - 9.290000e+00 -6.006108e+00 -1.283107e+01 8.653038e-02 - 9.300000e+00 -6.074419e+00 -1.284488e+01 8.679133e-02 - 9.310000e+00 -6.129667e+00 -1.285869e+01 8.710062e-02 - 9.320000e+00 -6.174503e+00 -1.287250e+01 8.735094e-02 - 9.330000e+00 -6.210392e+00 -1.288631e+01 8.745438e-02 - 9.340000e+00 -6.237755e+00 -1.290013e+01 8.737209e-02 - 9.350000e+00 -6.256124e+00 -1.291394e+01 8.712738e-02 - 9.360000e+00 -6.264304e+00 -1.292775e+01 8.679863e-02 - 9.370000e+00 -6.260523e+00 -1.294156e+01 8.649375e-02 - 9.380000e+00 -6.242561e+00 -1.295537e+01 8.631371e-02 - 9.390000e+00 -6.207852e+00 -1.296918e+01 8.631735e-02 - 9.400000e+00 -6.153565e+00 -1.298300e+01 8.650032e-02 - 9.410000e+00 -6.076659e+00 -1.299681e+01 8.679699e-02 - 9.420000e+00 -5.973936e+00 -1.301062e+01 8.710424e-02 - 9.430000e+00 -5.842086e+00 -1.302443e+01 8.731774e-02 - 9.440000e+00 -5.677740e+00 -1.303824e+01 8.736720e-02 - 9.450000e+00 -5.477554e+00 -1.305205e+01 8.723917e-02 - 9.460000e+00 -5.238312e+00 -1.306587e+01 8.698093e-02 - 9.470000e+00 -4.957070e+00 -1.307968e+01 8.668442e-02 - 9.480000e+00 -4.631329e+00 -1.309349e+01 8.645490e-02 - 9.490000e+00 -4.259246e+00 -1.310730e+01 8.637421e-02 - 9.500000e+00 -3.839860e+00 -1.312111e+01 8.647142e-02 - 9.510000e+00 -3.373332e+00 -1.313492e+01 8.671246e-02 - 9.520000e+00 -2.861170e+00 -1.314874e+01 8.701277e-02 - 9.530000e+00 -2.306436e+00 -1.316255e+01 8.726783e-02 - 9.540000e+00 -1.713899e+00 -1.317636e+01 8.738967e-02 - 9.550000e+00 -1.090124e+00 -1.319017e+01 8.733651e-02 - 9.560000e+00 -4.434820e-01 -1.320398e+01 8.712656e-02 - 9.570000e+00 2.159325e-01 -1.321779e+01 8.683195e-02 - 9.580000e+00 8.764886e-01 -1.323161e+01 8.655460e-02 - 9.590000e+00 1.525300e+00 -1.324542e+01 8.639119e-02 - 9.600000e+00 2.148600e+00 -1.325923e+01 8.639887e-02 - 9.610000e+00 2.732200e+00 -1.327304e+01 8.657453e-02 - 9.620000e+00 3.262001e+00 -1.328685e+01 8.685595e-02 - 9.630000e+00 3.724542e+00 -1.330066e+01 8.714429e-02 - 9.640000e+00 4.107565e+00 -1.331448e+01 8.733899e-02 - 9.650000e+00 4.400543e+00 -1.332829e+01 8.737213e-02 - 9.660000e+00 4.595165e+00 -1.334210e+01 8.723101e-02 - 9.670000e+00 4.685740e+00 -1.335591e+01 8.696239e-02 - 9.680000e+00 4.669497e+00 -1.336972e+01 8.665720e-02 - 9.690000e+00 4.546759e+00 -1.338353e+01 8.642001e-02 - 9.700000e+00 4.320990e+00 -1.339735e+01 8.633296e-02 - 9.710000e+00 3.998700e+00 -1.341116e+01 8.642649e-02 - 9.720000e+00 3.589214e+00 -1.342497e+01 8.666849e-02 - 9.730000e+00 3.104320e+00 -1.343878e+01 8.697614e-02 - 9.740000e+00 2.557813e+00 -1.345259e+01 8.724548e-02 - 9.750000e+00 1.964951e+00 -1.346640e+01 8.738734e-02 - 9.760000e+00 1.341861e+00 -1.348022e+01 8.735698e-02 - 9.770000e+00 7.049174e-01 -1.349403e+01 8.716823e-02 - 9.780000e+00 7.012748e-02 -1.350784e+01 8.688841e-02 - 9.790000e+00 -5.474493e-01 -1.352165e+01 8.661543e-02 - 9.800000e+00 -1.134219e+00 -1.353546e+01 8.644403e-02 - 9.810000e+00 -1.678491e+00 -1.354927e+01 8.643230e-02 - 9.820000e+00 -2.170806e+00 -1.356309e+01 8.658090e-02 - 9.830000e+00 -2.604164e+00 -1.357690e+01 8.683326e-02 - 9.840000e+00 -2.974131e+00 -1.359071e+01 8.709657e-02 - 9.850000e+00 -3.278823e+00 -1.360452e+01 8.727520e-02 - 9.860000e+00 -3.518798e+00 -1.361833e+01 8.730399e-02 - 9.870000e+00 -3.696842e+00 -1.363215e+01 8.717051e-02 - 9.880000e+00 -3.817675e+00 -1.364596e+01 8.691943e-02 - 9.890000e+00 -3.887602e+00 -1.365977e+01 8.663786e-02 - 9.900000e+00 -3.914115e+00 -1.367358e+01 8.642579e-02 - 9.910000e+00 -3.905480e+00 -1.368739e+01 8.636104e-02 - 9.920000e+00 -3.870320e+00 -1.370120e+01 8.647090e-02 - 9.930000e+00 -3.817203e+00 -1.371502e+01 8.672179e-02 - 9.940000e+00 -3.754274e+00 -1.372883e+01 8.703094e-02 - 9.950000e+00 -3.688918e+00 -1.374264e+01 8.729552e-02 - 9.960000e+00 -3.627475e+00 -1.375645e+01 8.742791e-02 - 9.970000e+00 -3.575013e+00 -1.377026e+01 8.738488e-02 - 9.980000e+00 -3.535158e+00 -1.378407e+01 8.718164e-02 - 9.990000e+00 -3.509989e+00 -1.379789e+01 8.688691e-02 - 1.000000e+01 -3.499993e+00 -1.381170e+01 8.660026e-02 - 1.001000e+01 -3.504072e+00 -1.382551e+01 8.641841e-02 - 1.002000e+01 -3.519616e+00 -1.383932e+01 8.640157e-02 - 1.003000e+01 -3.542627e+00 -1.385313e+01 8.655216e-02 - 1.004000e+01 -3.567881e+00 -1.386694e+01 8.681427e-02 - 1.005000e+01 -3.589155e+00 -1.388076e+01 8.709419e-02 - 1.006000e+01 -3.599469e+00 -1.389457e+01 8.729364e-02 - 1.007000e+01 -3.591385e+00 -1.390838e+01 8.734331e-02 - 1.008000e+01 -3.557318e+00 -1.392219e+01 8.722578e-02 - 1.009000e+01 -3.489873e+00 -1.393600e+01 8.698092e-02 - 1.010000e+01 -3.382189e+00 -1.394981e+01 8.669241e-02 - 1.011000e+01 -3.228289e+00 -1.396363e+01 8.645935e-02 - 1.012000e+01 -3.023408e+00 -1.397744e+01 8.636177e-02 - 1.013000e+01 -2.764303e+00 -1.399125e+01 8.643218e-02 - 1.014000e+01 -2.449523e+00 -1.400506e+01 8.664393e-02 - 1.015000e+01 -2.079619e+00 -1.401887e+01 8.692128e-02 - 1.016000e+01 -1.657294e+00 -1.403268e+01 8.716681e-02 - 1.017000e+01 -1.187470e+00 -1.404650e+01 8.729563e-02 - 1.018000e+01 -6.772696e-01 -1.406031e+01 8.726425e-02 - 1.019000e+01 -1.358937e-01 -1.407412e+01 8.708504e-02 - 1.020000e+01 4.255869e-01 -1.408793e+01 8.682200e-02 - 1.021000e+01 9.945439e-01 -1.410174e+01 8.656929e-02 - 1.022000e+01 1.557189e+00 -1.411555e+01 8.641868e-02 - 1.023000e+01 2.099047e+00 -1.412937e+01 8.642691e-02 - 1.024000e+01 2.605490e+00 -1.414318e+01 8.659488e-02 - 1.025000e+01 3.062306e+00 -1.415699e+01 8.686709e-02 - 1.026000e+01 3.456283e+00 -1.417080e+01 8.715138e-02 - 1.027000e+01 3.775775e+00 -1.418461e+01 8.735130e-02 - 1.028000e+01 4.011229e+00 -1.419842e+01 8.739897e-02 - 1.029000e+01 4.155640e+00 -1.421224e+01 8.727770e-02 - 1.030000e+01 4.204914e+00 -1.422605e+01 8.702751e-02 - 1.031000e+01 4.158113e+00 -1.423986e+01 8.673214e-02 - 1.032000e+01 4.017568e+00 -1.425367e+01 8.649118e-02 - 1.033000e+01 3.788855e+00 -1.426748e+01 8.638585e-02 - 1.034000e+01 3.480622e+00 -1.428129e+01 8.645047e-02 - 1.035000e+01 3.104278e+00 -1.429511e+01 8.666030e-02 - 1.036000e+01 2.673553e+00 -1.430892e+01 8.694084e-02 - 1.037000e+01 2.203951e+00 -1.432273e+01 8.719458e-02 - 1.038000e+01 1.712118e+00 -1.433654e+01 8.733498e-02 - 1.039000e+01 1.215153e+00 -1.435035e+01 8.731546e-02 - 1.040000e+01 7.298949e-01 -1.436417e+01 8.714454e-02 - 1.041000e+01 2.722260e-01 -1.437798e+01 8.688261e-02 - 1.042000e+01 -1.435834e-01 -1.439179e+01 8.662157e-02 - 1.043000e+01 -5.054535e-01 -1.440560e+01 8.645317e-02 - 1.044000e+01 -8.039674e-01 -1.441941e+01 8.643676e-02 - 1.045000e+01 -1.032717e+00 -1.443322e+01 8.657798e-02 - 1.046000e+01 -1.188507e+00 -1.444704e+01 8.682686e-02 - 1.047000e+01 -1.271401e+00 -1.446085e+01 8.709613e-02 - 1.048000e+01 -1.284622e+00 -1.447466e+01 8.729218e-02 - 1.049000e+01 -1.234299e+00 -1.448847e+01 8.734732e-02 - 1.050000e+01 -1.129080e+00 -1.450228e+01 8.724243e-02 - 1.051000e+01 -9.796357e-01 -1.451609e+01 8.701305e-02 - 1.052000e+01 -7.980667e-01 -1.452991e+01 8.673757e-02 - 1.053000e+01 -5.972583e-01 -1.454372e+01 8.651054e-02 - 1.054000e+01 -3.902032e-01 -1.455753e+01 8.640985e-02 - 1.055000e+01 -1.893300e-01 -1.457134e+01 8.646890e-02 - 1.056000e+01 -5.868969e-03 -1.458515e+01 8.666457e-02 - 1.057000e+01 1.507162e-01 -1.459896e+01 8.692576e-02 - 1.058000e+01 2.732033e-01 -1.461278e+01 8.715906e-02 - 1.059000e+01 3.569721e-01 -1.462659e+01 8.728155e-02 - 1.060000e+01 4.002350e-01 -1.464040e+01 8.724917e-02 - 1.061000e+01 4.041267e-01 -1.465421e+01 8.707157e-02 - 1.062000e+01 3.726514e-01 -1.466802e+01 8.680913e-02 - 1.063000e+01 3.124882e-01 -1.468183e+01 8.655297e-02 - 1.064000e+01 2.326669e-01 -1.469565e+01 8.639387e-02 - 1.065000e+01 1.441274e-01 -1.470946e+01 8.639026e-02 - 1.066000e+01 5.918253e-02 -1.472327e+01 8.654709e-02 - 1.067000e+01 -9.089408e-03 -1.473708e+01 8.681372e-02 - 1.068000e+01 -4.749838e-02 -1.475089e+01 8.710195e-02 - 1.069000e+01 -4.341128e-02 -1.476470e+01 8.731675e-02 - 1.070000e+01 1.459279e-02 -1.477852e+01 8.738842e-02 - 1.071000e+01 1.361100e-01 -1.479233e+01 8.729542e-02 - 1.072000e+01 3.283693e-01 -1.480614e+01 8.707112e-02 - 1.073000e+01 5.957845e-01 -1.481995e+01 8.679261e-02 - 1.074000e+01 9.396214e-01 -1.483376e+01 8.655478e-02 - 1.075000e+01 1.357797e+00 -1.484757e+01 8.643778e-02 - 1.076000e+01 1.844820e+00 -1.486139e+01 8.647898e-02 - 1.077000e+01 2.391879e+00 -1.487520e+01 8.665995e-02 - 1.078000e+01 2.987079e+00 -1.488901e+01 8.691370e-02 - 1.079000e+01 3.615810e+00 -1.490282e+01 8.714917e-02 - 1.080000e+01 4.261249e+00 -1.491663e+01 8.728329e-02 - 1.081000e+01 4.904966e+00 -1.493044e+01 8.726934e-02 - 1.082000e+01 5.527609e+00 -1.494426e+01 8.711234e-02 - 1.083000e+01 6.109646e+00 -1.495807e+01 8.686715e-02 - 1.084000e+01 6.632134e+00 -1.497188e+01 8.661987e-02 - 1.085000e+01 7.077476e+00 -1.498569e+01 8.645806e-02 - 1.086000e+01 7.430133e+00 -1.499950e+01 8.643983e-02 - 1.087000e+01 7.677269e+00 -1.501331e+01 8.657274e-02 - 1.088000e+01 7.809287e+00 -1.502713e+01 8.681111e-02 - 1.089000e+01 7.820243e+00 -1.504094e+01 8.707253e-02 - 1.090000e+01 7.708102e+00 -1.505475e+01 8.726713e-02 - 1.091000e+01 7.474844e+00 -1.506856e+01 8.732861e-02 - 1.092000e+01 7.126393e+00 -1.508237e+01 8.723654e-02 - 1.093000e+01 6.672383e+00 -1.509619e+01 8.702312e-02 - 1.094000e+01 6.125769e+00 -1.511000e+01 8.676251e-02 - 1.095000e+01 5.502291e+00 -1.512381e+01 8.654572e-02 - 1.096000e+01 4.819826e+00 -1.513762e+01 8.644903e-02 - 1.097000e+01 4.097651e+00 -1.515143e+01 8.650673e-02 - 1.098000e+01 3.355657e+00 -1.516524e+01 8.669867e-02 - 1.099000e+01 2.613538e+00 -1.517906e+01 8.695747e-02 - 1.100000e+01 1.890007e+00 -1.519287e+01 8.719265e-02 - 1.101000e+01 1.202072e+00 -1.520668e+01 8.732212e-02 - 1.102000e+01 5.644048e-01 -1.522049e+01 8.730016e-02 - 1.103000e+01 -1.117578e-02 -1.523430e+01 8.713260e-02 - 1.104000e+01 -5.160635e-01 -1.524811e+01 8.687511e-02 - 1.105000e+01 -9.450700e-01 -1.526193e+01 8.661474e-02 - 1.106000e+01 -1.296459e+00 -1.527574e+01 8.644044e-02 - 1.107000e+01 -1.571811e+00 -1.528955e+01 8.641206e-02 - 1.108000e+01 -1.775734e+00 -1.530336e+01 8.653895e-02 - 1.109000e+01 -1.915430e+00 -1.531717e+01 8.677666e-02 - 1.110000e+01 -2.000150e+00 -1.533098e+01 8.704302e-02 - 1.111000e+01 -2.040561e+00 -1.534480e+01 8.724705e-02 - 1.112000e+01 -2.048072e+00 -1.535861e+01 8.732011e-02 - 1.113000e+01 -2.034146e+00 -1.537242e+01 8.723861e-02 - 1.114000e+01 -2.009629e+00 -1.538623e+01 8.703151e-02 - 1.115000e+01 -1.984157e+00 -1.540004e+01 8.677052e-02 - 1.116000e+01 -1.965642e+00 -1.541385e+01 8.654577e-02 - 1.117000e+01 -1.959882e+00 -1.542767e+01 8.643477e-02 - 1.118000e+01 -1.970309e+00 -1.544148e+01 8.647500e-02 - 1.119000e+01 -1.997881e+00 -1.545529e+01 8.665064e-02 - 1.120000e+01 -2.041129e+00 -1.546910e+01 8.689860e-02 - 1.121000e+01 -2.096343e+00 -1.548291e+01 8.713137e-02 - 1.122000e+01 -2.157899e+00 -1.549672e+01 8.726780e-02 - 1.123000e+01 -2.218678e+00 -1.551054e+01 8.726082e-02 - 1.124000e+01 -2.270590e+00 -1.552435e+01 8.711302e-02 - 1.125000e+01 -2.305135e+00 -1.553816e+01 8.687573e-02 - 1.126000e+01 -2.313987e+00 -1.555197e+01 8.663170e-02 - 1.127000e+01 -2.289573e+00 -1.556578e+01 8.646671e-02 - 1.128000e+01 -2.225594e+00 -1.557959e+01 8.643942e-02 - 1.129000e+01 -2.117479e+00 -1.559341e+01 8.656027e-02 - 1.130000e+01 -1.962742e+00 -1.560722e+01 8.678773e-02 - 1.131000e+01 -1.761217e+00 -1.562103e+01 8.704332e-02 - 1.132000e+01 -1.515167e+00 -1.563484e+01 8.723945e-02 - 1.133000e+01 -1.229262e+00 -1.564865e+01 8.730965e-02 - 1.134000e+01 -9.104208e-01 -1.566246e+01 8.723088e-02 - 1.135000e+01 -5.675403e-01 -1.567628e+01 8.703110e-02 - 1.136000e+01 -2.111127e-01 -1.569009e+01 8.677987e-02 - 1.137000e+01 1.472366e-01 -1.570390e+01 8.656488e-02 - 1.138000e+01 4.952728e-01 -1.571771e+01 8.646148e-02 - 1.139000e+01 8.207056e-01 -1.573152e+01 8.650596e-02 - 1.140000e+01 1.111748e+00 -1.574533e+01 8.668240e-02 - 1.141000e+01 1.357647e+00 -1.575915e+01 8.692850e-02 - 1.142000e+01 1.549171e+00 -1.577296e+01 8.715797e-02 - 1.143000e+01 1.679013e+00 -1.578677e+01 8.729070e-02 - 1.144000e+01 1.742111e+00 -1.580058e+01 8.728018e-02 - 1.145000e+01 1.735857e+00 -1.581439e+01 8.712905e-02 - 1.146000e+01 1.660190e+00 -1.582820e+01 8.688833e-02 - 1.147000e+01 1.517580e+00 -1.584202e+01 8.664048e-02 - 1.148000e+01 1.312886e+00 -1.585583e+01 8.647135e-02 - 1.149000e+01 1.053117e+00 -1.586964e+01 8.644017e-02 - 1.150000e+01 7.471025e-01 -1.588345e+01 8.655827e-02 - 1.151000e+01 4.050765e-01 -1.589726e+01 8.678499e-02 - 1.152000e+01 3.822206e-02 -1.591108e+01 8.704223e-02 - 1.153000e+01 -3.418258e-01 -1.592489e+01 8.724198e-02 - 1.154000e+01 -7.234805e-01 -1.593870e+01 8.731646e-02 - 1.155000e+01 -1.095689e+00 -1.595251e+01 8.724078e-02 - 1.156000e+01 -1.448379e+00 -1.596632e+01 8.704099e-02 - 1.157000e+01 -1.772845e+00 -1.598013e+01 8.678539e-02 - 1.158000e+01 -2.062066e+00 -1.599395e+01 8.656163e-02 - 1.159000e+01 -2.310919e+00 -1.600776e+01 8.644656e-02 - 1.160000e+01 -2.516314e+00 -1.602157e+01 8.647927e-02 - 1.161000e+01 -2.677205e+00 -1.603538e+01 8.664723e-02 - 1.162000e+01 -2.794523e+00 -1.604919e+01 8.689108e-02 - 1.163000e+01 -2.870991e+00 -1.606300e+01 8.712607e-02 - 1.164000e+01 -2.910869e+00 -1.607682e+01 8.727177e-02 - 1.165000e+01 -2.919626e+00 -1.609063e+01 8.727937e-02 - 1.166000e+01 -2.903548e+00 -1.610444e+01 8.714783e-02 - 1.167000e+01 -2.869334e+00 -1.611825e+01 8.692387e-02 - 1.168000e+01 -2.823663e+00 -1.613206e+01 8.668616e-02 - 1.169000e+01 -2.772784e+00 -1.614587e+01 8.651824e-02 - 1.170000e+01 -2.722144e+00 -1.615969e+01 8.647921e-02 - 1.171000e+01 -2.676059e+00 -1.617350e+01 8.658254e-02 - 1.172000e+01 -2.637473e+00 -1.618731e+01 8.679125e-02 - 1.173000e+01 -2.607795e+00 -1.620112e+01 8.703142e-02 - 1.174000e+01 -2.586832e+00 -1.621493e+01 8.721852e-02 - 1.175000e+01 -2.572831e+00 -1.622874e+01 8.728674e-02 - 1.176000e+01 -2.562607e+00 -1.624256e+01 8.721136e-02 - 1.177000e+01 -2.551775e+00 -1.625637e+01 8.701698e-02 - 1.178000e+01 -2.535058e+00 -1.627018e+01 8.676945e-02 - 1.179000e+01 -2.506656e+00 -1.628399e+01 8.655367e-02 - 1.180000e+01 -2.460660e+00 -1.629780e+01 8.644429e-02 - 1.181000e+01 -2.391487e+00 -1.631161e+01 8.647926e-02 - 1.182000e+01 -2.294308e+00 -1.632543e+01 8.664617e-02 - 1.183000e+01 -2.165445e+00 -1.633924e+01 8.688672e-02 - 1.184000e+01 -2.002710e+00 -1.635305e+01 8.711760e-02 - 1.185000e+01 -1.805678e+00 -1.636686e+01 8.725964e-02 - 1.186000e+01 -1.575853e+00 -1.638067e+01 8.726476e-02 - 1.187000e+01 -1.316743e+00 -1.639448e+01 8.713197e-02 - 1.188000e+01 -1.033807e+00 -1.640830e+01 8.690762e-02 - 1.189000e+01 -7.343041e-01 -1.642211e+01 8.666991e-02 - 1.190000e+01 -4.270274e-01 -1.643592e+01 8.650215e-02 - 1.191000e+01 -1.219464e-01 -1.644973e+01 8.646365e-02 - 1.192000e+01 1.702256e-01 -1.646354e+01 8.656845e-02 - 1.193000e+01 4.385179e-01 -1.647735e+01 8.678025e-02 - 1.194000e+01 6.722155e-01 -1.649117e+01 8.702549e-02 - 1.195000e+01 8.613718e-01 -1.650498e+01 8.721939e-02 - 1.196000e+01 9.972917e-01 -1.651879e+01 8.729525e-02 - 1.197000e+01 1.072960e+00 -1.653260e+01 8.722691e-02 - 1.198000e+01 1.083388e+00 -1.654641e+01 8.703750e-02 - 1.199000e+01 1.025863e+00 -1.656022e+01 8.679182e-02 - 1.200000e+01 9.000883e-01 -1.657404e+01 8.657464e-02 - 1.201000e+01 7.081926e-01 -1.658785e+01 8.646157e-02 - 1.202000e+01 4.546330e-01 -1.660166e+01 8.649249e-02 - 1.203000e+01 1.459752e-01 -1.661547e+01 8.665720e-02 - 1.204000e+01 -2.094234e-01 -1.662928e+01 8.689918e-02 - 1.205000e+01 -6.018116e-01 -1.664310e+01 8.713577e-02 - 1.206000e+01 -1.020500e+00 -1.665691e+01 8.728698e-02 - 1.207000e+01 -1.454349e+00 -1.667072e+01 8.730257e-02 - 1.208000e+01 -1.892254e+00 -1.668453e+01 8.717861e-02 - 1.209000e+01 -2.323611e+00 -1.669834e+01 8.695856e-02 - 1.210000e+01 -2.738726e+00 -1.671215e+01 8.671861e-02 - 1.211000e+01 -3.129152e+00 -1.672597e+01 8.654174e-02 - 1.212000e+01 -3.487930e+00 -1.673978e+01 8.648877e-02 - 1.213000e+01 -3.809734e+00 -1.675359e+01 8.657682e-02 - 1.214000e+01 -4.090900e+00 -1.676740e+01 8.677324e-02 - 1.215000e+01 -4.329355e+00 -1.678121e+01 8.700753e-02 - 1.216000e+01 -4.524443e+00 -1.679502e+01 8.719647e-02 - 1.217000e+01 -4.676680e+00 -1.680884e+01 8.727295e-02 - 1.218000e+01 -4.787434e+00 -1.682265e+01 8.720863e-02 - 1.219000e+01 -4.858581e+00 -1.683646e+01 8.702334e-02 - 1.220000e+01 -4.892147e+00 -1.685027e+01 8.677848e-02 - 1.221000e+01 -4.889964e+00 -1.686408e+01 8.655639e-02 - 1.222000e+01 -4.853374e+00 -1.687789e+01 8.643217e-02 - 1.223000e+01 -4.782995e+00 -1.689171e+01 8.644725e-02 - 1.224000e+01 -4.678572e+00 -1.690552e+01 8.659482e-02 - 1.225000e+01 -4.538928e+00 -1.691933e+01 8.682247e-02 - 1.226000e+01 -4.362009e+00 -1.693314e+01 8.705119e-02 - 1.227000e+01 -4.145042e+00 -1.694695e+01 8.720315e-02 - 1.228000e+01 -3.884773e+00 -1.696076e+01 8.722833e-02 - 1.229000e+01 -3.577793e+00 -1.697458e+01 8.712105e-02 - 1.230000e+01 -3.220920e+00 -1.698839e+01 8.692162e-02 - 1.231000e+01 -2.811608e+00 -1.700220e+01 8.670249e-02 - 1.232000e+01 -2.348369e+00 -1.701601e+01 8.654327e-02 - 1.233000e+01 -1.831168e+00 -1.702982e+01 8.650268e-02 - 1.234000e+01 -1.261761e+00 -1.704363e+01 8.659741e-02 - 1.235000e+01 -6.439623e-01 -1.705745e+01 8.679596e-02 - 1.236000e+01 1.619533e-02 -1.707126e+01 8.702998e-02 - 1.237000e+01 7.104125e-01 -1.708507e+01 8.721853e-02 - 1.238000e+01 1.428205e+00 -1.709888e+01 8.729621e-02 - 1.239000e+01 2.157113e+00 -1.711269e+01 8.723538e-02 - 1.240000e+01 2.883035e+00 -1.712650e+01 8.705554e-02 - 1.241000e+01 3.590672e+00 -1.714032e+01 8.681702e-02 - 1.242000e+01 4.264062e+00 -1.715413e+01 8.660088e-02 - 1.243000e+01 4.887185e+00 -1.716794e+01 8.648117e-02 - 1.244000e+01 5.444599e+00 -1.718175e+01 8.649889e-02 - 1.245000e+01 5.922081e+00 -1.719556e+01 8.664741e-02 - 1.246000e+01 6.307240e+00 -1.720937e+01 8.687486e-02 - 1.247000e+01 6.590063e+00 -1.722319e+01 8.710268e-02 - 1.248000e+01 6.763375e+00 -1.723700e+01 8.725305e-02 - 1.249000e+01 6.823174e+00 -1.725081e+01 8.727533e-02 - 1.250000e+01 6.768833e+00 -1.726462e+01 8.716280e-02 - 1.251000e+01 6.603155e+00 -1.727843e+01 8.695464e-02 - 1.252000e+01 6.332272e+00 -1.729224e+01 8.672268e-02 - 1.253000e+01 5.965397e+00 -1.730606e+01 8.654691e-02 - 1.254000e+01 5.514443e+00 -1.731987e+01 8.648757e-02 - 1.255000e+01 4.993524e+00 -1.733368e+01 8.656378e-02 - 1.256000e+01 4.418364e+00 -1.734749e+01 8.674682e-02 - 1.257000e+01 3.805654e+00 -1.736130e+01 8.697064e-02 - 1.258000e+01 3.172377e+00 -1.737512e+01 8.715550e-02 - 1.259000e+01 2.535149e+00 -1.738893e+01 8.723579e-02 - 1.260000e+01 1.909600e+00 -1.740274e+01 8.718240e-02 - 1.261000e+01 1.309839e+00 -1.741655e+01 8.701253e-02 - 1.262000e+01 7.480110e-01 -1.743036e+01 8.678406e-02 - 1.263000e+01 2.339870e-01 -1.744417e+01 8.657617e-02 - 1.264000e+01 -2.248141e-01 -1.745799e+01 8.646206e-02 - 1.265000e+01 -6.234624e-01 -1.747180e+01 8.648318e-02 - 1.266000e+01 -9.594159e-01 -1.748561e+01 8.663426e-02 - 1.267000e+01 -1.232294e+00 -1.749942e+01 8.686518e-02 - 1.268000e+01 -1.443546e+00 -1.751323e+01 8.709868e-02 - 1.269000e+01 -1.596039e+00 -1.752704e+01 8.725726e-02 - 1.270000e+01 -1.693595e+00 -1.754086e+01 8.728943e-02 - 1.271000e+01 -1.740512e+00 -1.755467e+01 8.718665e-02 - 1.272000e+01 -1.741106e+00 -1.756848e+01 8.698587e-02 - 1.273000e+01 -1.699295e+00 -1.758229e+01 8.675708e-02 - 1.274000e+01 -1.618267e+00 -1.759610e+01 8.657944e-02 - 1.275000e+01 -1.500248e+00 -1.760991e+01 8.651388e-02 - 1.276000e+01 -1.346380e+00 -1.762373e+01 8.658162e-02 - 1.277000e+01 -1.156738e+00 -1.763754e+01 8.675681e-02 - 1.278000e+01 -9.304549e-01 -1.765135e+01 8.697617e-02 - 1.279000e+01 -6.659689e-01 -1.766516e+01 8.716167e-02 - 1.280000e+01 -3.613674e-01 -1.767897e+01 8.724787e-02 - 1.281000e+01 -1.479615e-02 -1.769278e+01 8.720413e-02 - 1.282000e+01 3.750883e-01 -1.770660e+01 8.704486e-02 - 1.283000e+01 8.086627e-01 -1.772041e+01 8.682463e-02 - 1.284000e+01 1.284911e+00 -1.773422e+01 8.661965e-02 - 1.285000e+01 1.801066e+00 -1.774803e+01 8.650142e-02 - 1.286000e+01 2.352344e+00 -1.776184e+01 8.651145e-02 - 1.287000e+01 2.931804e+00 -1.777565e+01 8.664630e-02 - 1.288000e+01 3.530348e+00 -1.778947e+01 8.685881e-02 - 1.289000e+01 4.136866e+00 -1.780328e+01 8.707494e-02 - 1.290000e+01 4.738538e+00 -1.781709e+01 8.721979e-02 - 1.291000e+01 5.321262e+00 -1.783090e+01 8.724332e-02 - 1.292000e+01 5.870205e+00 -1.784471e+01 8.713713e-02 - 1.293000e+01 6.370443e+00 -1.785852e+01 8.693730e-02 - 1.294000e+01 6.807651e+00 -1.787234e+01 8.671240e-02 - 1.295000e+01 7.168799e+00 -1.788615e+01 8.654021e-02 - 1.296000e+01 7.442828e+00 -1.789996e+01 8.648076e-02 - 1.297000e+01 7.621238e+00 -1.791377e+01 8.655504e-02 - 1.298000e+01 7.698580e+00 -1.792758e+01 8.673754e-02 - 1.299000e+01 7.672791e+00 -1.794139e+01 8.696542e-02 - 1.300000e+01 7.545364e+00 -1.795521e+01 8.716080e-02 - 1.301000e+01 7.321336e+00 -1.796902e+01 8.725769e-02 - 1.302000e+01 7.009091e+00 -1.798283e+01 8.722421e-02 - 1.303000e+01 6.619978e+00 -1.799664e+01 8.707300e-02 - 1.304000e+01 6.167776e+00 -1.801045e+01 8.685689e-02 - 1.305000e+01 5.668028e+00 -1.802426e+01 8.665092e-02 - 1.306000e+01 5.137281e+00 -1.803808e+01 8.652655e-02 - 1.307000e+01 4.592276e+00 -1.805189e+01 8.652657e-02 - 1.308000e+01 4.049143e+00 -1.806570e+01 8.664985e-02 - 1.309000e+01 3.522635e+00 -1.807951e+01 8.685195e-02 - 1.310000e+01 3.025452e+00 -1.809332e+01 8.706123e-02 - 1.311000e+01 2.567700e+00 -1.810714e+01 8.720411e-02 - 1.312000e+01 2.156499e+00 -1.812095e+01 8.723055e-02 - 1.313000e+01 1.795783e+00 -1.813476e+01 8.713085e-02 - 1.314000e+01 1.486275e+00 -1.814857e+01 8.693898e-02 - 1.315000e+01 1.225663e+00 -1.816238e+01 8.672112e-02 - 1.316000e+01 1.008933e+00 -1.817619e+01 8.655317e-02 - 1.317000e+01 8.288618e-01 -1.819001e+01 8.649430e-02 - 1.318000e+01 6.766120e-01 -1.820382e+01 8.656584e-02 - 1.319000e+01 5.424062e-01 -1.821763e+01 8.674359e-02 - 1.320000e+01 4.162247e-01 -1.823144e+01 8.696646e-02 - 1.321000e+01 2.884859e-01 -1.824525e+01 8.715806e-02 - 1.322000e+01 1.506670e-01 -1.825906e+01 8.725317e-02 - 1.323000e+01 -4.176142e-03 -1.827288e+01 8.721970e-02 - 1.324000e+01 -1.810185e-01 -1.828669e+01 8.706934e-02 - 1.325000e+01 -3.826260e-01 -1.830050e+01 8.685354e-02 - 1.326000e+01 -6.094786e-01 -1.831431e+01 8.664622e-02 - 1.327000e+01 -8.598531e-01 -1.832812e+01 8.651835e-02 - 1.328000e+01 -1.130056e+00 -1.834193e+01 8.651319e-02 - 1.329000e+01 -1.414786e+00 -1.835575e+01 8.663091e-02 - 1.330000e+01 -1.707590e+00 -1.836956e+01 8.682878e-02 - 1.331000e+01 -2.001388e+00 -1.838337e+01 8.703661e-02 - 1.332000e+01 -2.289020e+00 -1.839718e+01 8.718159e-02 - 1.333000e+01 -2.563773e+00 -1.841099e+01 8.721341e-02 - 1.334000e+01 -2.819863e+00 -1.842480e+01 8.712116e-02 - 1.335000e+01 -3.052826e+00 -1.843862e+01 8.693697e-02 - 1.336000e+01 -3.259805e+00 -1.845243e+01 8.672516e-02 - 1.337000e+01 -3.439707e+00 -1.846624e+01 8.656022e-02 - 1.338000e+01 -3.593226e+00 -1.848005e+01 8.650086e-02 - 1.339000e+01 -3.722743e+00 -1.849386e+01 8.656903e-02 - 1.340000e+01 -3.832096e+00 -1.850767e+01 8.674195e-02 - 1.341000e+01 -3.926265e+00 -1.852149e+01 8.696027e-02 - 1.342000e+01 -4.010981e+00 -1.853530e+01 8.714905e-02 - 1.343000e+01 -4.092286e+00 -1.854911e+01 8.724376e-02 - 1.344000e+01 -4.176105e+00 -1.856292e+01 8.721219e-02 - 1.345000e+01 -4.267821e+00 -1.857673e+01 8.706518e-02 - 1.346000e+01 -4.371916e+00 -1.859054e+01 8.685304e-02 - 1.347000e+01 -4.491687e+00 -1.860436e+01 8.664868e-02 - 1.348000e+01 -4.629050e+00 -1.861817e+01 8.652270e-02 - 1.349000e+01 -4.784448e+00 -1.863198e+01 8.651870e-02 - 1.350000e+01 -4.956864e+00 -1.864579e+01 8.663784e-02 - 1.351000e+01 -5.143928e+00 -1.865960e+01 8.683855e-02 - 1.352000e+01 -5.342101e+00 -1.867341e+01 8.705148e-02 - 1.353000e+01 -5.546924e+00 -1.868723e+01 8.720391e-02 - 1.354000e+01 -5.753306e+00 -1.870104e+01 8.724463e-02 - 1.355000e+01 -5.955817e+00 -1.871485e+01 8.716110e-02 - 1.356000e+01 -6.148971e+00 -1.872866e+01 8.698342e-02 - 1.357000e+01 -6.327478e+00 -1.874247e+01 8.677405e-02 - 1.358000e+01 -6.486436e+00 -1.875628e+01 8.660648e-02 - 1.359000e+01 -6.621461e+00 -1.877010e+01 8.653958e-02 - 1.360000e+01 -6.728749e+00 -1.878391e+01 8.659674e-02 - 1.361000e+01 -6.805065e+00 -1.879772e+01 8.675746e-02 - 1.362000e+01 -6.847679e+00 -1.881153e+01 8.696484e-02 - 1.363000e+01 -6.854252e+00 -1.882534e+01 8.714585e-02 - 1.364000e+01 -6.822699e+00 -1.883915e+01 8.723680e-02 - 1.365000e+01 -6.751047e+00 -1.885297e+01 8.720513e-02 - 1.366000e+01 -6.637312e+00 -1.886678e+01 8.706033e-02 - 1.367000e+01 -6.479411e+00 -1.888059e+01 8.685082e-02 - 1.368000e+01 -6.275138e+00 -1.889440e+01 8.664769e-02 - 1.369000e+01 -6.022197e+00 -1.890821e+01 8.652037e-02 - 1.370000e+01 -5.718318e+00 -1.892203e+01 8.651225e-02 - 1.371000e+01 -5.361436e+00 -1.893584e+01 8.662527e-02 - 1.372000e+01 -4.949941e+00 -1.894965e+01 8.681930e-02 - 1.373000e+01 -4.482964e+00 -1.896346e+01 8.702647e-02 - 1.374000e+01 -3.960701e+00 -1.897727e+01 8.717513e-02 - 1.375000e+01 -3.384724e+00 -1.899108e+01 8.721440e-02 - 1.376000e+01 -2.758268e+00 -1.900490e+01 8.713130e-02 - 1.377000e+01 -2.086466e+00 -1.901871e+01 8.695496e-02 - 1.378000e+01 -1.376492e+00 -1.903252e+01 8.674677e-02 - 1.379000e+01 -6.376060e-01 -1.904633e+01 8.657948e-02 - 1.380000e+01 1.189154e-01 -1.906014e+01 8.651187e-02 - 1.381000e+01 8.799825e-01 -1.907395e+01 8.656795e-02 - 1.382000e+01 1.631013e+00 -1.908777e+01 8.672833e-02 - 1.383000e+01 2.356368e+00 -1.910158e+01 8.693729e-02 - 1.384000e+01 3.039881e+00 -1.911539e+01 8.712256e-02 - 1.385000e+01 3.665462e+00 -1.912920e+01 8.722057e-02 - 1.386000e+01 4.217727e+00 -1.914301e+01 8.719805e-02 - 1.387000e+01 4.682640e+00 -1.915682e+01 8.706323e-02 - 1.388000e+01 5.048115e+00 -1.917064e+01 8.686301e-02 - 1.389000e+01 5.304554e+00 -1.918445e+01 8.666718e-02 - 1.390000e+01 5.445279e+00 -1.919826e+01 8.654443e-02 - 1.391000e+01 5.466843e+00 -1.921207e+01 8.653820e-02 - 1.392000e+01 5.369194e+00 -1.922588e+01 8.665117e-02 - 1.393000e+01 5.155694e+00 -1.923969e+01 8.684424e-02 - 1.394000e+01 4.832977e+00 -1.925351e+01 8.705052e-02 - 1.395000e+01 4.410678e+00 -1.926732e+01 8.719880e-02 - 1.396000e+01 3.901022e+00 -1.928113e+01 8.723803e-02 - 1.397000e+01 3.318331e+00 -1.929494e+01 8.715449e-02 - 1.398000e+01 2.678455e+00 -1.930875e+01 8.697640e-02 - 1.399000e+01 1.998167e+00 -1.932256e+01 8.676445e-02 - 1.400000e+01 1.294562e+00 -1.933638e+01 8.659131e-02 - 1.401000e+01 5.844846e-01 -1.935019e+01 8.651647e-02 - 1.402000e+01 -1.159802e-01 -1.936400e+01 8.656534e-02 - 1.403000e+01 -7.919358e-01 -1.937781e+01 8.672021e-02 - 1.404000e+01 -1.430003e+00 -1.939162e+01 8.692668e-02 - 1.405000e+01 -2.018545e+00 -1.940543e+01 8.711310e-02 - 1.406000e+01 -2.547779e+00 -1.941925e+01 8.721543e-02 - 1.407000e+01 -3.009802e+00 -1.943306e+01 8.719908e-02 - 1.408000e+01 -3.398520e+00 -1.944687e+01 8.707031e-02 - 1.409000e+01 -3.709518e+00 -1.946068e+01 8.687410e-02 - 1.410000e+01 -3.939893e+00 -1.947449e+01 8.667883e-02 - 1.411000e+01 -4.088053e+00 -1.948830e+01 8.655280e-02 - 1.412000e+01 -4.153539e+00 -1.950212e+01 8.654022e-02 - 1.413000e+01 -4.136856e+00 -1.951593e+01 8.664544e-02 - 1.414000e+01 -4.039348e+00 -1.952974e+01 8.683144e-02 - 1.415000e+01 -3.863122e+00 -1.954355e+01 8.703311e-02 - 1.416000e+01 -3.611024e+00 -1.955736e+01 8.718022e-02 - 1.417000e+01 -3.286660e+00 -1.957117e+01 8.722168e-02 - 1.418000e+01 -2.894460e+00 -1.958499e+01 8.714281e-02 - 1.419000e+01 -2.439767e+00 -1.959880e+01 8.697027e-02 - 1.420000e+01 -1.928925e+00 -1.961261e+01 8.676321e-02 - 1.421000e+01 -1.369369e+00 -1.962642e+01 8.659313e-02 - 1.422000e+01 -7.696641e-01 -1.964023e+01 8.651919e-02 - 1.423000e+01 -1.395087e-01 -1.965405e+01 8.656721e-02 - 1.424000e+01 5.103362e-01 -1.966786e+01 8.672041e-02 - 1.425000e+01 1.168189e+00 -1.968167e+01 8.692539e-02 - 1.426000e+01 1.821671e+00 -1.969548e+01 8.711108e-02 - 1.427000e+01 2.457998e+00 -1.970929e+01 8.721334e-02 - 1.428000e+01 3.064343e+00 -1.972310e+01 8.719685e-02 - 1.429000e+01 3.628244e+00 -1.973692e+01 8.706682e-02 - 1.430000e+01 4.138038e+00 -1.975073e+01 8.686730e-02 - 1.431000e+01 4.583296e+00 -1.976454e+01 8.666640e-02 - 1.432000e+01 4.955240e+00 -1.977835e+01 8.653308e-02 - 1.433000e+01 5.247099e+00 -1.979216e+01 8.651313e-02 - 1.434000e+01 5.454396e+00 -1.980597e+01 8.661301e-02 - 1.435000e+01 5.575138e+00 -1.981979e+01 8.679766e-02 - 1.436000e+01 5.609900e+00 -1.983360e+01 8.700313e-02 - 1.437000e+01 5.561781e+00 -1.984741e+01 8.715912e-02 - 1.438000e+01 5.436253e+00 -1.986122e+01 8.721313e-02 - 1.439000e+01 5.240895e+00 -1.987503e+01 8.714810e-02 - 1.440000e+01 4.985026e+00 -1.988884e+01 8.698788e-02 - 1.441000e+01 4.679273e+00 -1.990266e+01 8.678910e-02 - 1.442000e+01 4.335075e+00 -1.991647e+01 8.662183e-02 - 1.443000e+01 3.964178e+00 -1.993028e+01 8.654520e-02 - 1.444000e+01 3.578123e+00 -1.994409e+01 8.658651e-02 - 1.445000e+01 3.187783e+00 -1.995790e+01 8.673150e-02 - 1.446000e+01 2.802954e+00 -1.997171e+01 8.692952e-02 - 1.447000e+01 2.432023e+00 -1.998553e+01 8.711160e-02 - 1.448000e+01 2.081747e+00 -1.999934e+01 8.721460e-02 - 1.449000e+01 1.757120e+00 -2.001315e+01 8.720277e-02 - 1.450000e+01 1.461361e+00 -2.002696e+01 8.707979e-02 - 1.451000e+01 1.195997e+00 -2.004077e+01 8.688753e-02 - 1.452000e+01 9.610290e-01 -2.005458e+01 8.669200e-02 - 1.453000e+01 7.551803e-01 -2.006840e+01 8.656071e-02 - 1.454000e+01 5.761841e-01 -2.008221e+01 8.653907e-02 - 1.455000e+01 4.211026e-01 -2.009602e+01 8.663426e-02 - 1.456000e+01 2.866464e-01 -2.010983e+01 8.681266e-02 - 1.457000e+01 1.694743e-01 -2.012364e+01 8.701187e-02 - 1.458000e+01 6.645185e-02 -2.013745e+01 8.716272e-02 - 1.459000e+01 -2.514443e-02 -2.015127e+01 8.721308e-02 - 1.460000e+01 -1.074894e-01 -2.016508e+01 8.714545e-02 - 1.461000e+01 -1.821416e-01 -2.017889e+01 8.698281e-02 - 1.462000e+01 -2.500448e-01 -2.019270e+01 8.678086e-02 - 1.463000e+01 -3.115920e-01 -2.020651e+01 8.660920e-02 - 1.464000e+01 -3.667410e-01 -2.022032e+01 8.652729e-02 - 1.465000e+01 -4.151668e-01 -2.023414e+01 8.656352e-02 - 1.466000e+01 -4.564340e-01 -2.024795e+01 8.670512e-02 - 1.467000e+01 -4.901719e-01 -2.026176e+01 8.690285e-02 - 1.468000e+01 -5.162349e-01 -2.027557e+01 8.708850e-02 - 1.469000e+01 -5.348347e-01 -2.028938e+01 8.719871e-02 - 1.470000e+01 -5.466305e-01 -2.030319e+01 8.719651e-02 - 1.471000e+01 -5.527720e-01 -2.031701e+01 8.708366e-02 - 1.472000e+01 -5.548896e-01 -2.033082e+01 8.689996e-02 - 1.473000e+01 -5.550346e-01 -2.034463e+01 8.670973e-02 - 1.474000e+01 -5.555731e-01 -2.035844e+01 8.657974e-02 - 1.475000e+01 -5.590439e-01 -2.037225e+01 8.655587e-02 - 1.476000e+01 -5.679911e-01 -2.038607e+01 8.664678e-02 - 1.477000e+01 -5.847853e-01 -2.039988e+01 8.682083e-02 - 1.478000e+01 -6.114465e-01 -2.041369e+01 8.701749e-02 - 1.479000e+01 -6.494827e-01 -2.042750e+01 8.716862e-02 - 1.480000e+01 -6.997548e-01 -2.044131e+01 8.722207e-02 - 1.481000e+01 -7.623785e-01 -2.045512e+01 8.715926e-02 - 1.482000e+01 -8.366678e-01 -2.046894e+01 8.700137e-02 - 1.483000e+01 -9.211228e-01 -2.048275e+01 8.680223e-02 - 1.484000e+01 -1.013463e+00 -2.049656e+01 8.663007e-02 - 1.485000e+01 -1.110697e+00 -2.051037e+01 8.654393e-02 - 1.486000e+01 -1.209235e+00 -2.052418e+01 8.657293e-02 - 1.487000e+01 -1.305011e+00 -2.053799e+01 8.670590e-02 - 1.488000e+01 -1.393638e+00 -2.055181e+01 8.689546e-02 - 1.489000e+01 -1.470557e+00 -2.056562e+01 8.707496e-02 - 1.490000e+01 -1.531186e+00 -2.057943e+01 8.718178e-02 - 1.491000e+01 -1.571064e+00 -2.059324e+01 8.717868e-02 - 1.492000e+01 -1.585969e+00 -2.060705e+01 8.706638e-02 - 1.493000e+01 -1.572029e+00 -2.062086e+01 8.688319e-02 - 1.494000e+01 -1.525798e+00 -2.063468e+01 8.669216e-02 - 1.495000e+01 -1.444329e+00 -2.064849e+01 8.655945e-02 - 1.496000e+01 -1.325218e+00 -2.066230e+01 8.653123e-02 - 1.497000e+01 -1.166644e+00 -2.067611e+01 8.661736e-02 - 1.498000e+01 -9.674051e-01 -2.068992e+01 8.678785e-02 - 1.499000e+01 -7.269469e-01 -2.070373e+01 8.698363e-02 - 1.500000e+01 -4.454000e-01 -2.071755e+01 8.713743e-02 - 1.501000e+01 -1.236221e-01 -2.073136e+01 8.719695e-02 - 1.502000e+01 2.367538e-01 -2.074517e+01 8.714255e-02 - 1.503000e+01 6.332650e-01 -2.075898e+01 8.699371e-02 - 1.504000e+01 1.062564e+00 -2.077279e+01 8.680245e-02 - 1.505000e+01 1.520368e+00 -2.078660e+01 8.663558e-02 - 1.506000e+01 2.001423e+00 -2.080042e+01 8.655162e-02 - 1.507000e+01 2.499483e+00 -2.081423e+01 8.658014e-02 - 1.508000e+01 3.007331e+00 -2.082804e+01 8.671129e-02 - 1.509000e+01 3.516827e+00 -2.084185e+01 8.689934e-02 - 1.510000e+01 4.019008e+00 -2.085566e+01 8.707903e-02 - 1.511000e+01 4.504236e+00 -2.086947e+01 8.718840e-02 - 1.512000e+01 4.962400e+00 -2.088329e+01 8.719001e-02 - 1.513000e+01 5.383163e+00 -2.089710e+01 8.708351e-02 - 1.514000e+01 5.756255e+00 -2.091091e+01 8.690578e-02 - 1.515000e+01 6.071799e+00 -2.092472e+01 8.671843e-02 - 1.516000e+01 6.320652e+00 -2.093853e+01 8.658676e-02 - 1.517000e+01 6.494763e+00 -2.095234e+01 8.655692e-02 - 1.518000e+01 6.587501e+00 -2.096616e+01 8.663953e-02 - 1.519000e+01 6.593970e+00 -2.097997e+01 8.680590e-02 - 1.520000e+01 6.511261e+00 -2.099378e+01 8.699829e-02 - 1.521000e+01 6.338644e+00 -2.100759e+01 8.715026e-02 - 1.522000e+01 6.077686e+00 -2.102140e+01 8.720959e-02 - 1.523000e+01 5.732276e+00 -2.103521e+01 8.715597e-02 - 1.524000e+01 5.308559e+00 -2.104903e+01 8.700773e-02 - 1.525000e+01 4.814774e+00 -2.106284e+01 8.681567e-02 - 1.526000e+01 4.261014e+00 -2.107665e+01 8.664582e-02 - 1.527000e+01 3.658895e+00 -2.109046e+01 8.655666e-02 - 1.528000e+01 3.021173e+00 -2.110427e+01 8.657858e-02 - 1.529000e+01 2.361305e+00 -2.111808e+01 8.670310e-02 - 1.530000e+01 1.692992e+00 -2.113190e+01 8.688598e-02 - 1.531000e+01 1.029719e+00 -2.114571e+01 8.706302e-02 - 1.532000e+01 3.843055e-01 -2.115952e+01 8.717253e-02 - 1.533000e+01 -2.314983e-01 -2.117333e+01 8.717646e-02 - 1.534000e+01 -8.073607e-01 -2.118714e+01 8.707316e-02 - 1.535000e+01 -1.334647e+00 -2.120096e+01 8.689792e-02 - 1.536000e+01 -1.806617e+00 -2.121477e+01 8.671103e-02 - 1.537000e+01 -2.218534e+00 -2.122858e+01 8.657716e-02 - 1.538000e+01 -2.567686e+00 -2.124239e+01 8.654282e-02 - 1.539000e+01 -2.853326e+00 -2.125620e+01 8.661987e-02 - 1.540000e+01 -3.076533e+00 -2.127001e+01 8.678136e-02 - 1.541000e+01 -3.240015e+00 -2.128383e+01 8.697121e-02 - 1.542000e+01 -3.347861e+00 -2.129764e+01 8.712405e-02 - 1.543000e+01 -3.405258e+00 -2.131145e+01 8.718786e-02 - 1.544000e+01 -3.418200e+00 -2.132526e+01 8.714159e-02 - 1.545000e+01 -3.393192e+00 -2.133907e+01 8.700214e-02 - 1.546000e+01 -3.336974e+00 -2.135288e+01 8.681863e-02 - 1.547000e+01 -3.256275e+00 -2.136670e+01 8.665566e-02 - 1.548000e+01 -3.157593e+00 -2.138051e+01 8.657086e-02 - 1.549000e+01 -3.047040e+00 -2.139432e+01 8.659456e-02 - 1.550000e+01 -2.930208e+00 -2.140813e+01 8.671892e-02 - 1.551000e+01 -2.812102e+00 -2.142194e+01 8.690064e-02 - 1.552000e+01 -2.697099e+00 -2.143575e+01 8.707639e-02 - 1.553000e+01 -2.588949e+00 -2.144957e+01 8.718490e-02 - 1.554000e+01 -2.490803e+00 -2.146338e+01 8.718799e-02 - 1.555000e+01 -2.405253e+00 -2.147719e+01 8.708347e-02 - 1.556000e+01 -2.334388e+00 -2.149100e+01 8.690596e-02 - 1.557000e+01 -2.279846e+00 -2.150481e+01 8.671539e-02 - 1.558000e+01 -2.242860e+00 -2.151862e+01 8.657662e-02 - 1.559000e+01 -2.224294e+00 -2.153244e+01 8.653701e-02 - 1.560000e+01 -2.224665e+00 -2.154625e+01 8.660975e-02 - 1.561000e+01 -2.244148e+00 -2.156006e+01 8.676924e-02 - 1.562000e+01 -2.282567e+00 -2.157387e+01 8.696030e-02 - 1.563000e+01 -2.339377e+00 -2.158768e+01 8.711762e-02 - 1.564000e+01 -2.413641e+00 -2.160149e+01 8.718828e-02 - 1.565000e+01 -2.504009e+00 -2.161531e+01 8.714959e-02 - 1.566000e+01 -2.608694e+00 -2.162912e+01 8.701652e-02 - 1.567000e+01 -2.725478e+00 -2.164293e+01 8.683646e-02 - 1.568000e+01 -2.851718e+00 -2.165674e+01 8.667307e-02 - 1.569000e+01 -2.984382e+00 -2.167055e+01 8.658420e-02 - 1.570000e+01 -3.120107e+00 -2.168436e+01 8.660152e-02 - 1.571000e+01 -3.255281e+00 -2.169818e+01 8.671925e-02 - 1.572000e+01 -3.386141e+00 -2.171199e+01 8.689629e-02 - 1.573000e+01 -3.508893e+00 -2.172580e+01 8.707088e-02 - 1.574000e+01 -3.619842e+00 -2.173961e+01 8.718225e-02 - 1.575000e+01 -3.715524e+00 -2.175342e+01 8.719152e-02 - 1.576000e+01 -3.792840e+00 -2.176723e+01 8.709476e-02 - 1.577000e+01 -3.849176e+00 -2.178105e+01 8.692438e-02 - 1.578000e+01 -3.882504e+00 -2.179486e+01 8.673815e-02 - 1.579000e+01 -3.891464e+00 -2.180867e+01 8.659954e-02 - 1.580000e+01 -3.875416e+00 -2.182248e+01 8.655563e-02 - 1.581000e+01 -3.834455e+00 -2.183629e+01 8.662049e-02 - 1.582000e+01 -3.769399e+00 -2.185010e+01 8.677023e-02 - 1.583000e+01 -3.681745e+00 -2.186392e+01 8.695160e-02 - 1.584000e+01 -3.573588e+00 -2.187773e+01 8.710090e-02 - 1.585000e+01 -3.447530e+00 -2.189154e+01 8.716604e-02 - 1.586000e+01 -3.306553e+00 -2.190535e+01 8.712429e-02 - 1.587000e+01 -3.153896e+00 -2.191916e+01 8.698994e-02 - 1.588000e+01 -2.992916e+00 -2.193298e+01 8.680943e-02 - 1.589000e+01 -2.826957e+00 -2.194679e+01 8.664565e-02 - 1.590000e+01 -2.659230e+00 -2.196060e+01 8.655622e-02 - 1.591000e+01 -2.492706e+00 -2.197441e+01 8.657323e-02 - 1.592000e+01 -2.330024e+00 -2.198822e+01 8.669178e-02 - 1.593000e+01 -2.173434e+00 -2.200203e+01 8.687175e-02 - 1.594000e+01 -2.024744e+00 -2.201585e+01 8.705200e-02 - 1.595000e+01 -1.885313e+00 -2.202966e+01 8.717166e-02 - 1.596000e+01 -1.756044e+00 -2.204347e+01 8.719096e-02 - 1.597000e+01 -1.637404e+00 -2.205728e+01 8.710449e-02 - 1.598000e+01 -1.529458e+00 -2.207109e+01 8.694291e-02 - 1.599000e+01 -1.431911e+00 -2.208490e+01 8.676253e-02 - 1.600000e+01 -1.344145e+00 -2.209872e+01 8.662605e-02 - 1.601000e+01 -1.265271e+00 -2.211253e+01 8.658077e-02 - 1.602000e+01 -1.194158e+00 -2.212634e+01 8.664190e-02 - 1.603000e+01 -1.129475e+00 -2.214015e+01 8.678723e-02 - 1.604000e+01 -1.069708e+00 -2.215396e+01 8.696517e-02 - 1.605000e+01 -1.013175e+00 -2.216777e+01 8.711310e-02 - 1.606000e+01 -9.580365e-01 -2.218159e+01 8.717913e-02 - 1.607000e+01 -9.022976e-01 -2.219540e+01 8.713980e-02 - 1.608000e+01 -8.438092e-01 -2.220921e+01 8.700803e-02 - 1.609000e+01 -7.802728e-01 -2.222302e+01 8.682870e-02 - 1.610000e+01 -7.092517e-01 -2.223683e+01 8.666351e-02 - 1.611000e+01 -6.281935e-01 -2.225064e+01 8.656967e-02 - 1.612000e+01 -5.344664e-01 -2.226446e+01 8.657978e-02 - 1.613000e+01 -4.254127e-01 -2.227827e+01 8.669028e-02 - 1.614000e+01 -2.984207e-01 -2.229208e+01 8.686268e-02 - 1.615000e+01 -1.510139e-01 -2.230589e+01 8.703726e-02 - 1.616000e+01 1.904334e-02 -2.231970e+01 8.715393e-02 - 1.617000e+01 2.136275e-01 -2.233351e+01 8.717286e-02 - 1.618000e+01 4.341297e-01 -2.234733e+01 8.708780e-02 - 1.619000e+01 6.813283e-01 -2.236114e+01 8.692818e-02 - 1.620000e+01 9.552663e-01 -2.237495e+01 8.674911e-02 - 1.621000e+01 1.255142e+00 -2.238876e+01 8.661257e-02 - 1.622000e+01 1.579220e+00 -2.240257e+01 8.656588e-02 - 1.623000e+01 1.924770e+00 -2.241638e+01 8.662499e-02 - 1.624000e+01 2.288039e+00 -2.243020e+01 8.676888e-02 - 1.625000e+01 2.664263e+00 -2.244401e+01 8.694708e-02 - 1.626000e+01 3.047722e+00 -2.245782e+01 8.709763e-02 - 1.627000e+01 3.431836e+00 -2.247163e+01 8.716854e-02 - 1.628000e+01 3.809304e+00 -2.248544e+01 8.713550e-02 - 1.629000e+01 4.172289e+00 -2.249925e+01 8.701008e-02 - 1.630000e+01 4.512626e+00 -2.251307e+01 8.683574e-02 - 1.631000e+01 4.822073e+00 -2.252688e+01 8.667314e-02 - 1.632000e+01 5.092568e+00 -2.254069e+01 8.657922e-02 - 1.633000e+01 5.316504e+00 -2.255450e+01 8.658719e-02 - 1.634000e+01 5.487003e+00 -2.256831e+01 8.669477e-02 - 1.635000e+01 5.598176e+00 -2.258212e+01 8.686500e-02 - 1.636000e+01 5.645362e+00 -2.259594e+01 8.703936e-02 - 1.637000e+01 5.625337e+00 -2.260975e+01 8.715825e-02 - 1.638000e+01 5.536483e+00 -2.262356e+01 8.718141e-02 - 1.639000e+01 5.378903e+00 -2.263737e+01 8.710144e-02 - 1.640000e+01 5.154495e+00 -2.265118e+01 8.694617e-02 - 1.641000e+01 4.866954e+00 -2.266500e+01 8.676927e-02 - 1.642000e+01 4.521731e+00 -2.267881e+01 8.663185e-02 - 1.643000e+01 4.125925e+00 -2.269262e+01 8.658129e-02 - 1.644000e+01 3.688121e+00 -2.270643e+01 8.663452e-02 - 1.645000e+01 3.218184e+00 -2.272024e+01 8.677209e-02 - 1.646000e+01 2.727006e+00 -2.273405e+01 8.694519e-02 - 1.647000e+01 2.226214e+00 -2.274787e+01 8.709303e-02 - 1.648000e+01 1.727859e+00 -2.276168e+01 8.716397e-02 - 1.649000e+01 1.244083e+00 -2.277549e+01 8.713314e-02 - 1.650000e+01 7.867764e-01 -2.278930e+01 8.701083e-02 - 1.651000e+01 3.672473e-01 -2.280311e+01 8.683899e-02 - 1.652000e+01 -4.106897e-03 -2.281692e+01 8.667696e-02 - 1.653000e+01 -3.180983e-01 -2.283074e+01 8.658105e-02 - 1.654000e+01 -5.670198e-01 -2.284455e+01 8.658475e-02 - 1.655000e+01 -7.448772e-01 -2.285836e+01 8.668684e-02 - 1.656000e+01 -8.475763e-01 -2.287217e+01 8.685183e-02 - 1.657000e+01 -8.730600e-01 -2.288598e+01 8.702265e-02 - 1.658000e+01 -8.213907e-01 -2.289979e+01 8.714060e-02 - 1.659000e+01 -6.947757e-01 -2.291361e+01 8.716553e-02 - 1.660000e+01 -4.975349e-01 -2.292742e+01 8.708940e-02 - 1.661000e+01 -2.360089e-01 -2.294123e+01 8.693890e-02 - 1.662000e+01 8.158785e-02 -2.295504e+01 8.676641e-02 - 1.663000e+01 4.453688e-01 -2.296885e+01 8.663207e-02 - 1.664000e+01 8.440257e-01 -2.298266e+01 8.658288e-02 - 1.665000e+01 1.265123e+00 -2.299648e+01 8.663604e-02 - 1.666000e+01 1.695427e+00 -2.301029e+01 8.677288e-02 - 1.667000e+01 2.121268e+00 -2.302410e+01 8.694556e-02 - 1.668000e+01 2.528916e+00 -2.303791e+01 8.709395e-02 - 1.669000e+01 2.904967e+00 -2.305172e+01 8.716660e-02 - 1.670000e+01 3.236733e+00 -2.306553e+01 8.713823e-02 - 1.671000e+01 3.512608e+00 -2.307935e+01 8.701830e-02 - 1.672000e+01 3.722423e+00 -2.309316e+01 8.684779e-02 - 1.673000e+01 3.857756e+00 -2.310697e+01 8.668536e-02 - 1.674000e+01 3.912201e+00 -2.312078e+01 8.658717e-02 - 1.675000e+01 3.881580e+00 -2.313459e+01 8.658725e-02 - 1.676000e+01 3.764095e+00 -2.314840e+01 8.668542e-02 - 1.677000e+01 3.560410e+00 -2.316222e+01 8.684746e-02 - 1.678000e+01 3.273652e+00 -2.317603e+01 8.701727e-02 - 1.679000e+01 2.909355e+00 -2.318984e+01 8.713655e-02 - 1.680000e+01 2.475305e+00 -2.320365e+01 8.716485e-02 - 1.681000e+01 1.981337e+00 -2.321746e+01 8.709319e-02 - 1.682000e+01 1.439047e+00 -2.323127e+01 8.694702e-02 - 1.683000e+01 8.614615e-01 -2.324509e+01 8.677753e-02 - 1.684000e+01 2.626474e-01 -2.325890e+01 8.664413e-02 - 1.685000e+01 -3.427034e-01 -2.327271e+01 8.659376e-02 - 1.686000e+01 -9.397152e-01 -2.328652e+01 8.664432e-02 - 1.687000e+01 -1.513775e+00 -2.330033e+01 8.677822e-02 - 1.688000e+01 -2.050971e+00 -2.331414e+01 8.694875e-02 - 1.689000e+01 -2.538503e+00 -2.332796e+01 8.709653e-02 - 1.690000e+01 -2.965063e+00 -2.334177e+01 8.717022e-02 - 1.691000e+01 -3.321160e+00 -2.335558e+01 8.714398e-02 - 1.692000e+01 -3.599382e+00 -2.336939e+01 8.702621e-02 - 1.693000e+01 -3.794593e+00 -2.338320e+01 8.685672e-02 - 1.694000e+01 -3.904057e+00 -2.339702e+01 8.669324e-02 - 1.695000e+01 -3.927475e+00 -2.341083e+01 8.659162e-02 - 1.696000e+01 -3.866950e+00 -2.342464e+01 8.658630e-02 - 1.697000e+01 -3.726880e+00 -2.343845e+01 8.667811e-02 - 1.698000e+01 -3.513775e+00 -2.345226e+01 8.683405e-02 - 1.699000e+01 -3.236015e+00 -2.346607e+01 8.699912e-02 - 1.700000e+01 -2.903556e+00 -2.347989e+01 8.711559e-02 - 1.701000e+01 -2.527597e+00 -2.349370e+01 8.714296e-02 - 1.702000e+01 -2.120218e+00 -2.350751e+01 8.707167e-02 - 1.703000e+01 -1.694000e+00 -2.352132e+01 8.692631e-02 - 1.704000e+01 -1.261644e+00 -2.353513e+01 8.675731e-02 - 1.705000e+01 -8.356002e-01 -2.354894e+01 8.662374e-02 - 1.706000e+01 -4.277182e-01 -2.356276e+01 8.657281e-02 - 1.707000e+01 -4.892143e-02 -2.357657e+01 8.662316e-02 - 1.708000e+01 2.910743e-01 -2.359038e+01 8.675822e-02 - 1.709000e+01 5.840006e-01 -2.360419e+01 8.693214e-02 - 1.710000e+01 8.232263e-01 -2.361800e+01 8.708590e-02 - 1.711000e+01 1.003896e+00 -2.363181e+01 8.716778e-02 - 1.712000e+01 1.123014e+00 -2.364563e+01 8.715096e-02 - 1.713000e+01 1.179478e+00 -2.365944e+01 8.704241e-02 - 1.714000e+01 1.174056e+00 -2.367325e+01 8.688049e-02 - 1.715000e+01 1.109323e+00 -2.368706e+01 8.672189e-02 - 1.716000e+01 9.895443e-01 -2.370087e+01 8.662208e-02 - 1.717000e+01 8.205209e-01 -2.371468e+01 8.661594e-02 - 1.718000e+01 6.094028e-01 -2.372850e+01 8.670535e-02 - 1.719000e+01 3.644659e-01 -2.374231e+01 8.685859e-02 - 1.720000e+01 9.486754e-02 -2.375612e+01 8.702171e-02 - 1.721000e+01 -1.896189e-01 -2.376993e+01 8.713742e-02 - 1.722000e+01 -4.788820e-01 -2.378374e+01 8.716496e-02 - 1.723000e+01 -7.627576e-01 -2.379755e+01 8.709387e-02 - 1.724000e+01 -1.031315e+00 -2.381137e+01 8.694759e-02 - 1.725000e+01 -1.275137e+00 -2.382518e+01 8.677555e-02 - 1.726000e+01 -1.485587e+00 -2.383899e+01 8.663639e-02 - 1.727000e+01 -1.655059e+00 -2.385280e+01 8.657763e-02 - 1.728000e+01 -1.777198e+00 -2.386661e+01 8.661901e-02 - 1.729000e+01 -1.847091e+00 -2.388042e+01 8.674544e-02 - 1.730000e+01 -1.861422e+00 -2.389424e+01 8.691249e-02 - 1.731000e+01 -1.818574e+00 -2.390805e+01 8.706206e-02 - 1.732000e+01 -1.718697e+00 -2.392186e+01 8.714263e-02 - 1.733000e+01 -1.563709e+00 -2.393567e+01 8.712675e-02 - 1.734000e+01 -1.357258e+00 -2.394948e+01 8.702031e-02 - 1.735000e+01 -1.104620e+00 -2.396329e+01 8.686045e-02 - 1.736000e+01 -8.125520e-01 -2.397711e+01 8.670292e-02 - 1.737000e+01 -4.890906e-01 -2.399092e+01 8.660293e-02 - 1.738000e+01 -1.433124e-01 -2.400473e+01 8.659576e-02 - 1.739000e+01 2.149441e-01 -2.401854e+01 8.668431e-02 - 1.740000e+01 5.753838e-01 -2.403235e+01 8.683806e-02 - 1.741000e+01 9.275768e-01 -2.404616e+01 8.700392e-02 - 1.742000e+01 1.261287e+00 -2.405998e+01 8.712489e-02 - 1.743000e+01 1.566793e+00 -2.407379e+01 8.715968e-02 - 1.744000e+01 1.835197e+00 -2.408760e+01 8.709670e-02 - 1.745000e+01 2.058695e+00 -2.410141e+01 8.695786e-02 - 1.746000e+01 2.230823e+00 -2.411522e+01 8.679122e-02 - 1.747000e+01 2.346639e+00 -2.412903e+01 8.665454e-02 - 1.748000e+01 2.402862e+00 -2.414285e+01 8.659530e-02 - 1.749000e+01 2.397953e+00 -2.415666e+01 8.663394e-02 - 1.750000e+01 2.332120e+00 -2.417047e+01 8.675670e-02 - 1.751000e+01 2.207283e+00 -2.418428e+01 8.692050e-02 - 1.752000e+01 2.026962e+00 -2.419809e+01 8.706826e-02 - 1.753000e+01 1.796122e+00 -2.421191e+01 8.714880e-02 - 1.754000e+01 1.520973e+00 -2.422572e+01 8.713429e-02 - 1.755000e+01 1.208728e+00 -2.423953e+01 8.702966e-02 - 1.756000e+01 8.673386e-01 -2.425334e+01 8.687089e-02 - 1.757000e+01 5.052165e-01 -2.426715e+01 8.671285e-02 - 1.758000e+01 1.309496e-01 -2.428096e+01 8.661037e-02 - 1.759000e+01 -2.469724e-01 -2.429478e+01 8.659908e-02 - 1.760000e+01 -6.204145e-01 -2.430859e+01 8.668283e-02 - 1.761000e+01 -9.818255e-01 -2.432240e+01 8.683227e-02 - 1.762000e+01 -1.324432e+00 -2.433621e+01 8.699534e-02 - 1.763000e+01 -1.642390e+00 -2.435002e+01 8.711552e-02 - 1.764000e+01 -1.930898e+00 -2.436383e+01 8.715136e-02 - 1.765000e+01 -2.186256e+00 -2.437765e+01 8.709049e-02 - 1.766000e+01 -2.405888e+00 -2.439146e+01 8.695380e-02 - 1.767000e+01 -2.588317e+00 -2.440527e+01 8.678836e-02 - 1.768000e+01 -2.733104e+00 -2.441908e+01 8.665140e-02 - 1.769000e+01 -2.840752e+00 -2.443289e+01 8.659050e-02 - 1.770000e+01 -2.912593e+00 -2.444670e+01 8.662688e-02 - 1.771000e+01 -2.950643e+00 -2.446052e+01 8.674783e-02 - 1.772000e+01 -2.957458e+00 -2.447433e+01 8.691132e-02 - 1.773000e+01 -2.935981e+00 -2.448814e+01 8.706087e-02 - 1.774000e+01 -2.889393e+00 -2.450195e+01 8.714520e-02 - 1.775000e+01 -2.820974e+00 -2.451576e+01 8.713574e-02 - 1.776000e+01 -2.733977e+00 -2.452957e+01 8.703622e-02 - 1.777000e+01 -2.631524e+00 -2.454339e+01 8.688139e-02 - 1.778000e+01 -2.516520e+00 -2.455720e+01 8.672516e-02 - 1.779000e+01 -2.391589e+00 -2.457101e+01 8.662212e-02 - 1.780000e+01 -2.259035e+00 -2.458482e+01 8.660840e-02 - 1.781000e+01 -2.120827e+00 -2.459863e+01 8.668891e-02 - 1.782000e+01 -1.978597e+00 -2.461244e+01 8.683560e-02 - 1.783000e+01 -1.833662e+00 -2.462626e+01 8.699740e-02 - 1.784000e+01 -1.687057e+00 -2.464007e+01 8.711823e-02 - 1.785000e+01 -1.539578e+00 -2.465388e+01 8.715627e-02 - 1.786000e+01 -1.391838e+00 -2.466769e+01 8.709820e-02 - 1.787000e+01 -1.244314e+00 -2.468150e+01 8.696366e-02 - 1.788000e+01 -1.097405e+00 -2.469531e+01 8.679860e-02 - 1.789000e+01 -9.514796e-01 -2.470913e+01 8.665973e-02 - 1.790000e+01 -8.069198e-01 -2.472294e+01 8.659487e-02 - 1.791000e+01 -6.641559e-01 -2.473675e+01 8.662618e-02 - 1.792000e+01 -5.236915e-01 -2.475056e+01 8.674239e-02 - 1.793000e+01 -3.861179e-01 -2.476437e+01 8.690283e-02 - 1.794000e+01 -2.521187e-01 -2.477818e+01 8.705183e-02 - 1.795000e+01 -1.224641e-01 -2.479200e+01 8.713817e-02 - 1.796000e+01 2.002381e-03 -2.480581e+01 8.713247e-02 - 1.797000e+01 1.203851e-01 -2.481962e+01 8.703715e-02 - 1.798000e+01 2.317610e-01 -2.483343e+01 8.688545e-02 - 1.799000e+01 3.352080e-01 -2.484724e+01 8.673017e-02 - 1.800000e+01 4.298322e-01 -2.486105e+01 8.662547e-02 - 1.801000e+01 5.147948e-01 -2.487487e+01 8.660800e-02 - 1.802000e+01 5.893341e-01 -2.488868e+01 8.668387e-02 - 1.803000e+01 6.527827e-01 -2.490249e+01 8.682659e-02 - 1.804000e+01 7.045791e-01 -2.491630e+01 8.698645e-02 - 1.805000e+01 7.442724e-01 -2.493011e+01 8.710806e-02 - 1.806000e+01 7.715211e-01 -2.494393e+01 8.714944e-02 - 1.807000e+01 7.860873e-01 -2.495774e+01 8.709627e-02 - 1.808000e+01 7.878271e-01 -2.497155e+01 8.696669e-02 - 1.809000e+01 7.766795e-01 -2.498536e+01 8.680515e-02 - 1.810000e+01 7.526563e-01 -2.499917e+01 8.666724e-02 - 1.811000e+01 7.158358e-01 -2.501298e+01 8.660047e-02 - 1.812000e+01 6.663611e-01 -2.502680e+01 8.662762e-02 - 1.813000e+01 6.044479e-01 -2.504061e+01 8.673865e-02 - 1.814000e+01 5.303998e-01 -2.505442e+01 8.689440e-02 - 1.815000e+01 4.446352e-01 -2.506823e+01 8.704050e-02 - 1.816000e+01 3.477236e-01 -2.508204e+01 8.712634e-02 - 1.817000e+01 2.404307e-01 -2.509585e+01 8.712243e-02 - 1.818000e+01 1.237700e-01 -2.510967e+01 8.703037e-02 - 1.819000e+01 -9.416308e-04 -2.512348e+01 8.688225e-02 - 1.820000e+01 -1.320299e-01 -2.513729e+01 8.672973e-02 - 1.821000e+01 -2.674146e-01 -2.515110e+01 8.662628e-02 - 1.822000e+01 -4.045726e-01 -2.516491e+01 8.660846e-02 - 1.823000e+01 -5.405171e-01 -2.517872e+01 8.668296e-02 - 1.824000e+01 -6.717992e-01 -2.519254e+01 8.682420e-02 - 1.825000e+01 -7.945361e-01 -2.520635e+01 8.698340e-02 - 1.826000e+01 -9.044691e-01 -2.522016e+01 8.710574e-02 - 1.827000e+01 -9.970535e-01 -2.523397e+01 8.714922e-02 - 1.828000e+01 -1.067581e+00 -2.524778e+01 8.709899e-02 - 1.829000e+01 -1.111334e+00 -2.526159e+01 8.697229e-02 - 1.830000e+01 -1.123760e+00 -2.527541e+01 8.681263e-02 - 1.831000e+01 -1.100680e+00 -2.528922e+01 8.667502e-02 - 1.832000e+01 -1.038493e+00 -2.530303e+01 8.660692e-02 - 1.833000e+01 -9.343971e-01 -2.531684e+01 8.663167e-02 - 1.834000e+01 -7.865948e-01 -2.533065e+01 8.674018e-02 - 1.835000e+01 -5.944846e-01 -2.534446e+01 8.689429e-02 - 1.836000e+01 -3.588183e-01 -2.535828e+01 8.704028e-02 - 1.837000e+01 -8.181862e-02 -2.537209e+01 8.712763e-02 - 1.838000e+01 2.327552e-01 -2.538590e+01 8.712632e-02 - 1.839000e+01 5.796003e-01 -2.539971e+01 8.703698e-02 - 1.840000e+01 9.519272e-01 -2.541352e+01 8.689062e-02 - 1.841000e+01 1.341585e+00 -2.542733e+01 8.673808e-02 - 1.842000e+01 1.739249e+00 -2.544115e+01 8.663261e-02 - 1.843000e+01 2.134674e+00 -2.545496e+01 8.661124e-02 - 1.844000e+01 2.517002e+00 -2.546877e+01 8.668172e-02 - 1.845000e+01 2.875107e+00 -2.548258e+01 8.681972e-02 - 1.846000e+01 3.197976e+00 -2.549639e+01 8.697754e-02 - 1.847000e+01 3.475105e+00 -2.551020e+01 8.710080e-02 - 1.848000e+01 3.696893e+00 -2.552402e+01 8.714724e-02 - 1.849000e+01 3.855011e+00 -2.553783e+01 8.710102e-02 - 1.850000e+01 3.942748e+00 -2.555164e+01 8.697805e-02 - 1.851000e+01 3.955291e+00 -2.556545e+01 8.682055e-02 - 1.852000e+01 3.889955e+00 -2.557926e+01 8.668268e-02 - 1.853000e+01 3.746327e+00 -2.559307e+01 8.661186e-02 - 1.854000e+01 3.526329e+00 -2.560689e+01 8.663212e-02 - 1.855000e+01 3.234200e+00 -2.562070e+01 8.673571e-02 - 1.856000e+01 2.876383e+00 -2.563451e+01 8.688589e-02 - 1.857000e+01 2.461332e+00 -2.564832e+01 8.703003e-02 - 1.858000e+01 1.999250e+00 -2.566213e+01 8.711799e-02 - 1.859000e+01 1.501751e+00 -2.567595e+01 8.711936e-02 - 1.860000e+01 9.814823e-01 -2.568976e+01 8.703370e-02 - 1.861000e+01 4.517027e-01 -2.570357e+01 8.689062e-02 - 1.862000e+01 -7.414835e-02 -2.571738e+01 8.673974e-02 - 1.863000e+01 -5.828892e-01 -2.573119e+01 8.663363e-02 - 1.864000e+01 -1.062014e+00 -2.574500e+01 8.660942e-02 - 1.865000e+01 -1.500081e+00 -2.575882e+01 8.667576e-02 - 1.866000e+01 -1.887051e+00 -2.577263e+01 8.680969e-02 - 1.867000e+01 -2.214570e+00 -2.578644e+01 8.696490e-02 - 1.868000e+01 -2.476187e+00 -2.580025e+01 8.708798e-02 - 1.869000e+01 -2.667493e+00 -2.581406e+01 8.713694e-02 - 1.870000e+01 -2.786196e+00 -2.582787e+01 8.709541e-02 - 1.871000e+01 -2.832105e+00 -2.584169e+01 8.697819e-02 - 1.872000e+01 -2.807064e+00 -2.585550e+01 8.682608e-02 - 1.873000e+01 -2.714802e+00 -2.586931e+01 8.669201e-02 - 1.874000e+01 -2.560741e+00 -2.588312e+01 8.662265e-02 - 1.875000e+01 -2.351752e+00 -2.589693e+01 8.664204e-02 - 1.876000e+01 -2.095870e+00 -2.591074e+01 8.674305e-02 - 1.877000e+01 -1.802001e+00 -2.592456e+01 8.689001e-02 - 1.878000e+01 -1.479602e+00 -2.593837e+01 8.703136e-02 - 1.879000e+01 -1.138366e+00 -2.595218e+01 8.711776e-02 - 1.880000e+01 -7.879214e-01 -2.596599e+01 8.711906e-02 - 1.881000e+01 -4.375466e-01 -2.597980e+01 8.703452e-02 - 1.882000e+01 -9.591223e-02 -2.599361e+01 8.689316e-02 - 1.883000e+01 2.291400e-01 -2.600743e+01 8.674382e-02 - 1.884000e+01 5.307793e-01 -2.602124e+01 8.663848e-02 - 1.885000e+01 8.033258e-01 -2.603505e+01 8.661408e-02 - 1.886000e+01 1.042344e+00 -2.604886e+01 8.667944e-02 - 1.887000e+01 1.244694e+00 -2.606267e+01 8.681211e-02 - 1.888000e+01 1.408534e+00 -2.607648e+01 8.696633e-02 - 1.889000e+01 1.533284e+00 -2.609030e+01 8.708914e-02 - 1.890000e+01 1.619555e+00 -2.610411e+01 8.713861e-02 - 1.891000e+01 1.669032e+00 -2.611792e+01 8.709817e-02 - 1.892000e+01 1.684341e+00 -2.613173e+01 8.698215e-02 - 1.893000e+01 1.668888e+00 -2.614554e+01 8.683088e-02 - 1.894000e+01 1.626680e+00 -2.615935e+01 8.669698e-02 - 1.895000e+01 1.562134e+00 -2.617317e+01 8.662709e-02 - 1.896000e+01 1.479893e+00 -2.618698e+01 8.664556e-02 - 1.897000e+01 1.384630e+00 -2.620079e+01 8.674573e-02 - 1.898000e+01 1.280880e+00 -2.621460e+01 8.689237e-02 - 1.899000e+01 1.172869e+00 -2.622841e+01 8.703415e-02 - 1.900000e+01 1.064382e+00 -2.624222e+01 8.712155e-02 - 1.901000e+01 9.586432e-01 -2.625604e+01 8.712391e-02 - 1.902000e+01 8.582358e-01 -2.626985e+01 8.703982e-02 - 1.903000e+01 7.650479e-01 -2.628366e+01 8.689764e-02 - 1.904000e+01 6.802536e-01 -2.629747e+01 8.674590e-02 - 1.905000e+01 6.043264e-01 -2.631128e+01 8.663675e-02 - 1.906000e+01 5.370840e-01 -2.632509e+01 8.660775e-02 - 1.907000e+01 4.777607e-01 -2.633891e+01 8.666869e-02 - 1.908000e+01 4.251049e-01 -2.635272e+01 8.679810e-02 - 1.909000e+01 3.774942e-01 -2.636653e+01 8.695090e-02 - 1.910000e+01 3.330653e-01 -2.638034e+01 8.707426e-02 - 1.911000e+01 2.898492e-01 -2.639415e+01 8.712585e-02 - 1.912000e+01 2.459072e-01 -2.640797e+01 8.708827e-02 - 1.913000e+01 1.994612e-01 -2.642178e+01 8.697485e-02 - 1.914000e+01 1.490112e-01 -2.643559e+01 8.682517e-02 - 1.915000e+01 9.343576e-02 -2.644940e+01 8.669150e-02 - 1.916000e+01 3.207130e-02 -2.646321e+01 8.662080e-02 - 1.917000e+01 -3.523389e-02 -2.647702e+01 8.663819e-02 - 1.918000e+01 -1.080916e-01 -2.649084e+01 8.673807e-02 - 1.919000e+01 -1.855728e-01 -2.650465e+01 8.688609e-02 - 1.920000e+01 -2.662331e-01 -2.651846e+01 8.703131e-02 - 1.921000e+01 -3.481626e-01 -2.653227e+01 8.712394e-02 - 1.922000e+01 -4.290574e-01 -2.654608e+01 8.713244e-02 - 1.923000e+01 -5.063087e-01 -2.655989e+01 8.705411e-02 - 1.924000e+01 -5.771067e-01 -2.657371e+01 8.691603e-02 - 1.925000e+01 -6.385529e-01 -2.658752e+01 8.676580e-02 - 1.926000e+01 -6.877780e-01 -2.660133e+01 8.665529e-02 - 1.927000e+01 -7.220605e-01 -2.661514e+01 8.662258e-02 - 1.928000e+01 -7.389414e-01 -2.662895e+01 8.667855e-02 - 1.929000e+01 -7.363326e-01 -2.664276e+01 8.680308e-02 - 1.930000e+01 -7.126151e-01 -2.665658e+01 8.695223e-02 - 1.931000e+01 -6.667246e-01 -2.667039e+01 8.707374e-02 - 1.932000e+01 -5.982225e-01 -2.668420e+01 8.712516e-02 - 1.933000e+01 -5.073506e-01 -2.669801e+01 8.708834e-02 - 1.934000e+01 -3.950681e-01 -2.671182e+01 8.697554e-02 - 1.935000e+01 -2.630694e-01 -2.672563e+01 8.682530e-02 - 1.936000e+01 -1.137826e-01 -2.673945e+01 8.668935e-02 - 1.937000e+01 4.965341e-02 -2.675326e+01 8.661471e-02 - 1.938000e+01 2.234330e-01 -2.676707e+01 8.662727e-02 - 1.939000e+01 4.031503e-01 -2.678088e+01 8.672263e-02 - 1.940000e+01 5.838880e-01 -2.679469e+01 8.686764e-02 - 1.941000e+01 7.603286e-01 -2.680850e+01 8.701220e-02 - 1.942000e+01 9.268876e-01 -2.682232e+01 8.710673e-02 - 1.943000e+01 1.077867e+00 -2.683613e+01 8.711916e-02 - 1.944000e+01 1.207627e+00 -2.684994e+01 8.704579e-02 - 1.945000e+01 1.310772e+00 -2.686375e+01 8.691245e-02 - 1.946000e+01 1.382344e+00 -2.687756e+01 8.676570e-02 - 1.947000e+01 1.418029e+00 -2.689137e+01 8.665689e-02 - 1.948000e+01 1.414343e+00 -2.690519e+01 8.662421e-02 - 1.949000e+01 1.368829e+00 -2.691900e+01 8.667927e-02 - 1.950000e+01 1.280213e+00 -2.693281e+01 8.680296e-02 - 1.951000e+01 1.148547e+00 -2.694662e+01 8.695227e-02 - 1.952000e+01 9.753031e-01 -2.696043e+01 8.707545e-02 - 1.953000e+01 7.634311e-01 -2.697424e+01 8.712995e-02 - 1.954000e+01 5.173547e-01 -2.698806e+01 8.709697e-02 - 1.955000e+01 2.429157e-01 -2.700187e+01 8.698780e-02 - 1.956000e+01 -5.274497e-02 -2.701568e+01 8.684001e-02 - 1.957000e+01 -3.613665e-01 -2.702949e+01 8.670468e-02 - 1.958000e+01 -6.738055e-01 -2.704330e+01 8.662878e-02 - 1.959000e+01 -9.803250e-01 -2.705711e+01 8.663873e-02 - 1.960000e+01 -1.270927e+00 -2.707093e+01 8.673105e-02 - 1.961000e+01 -1.535714e+00 -2.708474e+01 8.687359e-02 - 1.962000e+01 -1.765271e+00 -2.709855e+01 8.701693e-02 - 1.963000e+01 -1.951044e+00 -2.711236e+01 8.711161e-02 - 1.964000e+01 -2.085707e+00 -2.712617e+01 8.712512e-02 - 1.965000e+01 -2.163487e+00 -2.713998e+01 8.705289e-02 - 1.966000e+01 -2.180452e+00 -2.715380e+01 8.691976e-02 - 1.967000e+01 -2.134721e+00 -2.716761e+01 8.677159e-02 - 1.968000e+01 -2.026606e+00 -2.718142e+01 8.665955e-02 - 1.969000e+01 -1.858664e+00 -2.719523e+01 8.662232e-02 - 1.970000e+01 -1.635658e+00 -2.720904e+01 8.667250e-02 - 1.971000e+01 -1.364429e+00 -2.722286e+01 8.679216e-02 - 1.972000e+01 -1.053676e+00 -2.723667e+01 8.693928e-02 - 1.973000e+01 -7.136597e-01 -2.725048e+01 8.706254e-02 - 1.974000e+01 -3.558338e-01 -2.726429e+01 8.711913e-02 - 1.975000e+01 7.572895e-03 -2.727810e+01 8.708940e-02 - 1.976000e+01 3.640104e-01 -2.729191e+01 8.698344e-02 - 1.977000e+01 7.010758e-01 -2.730573e+01 8.683771e-02 - 1.978000e+01 1.006975e+00 -2.731954e+01 8.670262e-02 - 1.979000e+01 1.270958e+00 -2.733335e+01 8.662514e-02 - 1.980000e+01 1.483711e+00 -2.734716e+01 8.663239e-02 - 1.981000e+01 1.637679e+00 -2.736097e+01 8.672204e-02 - 1.982000e+01 1.727326e+00 -2.737478e+01 8.686318e-02 - 1.983000e+01 1.749294e+00 -2.738860e+01 8.700723e-02 - 1.984000e+01 1.702483e+00 -2.740241e+01 8.710492e-02 - 1.985000e+01 1.588034e+00 -2.741622e+01 8.712322e-02 - 1.986000e+01 1.409227e+00 -2.743003e+01 8.705644e-02 - 1.987000e+01 1.171294e+00 -2.744384e+01 8.692811e-02 - 1.988000e+01 8.811625e-01 -2.745765e+01 8.678293e-02 - 1.989000e+01 5.471485e-01 -2.747147e+01 8.667148e-02 - 1.990000e+01 1.786013e-01 -2.748528e+01 8.663257e-02 - 1.991000e+01 -2.144701e-01 -2.749909e+01 8.667962e-02 - 1.992000e+01 -6.217781e-01 -2.751290e+01 8.679592e-02 - 1.993000e+01 -1.033127e+00 -2.752671e+01 8.694062e-02 - 1.994000e+01 -1.438757e+00 -2.754052e+01 8.706314e-02 - 1.995000e+01 -1.829651e+00 -2.755434e+01 8.712079e-02 - 1.996000e+01 -2.197791e+00 -2.756815e+01 8.709333e-02 - 1.997000e+01 -2.536358e+00 -2.758196e+01 8.698987e-02 - 1.998000e+01 -2.839868e+00 -2.759577e+01 8.684575e-02 - 1.999000e+01 -3.104253e+00 -2.760958e+01 8.671056e-02 - 2.000000e+01 -3.326870e+00 -2.762339e+01 8.663104e-02 + 1.000000e-02 -7.734561e-02 -1.381170e-02 3.134926e-02 + 2.000000e-02 -1.596764e-01 -2.762339e-02 6.045792e-02 + 3.000000e-02 -2.516875e-01 -4.143509e-02 8.526468e-02 + 4.000000e-02 -3.575096e-01 -5.524679e-02 1.040541e-01 + 5.000000e-02 -4.804651e-01 -6.905849e-02 1.155991e-01 + 6.000000e-02 -6.228668e-01 -8.287018e-02 1.192732e-01 + 7.000000e-02 -7.858705e-01 -9.668188e-02 1.151330e-01 + 8.000000e-02 -9.693874e-01 -1.104936e-01 1.039918e-01 + 9.000000e-02 -1.172061e+00 -1.243053e-01 8.755577e-02 + 1.000000e-01 -1.391306e+00 -1.381170e-01 6.884717e-02 + 1.100000e-01 -1.623409e+00 -1.519287e-01 5.341991e-02 + 1.200000e-01 -1.863680e+00 -1.657404e-01 4.979434e-02 + 1.300000e-01 -2.106649e+00 -1.795521e-01 6.017895e-02 + 1.400000e-01 -2.346295e+00 -1.933638e-01 7.640497e-02 + 1.500000e-01 -2.576293e+00 -2.071755e-01 9.161881e-02 + 1.600000e-01 -2.790268e+00 -2.209872e-01 1.024655e-01 + 1.700000e-01 -2.982047e+00 -2.347989e-01 1.074539e-01 + 1.800000e-01 -3.145891e+00 -2.486105e-01 1.062389e-01 + 1.900000e-01 -3.276707e+00 -2.624222e-01 9.942805e-02 + 2.000000e-01 -3.370223e+00 -2.762339e-01 8.860376e-02 + 2.100000e-01 -3.423130e+00 -2.900456e-01 7.650761e-02 + 2.200000e-01 -3.433181e+00 -3.038573e-01 6.719764e-02 + 2.300000e-01 -3.399254e+00 -3.176690e-01 6.493149e-02 + 2.400000e-01 -3.321377e+00 -3.314807e-01 7.061632e-02 + 2.500000e-01 -3.200715e+00 -3.452924e-01 8.074527e-02 + 2.600000e-01 -3.039527e+00 -3.591041e-01 9.101665e-02 + 2.700000e-01 -2.841094e+00 -3.729158e-01 9.850821e-02 + 2.800000e-01 -2.609626e+00 -3.867275e-01 1.017102e-01 + 2.900000e-01 -2.350147e+00 -4.005392e-01 1.002266e-01 + 3.000000e-01 -2.068363e+00 -4.143509e-01 9.462396e-02 + 3.100000e-01 -1.770519e+00 -4.281626e-01 8.640470e-02 + 3.200000e-01 -1.463237e+00 -4.419743e-01 7.800773e-02 + 3.300000e-01 -1.153355e+00 -4.557860e-01 7.249483e-02 + 3.400000e-01 -8.477479e-01 -4.695977e-01 7.224522e-02 + 3.500000e-01 -5.531450e-01 -4.834094e-01 7.713224e-02 + 3.600000e-01 -2.759477e-01 -4.972211e-01 8.467203e-02 + 3.700000e-01 -2.204310e-02 -5.110328e-01 9.195493e-02 + 3.800000e-01 2.033757e-01 -5.248445e-01 9.686320e-02 + 3.900000e-01 3.959788e-01 -5.386562e-01 9.828977e-02 + 4.000000e-01 5.524508e-01 -5.524679e-01 9.606310e-02 + 4.100000e-01 6.706182e-01 -5.662796e-01 9.087598e-02 + 4.200000e-01 7.495432e-01 -5.800913e-01 8.423689e-02 + 4.300000e-01 7.895774e-01 -5.939030e-01 7.831796e-02 + 4.400000e-01 7.923692e-01 -6.077147e-01 7.538431e-02 + 4.500000e-01 7.608195e-01 -6.215264e-01 7.662821e-02 + 4.600000e-01 6.989824e-01 -6.353381e-01 8.131523e-02 + 4.700000e-01 6.119129e-01 -6.491498e-01 8.737928e-02 + 4.800000e-01 5.054623e-01 -6.629615e-01 9.267455e-02 + 4.900000e-01 3.860302e-01 -6.767732e-01 9.569092e-02 + 5.000000e-01 2.602819e-01 -6.905849e-01 9.573000e-02 + 5.100000e-01 1.348438e-01 -7.043966e-01 9.289354e-02 + 5.200000e-01 1.599279e-02 -7.182083e-01 8.803723e-02 + 5.300000e-01 -9.064421e-02 -7.320200e-01 8.267435e-02 + 5.400000e-01 -1.803637e-01 -7.458316e-01 7.868367e-02 + 5.500000e-01 -2.496148e-01 -7.596433e-01 7.762463e-02 + 5.600000e-01 -2.961697e-01 -7.734550e-01 7.986113e-02 + 5.700000e-01 -3.192238e-01 -7.872667e-01 8.433275e-02 + 5.800000e-01 -3.194177e-01 -8.010784e-01 8.926692e-02 + 5.900000e-01 -2.987769e-01 -8.148901e-01 9.303294e-02 + 6.000000e-01 -2.605717e-01 -8.287018e-01 9.458206e-02 + 6.100000e-01 -2.091040e-01 -8.425135e-01 9.356811e-02 + 6.200000e-01 -1.494329e-01 -8.563252e-01 9.034444e-02 + 6.300000e-01 -8.705466e-02 -8.701369e-01 8.590452e-02 + 6.400000e-01 -2.755745e-02 -8.839486e-01 8.171553e-02 + 6.500000e-01 2.372868e-02 -8.977603e-01 7.931299e-02 + 6.600000e-01 6.206366e-02 -9.115720e-01 7.962749e-02 + 6.700000e-01 8.359014e-02 -9.253837e-01 8.244920e-02 + 6.800000e-01 8.556789e-02 -9.391954e-01 8.658046e-02 + 6.900000e-01 6.653458e-02 -9.530071e-01 9.051104e-02 + 7.000000e-01 2.638255e-02 -9.668188e-01 9.300732e-02 + 7.100000e-01 -3.365350e-02 -9.806305e-01 9.339048e-02 + 7.200000e-01 -1.110967e-01 -9.944422e-01 9.161189e-02 + 7.300000e-01 -2.024086e-01 -1.008254e+00 8.823550e-02 + 7.400000e-01 -3.032383e-01 -1.022066e+00 8.434109e-02 + 7.500000e-01 -4.087215e-01 -1.035877e+00 8.127899e-02 + 7.600000e-01 -5.138097e-01 -1.049689e+00 8.019975e-02 + 7.700000e-01 -6.136058e-01 -1.063501e+00 8.149425e-02 + 7.800000e-01 -7.036833e-01 -1.077312e+00 8.457797e-02 + 7.900000e-01 -7.803670e-01 -1.091124e+00 8.824255e-02 + 8.000000e-01 -8.409562e-01 -1.104936e+00 9.123004e-02 + 8.100000e-01 -8.838756e-01 -1.118747e+00 9.263856e-02 + 8.200000e-01 -9.087437e-01 -1.132559e+00 9.209884e-02 + 8.300000e-01 -9.163567e-01 -1.146371e+00 8.981209e-02 + 8.400000e-01 -9.085893e-01 -1.160183e+00 8.650416e-02 + 8.500000e-01 -8.882216e-01 -1.173994e+00 8.327654e-02 + 8.600000e-01 -8.587063e-01 -1.187806e+00 8.129051e-02 + 8.700000e-01 -8.238944e-01 -1.201618e+00 8.129498e-02 + 8.800000e-01 -7.877398e-01 -1.215429e+00 8.324441e-02 + 8.900000e-01 -7.540061e-01 -1.229241e+00 8.633665e-02 + 9.000000e-01 -7.259969e-01 -1.243053e+00 8.943578e-02 + 9.100000e-01 -7.063286e-01 -1.256864e+00 9.152907e-02 + 9.200000e-01 -6.967632e-01 -1.270676e+00 9.200378e-02 + 9.300000e-01 -6.981108e-01 -1.284488e+00 9.075509e-02 + 9.400000e-01 -7.102095e-01 -1.298300e+00 8.818933e-02 + 9.500000e-01 -7.319798e-01 -1.312111e+00 8.513983e-02 + 9.600000e-01 -7.615502e-01 -1.325923e+00 8.266016e-02 + 9.700000e-01 -7.964408e-01 -1.339735e+00 8.166394e-02 + 9.800000e-01 -8.337897e-01 -1.353546e+00 8.251468e-02 + 9.900000e-01 -8.706036e-01 -1.367358e+00 8.484194e-02 + 1.000000e-00 -9.040117e-01 -1.381170e+00 8.774748e-02 + 1.010000e+00 -9.315033e-01 -1.394981e+00 9.021996e-02 + 1.020000e+00 -9.511296e-01 -1.408793e+00 9.148261e-02 + 1.030000e+00 -9.616553e-01 -1.422605e+00 9.117828e-02 + 1.040000e+00 -9.626475e-01 -1.436417e+00 8.942710e-02 + 1.050000e+00 -9.544971e-01 -1.450228e+00 8.679399e-02 + 1.060000e+00 -9.383712e-01 -1.464040e+00 8.415952e-02 + 1.070000e+00 -9.161027e-01 -1.477852e+00 8.246149e-02 + 1.080000e+00 -8.900263e-01 -1.491663e+00 8.233013e-02 + 1.090000e+00 -8.627749e-01 -1.505475e+00 8.378993e-02 + 1.100000e+00 -8.370557e-01 -1.519287e+00 8.625490e-02 + 1.110000e+00 -8.154227e-01 -1.533098e+00 8.882170e-02 + 1.120000e+00 -8.000647e-01 -1.546910e+00 9.063428e-02 + 1.130000e+00 -7.926282e-01 -1.560722e+00 9.113887e-02 + 1.140000e+00 -7.940862e-01 -1.574533e+00 9.020245e-02 + 1.150000e+00 -8.046667e-01 -1.588345e+00 8.812929e-02 + 1.160000e+00 -8.238427e-01 -1.602157e+00 8.559113e-02 + 1.170000e+00 -8.503875e-01 -1.615969e+00 8.345275e-02 + 1.180000e+00 -8.824866e-01 -1.629780e+00 8.248185e-02 + 1.190000e+00 -9.178991e-01 -1.643592e+00 8.302436e-02 + 1.200000e+00 -9.541530e-01 -1.657404e+00 8.484068e-02 + 1.210000e+00 -9.887581e-01 -1.671215e+00 8.723378e-02 + 1.220000e+00 -1.019420e+00 -1.685027e+00 8.936506e-02 + 1.230000e+00 -1.044233e+00 -1.698839e+00 9.055378e-02 + 1.240000e+00 -1.061845e+00 -1.712650e+00 9.045794e-02 + 1.250000e+00 -1.071566e+00 -1.726462e+00 8.914106e-02 + 1.260000e+00 -1.073431e+00 -1.740274e+00 8.704942e-02 + 1.270000e+00 -1.068188e+00 -1.754086e+00 8.489959e-02 + 1.280000e+00 -1.057242e+00 -1.767897e+00 8.346229e-02 + 1.290000e+00 -1.042527e+00 -1.781709e+00 8.327095e-02 + 1.300000e+00 -1.026351e+00 -1.795521e+00 8.438368e-02 + 1.310000e+00 -1.011191e+00 -1.809332e+00 8.636090e-02 + 1.320000e+00 -9.994919e-01 -1.823144e+00 8.847613e-02 + 1.330000e+00 -9.934586e-01 -1.836956e+00 9.000844e-02 + 1.340000e+00 -9.948682e-01 -1.850767e+00 9.047021e-02 + 1.350000e+00 -1.004922e+00 -1.864579e+00 8.972635e-02 + 1.360000e+00 -1.024143e+00 -1.878391e+00 8.801881e-02 + 1.370000e+00 -1.052329e+00 -1.892203e+00 8.590676e-02 + 1.380000e+00 -1.088569e+00 -1.906014e+00 8.411382e-02 + 1.390000e+00 -1.131312e+00 -1.919826e+00 8.328369e-02 + 1.400000e+00 -1.178493e+00 -1.933638e+00 8.371558e-02 + 1.410000e+00 -1.227697e+00 -1.947449e+00 8.522786e-02 + 1.420000e+00 -1.276352e+00 -1.961261e+00 8.724927e-02 + 1.430000e+00 -1.321931e+00 -1.975073e+00 8.906920e-02 + 1.440000e+00 -1.362151e+00 -1.988884e+00 9.009276e-02 + 1.450000e+00 -1.395148e+00 -2.002696e+00 9.000846e-02 + 1.460000e+00 -1.419612e+00 -2.016508e+00 8.885776e-02 + 1.470000e+00 -1.434881e+00 -2.030319e+00 8.702023e-02 + 1.480000e+00 -1.440976e+00 -2.044131e+00 8.511516e-02 + 1.490000e+00 -1.438578e+00 -2.057943e+00 8.381334e-02 + 1.500000e+00 -1.428952e+00 -2.071755e+00 8.358812e-02 + 1.510000e+00 -1.413823e+00 -2.085566e+00 8.451113e-02 + 1.520000e+00 -1.395219e+00 -2.099378e+00 8.622309e-02 + 1.530000e+00 -1.375288e+00 -2.113190e+00 8.810063e-02 + 1.540000e+00 -1.356109e+00 -2.127001e+00 8.950526e-02 + 1.550000e+00 -1.339521e+00 -2.140813e+00 8.998983e-02 + 1.560000e+00 -1.326967e+00 -2.154625e+00 8.941412e-02 + 1.570000e+00 -1.319389e+00 -2.168436e+00 8.797326e-02 + 1.580000e+00 -1.317160e+00 -2.182248e+00 8.614643e-02 + 1.590000e+00 -1.320081e+00 -2.196060e+00 8.456224e-02 + 1.600000e+00 -1.327421e+00 -2.209872e+00 8.378773e-02 + 1.610000e+00 -1.338016e+00 -2.223683e+00 8.410190e-02 + 1.620000e+00 -1.350401e+00 -2.237495e+00 8.537324e-02 + 1.630000e+00 -1.362974e+00 -2.251307e+00 8.712414e-02 + 1.640000e+00 -1.374170e+00 -2.265118e+00 8.873653e-02 + 1.650000e+00 -1.382635e+00 -2.278930e+00 8.967598e-02 + 1.660000e+00 -1.387368e+00 -2.292742e+00 8.964903e-02 + 1.670000e+00 -1.387843e+00 -2.306553e+00 8.867411e-02 + 1.680000e+00 -1.384077e+00 -2.320365e+00 8.707293e-02 + 1.690000e+00 -1.376637e+00 -2.334177e+00 8.538419e-02 + 1.700000e+00 -1.366606e+00 -2.347989e+00 8.419842e-02 + 1.710000e+00 -1.355480e+00 -2.361800e+00 8.394229e-02 + 1.720000e+00 -1.345031e+00 -2.375612e+00 8.470005e-02 + 1.730000e+00 -1.337123e+00 -2.389424e+00 8.617890e-02 + 1.740000e+00 -1.333527e+00 -2.403235e+00 8.784186e-02 + 1.750000e+00 -1.335716e+00 -2.417047e+00 8.912123e-02 + 1.760000e+00 -1.344696e+00 -2.430859e+00 8.960623e-02 + 1.770000e+00 -1.360861e+00 -2.444670e+00 8.915473e-02 + 1.780000e+00 -1.383901e+00 -2.458482e+00 8.792463e-02 + 1.790000e+00 -1.412776e+00 -2.472294e+00 8.633026e-02 + 1.800000e+00 -1.445754e+00 -2.486105e+00 8.492298e-02 + 1.810000e+00 -1.480514e+00 -2.499917e+00 8.420620e-02 + 1.820000e+00 -1.514312e+00 -2.513729e+00 8.443860e-02 + 1.830000e+00 -1.544202e+00 -2.527541e+00 8.552365e-02 + 1.840000e+00 -1.567278e+00 -2.541352e+00 8.705601e-02 + 1.850000e+00 -1.580939e+00 -2.555164e+00 8.849338e-02 + 1.860000e+00 -1.583140e+00 -2.568976e+00 8.935436e-02 + 1.870000e+00 -1.572609e+00 -2.582787e+00 8.936496e-02 + 1.880000e+00 -1.549013e+00 -2.596599e+00 8.852906e-02 + 1.890000e+00 -1.513057e+00 -2.610411e+00 8.712423e-02 + 1.900000e+00 -1.466490e+00 -2.624222e+00 8.562504e-02 + 1.910000e+00 -1.412034e+00 -2.638034e+00 8.455578e-02 + 1.920000e+00 -1.353220e+00 -2.651846e+00 8.430059e-02 + 1.930000e+00 -1.294150e+00 -2.665658e+00 8.494598e-02 + 1.940000e+00 -1.239192e+00 -2.679469e+00 8.624521e-02 + 1.950000e+00 -1.192639e+00 -2.693281e+00 8.772760e-02 + 1.960000e+00 -1.158358e+00 -2.707093e+00 8.888395e-02 + 1.970000e+00 -1.139441e+00 -2.720904e+00 8.933725e-02 + 1.980000e+00 -1.137915e+00 -2.734716e+00 8.894918e-02 + 1.990000e+00 -1.154511e+00 -2.748528e+00 8.785320e-02 + 2.000000e+00 -1.188531e+00 -2.762339e+00 8.641699e-02 + 2.010000e+00 -1.237823e+00 -2.776151e+00 8.513478e-02 + 2.020000e+00 -1.298870e+00 -2.789963e+00 8.446166e-02 + 2.030000e+00 -1.366998e+00 -2.803775e+00 8.463800e-02 + 2.040000e+00 -1.436686e+00 -2.817586e+00 8.558855e-02 + 2.050000e+00 -1.501962e+00 -2.831398e+00 8.695755e-02 + 2.060000e+00 -1.556856e+00 -2.845210e+00 8.825708e-02 + 2.070000e+00 -1.595879e+00 -2.859021e+00 8.904528e-02 + 2.080000e+00 -1.614491e+00 -2.872833e+00 8.906364e-02 + 2.090000e+00 -1.609514e+00 -2.886645e+00 8.830655e-02 + 2.100000e+00 -1.579460e+00 -2.900456e+00 8.702107e-02 + 2.110000e+00 -1.524741e+00 -2.914268e+00 8.563829e-02 + 2.120000e+00 -1.447736e+00 -2.928080e+00 8.463963e-02 + 2.130000e+00 -1.352693e+00 -2.941891e+00 8.438444e-02 + 2.140000e+00 -1.245484e+00 -2.955703e+00 8.496517e-02 + 2.150000e+00 -1.133191e+00 -2.969515e+00 8.616936e-02 + 2.160000e+00 -1.023574e+00 -2.983327e+00 8.757206e-02 + 2.170000e+00 -9.244251e-01 -2.997138e+00 8.870195e-02 + 2.180000e+00 -8.428719e-01 -3.010950e+00 8.920000e-02 + 2.190000e+00 -7.846657e-01 -3.024762e+00 8.892219e-02 + 2.200000e+00 -7.535071e-01 -3.038573e+00 8.797447e-02 + 2.210000e+00 -7.504647e-01 -3.052385e+00 8.668116e-02 + 2.220000e+00 -7.735306e-01 -3.066197e+00 8.548894e-02 + 2.230000e+00 -8.173576e-01 -3.080008e+00 8.481846e-02 + 2.240000e+00 -8.732071e-01 -3.093820e+00 8.490579e-02 + 2.250000e+00 -9.291271e-01 -3.107632e+00 8.570642e-02 + 2.260000e+00 -9.703641e-01 -3.121444e+00 8.691730e-02 + 2.270000e+00 -9.799987e-01 -3.135255e+00 8.810312e-02 + 2.280000e+00 -9.397761e-01 -3.149067e+00 8.885701e-02 + 2.290000e+00 -8.310933e-01 -3.162879e+00 8.893019e-02 + 2.300000e+00 -6.360900e-01 -3.176690e+00 8.830113e-02 + 2.310000e+00 -3.387799e-01 -3.190502e+00 8.717917e-02 + 2.320000e+00 7.384109e-02 -3.204314e+00 8.594395e-02 + 2.330000e+00 6.107803e-01 -3.218125e+00 8.502589e-02 + 2.340000e+00 1.276191e+00 -3.231937e+00 8.475268e-02 + 2.350000e+00 2.068731e+00 -3.245749e+00 8.521931e-02 + 2.360000e+00 2.981181e+00 -3.259561e+00 8.624936e-02 + 2.370000e+00 4.000357e+00 -3.273372e+00 8.747046e-02 + 2.380000e+00 5.107337e+00 -3.287184e+00 8.845949e-02 + 2.390000e+00 6.277992e+00 -3.300996e+00 8.888735e-02 + 2.400000e+00 7.483803e+00 -3.314807e+00 8.861696e-02 + 2.410000e+00 8.692939e+00 -3.328619e+00 8.773945e-02 + 2.420000e+00 9.871525e+00 -3.342431e+00 8.654753e-02 + 2.430000e+00 1.098505e+01 -3.356242e+00 8.544831e-02 + 2.440000e+00 1.199985e+01 -3.370054e+00 8.482790e-02 + 2.450000e+00 1.288455e+01 -3.383866e+00 8.490680e-02 + 2.460000e+00 1.361146e+01 -3.397678e+00 8.565094e-02 + 2.470000e+00 1.415774e+01 -3.411489e+00 8.678792e-02 + 2.480000e+00 1.450644e+01 -3.425301e+00 8.791879e-02 + 2.490000e+00 1.464718e+01 -3.439113e+00 8.866444e-02 + 2.500000e+00 1.457658e+01 -3.452924e+00 8.878714e-02 + 2.510000e+00 1.429830e+01 -3.466736e+00 8.825730e-02 + 2.520000e+00 1.382281e+01 -3.480548e+00 8.725920e-02 + 2.530000e+00 1.316686e+01 -3.494359e+00 8.613645e-02 + 2.540000e+00 1.235258e+01 -3.508171e+00 8.528323e-02 + 2.550000e+00 1.140650e+01 -3.521983e+00 8.500491e-02 + 2.560000e+00 1.035826e+01 -3.535794e+00 8.539895e-02 + 2.570000e+00 9.239323e+00 -3.549606e+00 8.631613e-02 + 2.580000e+00 8.081607e+00 -3.563418e+00 8.742391e-02 + 2.590000e+00 6.916163e+00 -3.577230e+00 8.833600e-02 + 2.600000e+00 5.771973e+00 -3.591041e+00 8.874584e-02 + 2.610000e+00 4.674897e+00 -3.604853e+00 8.852008e-02 + 2.620000e+00 3.646830e+00 -3.618665e+00 8.773500e-02 + 2.630000e+00 2.705100e+00 -3.632476e+00 8.665363e-02 + 2.640000e+00 1.862122e+00 -3.646288e+00 8.564608e-02 + 2.650000e+00 1.125307e+00 -3.660100e+00 8.506583e-02 + 2.660000e+00 4.972252e-01 -3.673911e+00 8.511794e-02 + 2.670000e+00 -2.400927e-02 -3.687723e+00 8.577693e-02 + 2.680000e+00 -4.441723e-01 -3.701535e+00 8.679855e-02 + 2.690000e+00 -7.722150e-01 -3.715347e+00 8.781860e-02 + 2.700000e+00 -1.019459e+00 -3.729158e+00 8.848654e-02 + 2.710000e+00 -1.198748e+00 -3.742970e+00 8.857941e-02 + 2.720000e+00 -1.323610e+00 -3.756782e+00 8.806668e-02 + 2.730000e+00 -1.407472e+00 -3.770593e+00 8.711793e-02 + 2.740000e+00 -1.462967e+00 -3.784405e+00 8.605324e-02 + 2.750000e+00 -1.501372e+00 -3.798217e+00 8.524228e-02 + 2.760000e+00 -1.532185e+00 -3.812028e+00 8.497442e-02 + 2.770000e+00 -1.562860e+00 -3.825840e+00 8.534686e-02 + 2.780000e+00 -1.598702e+00 -3.839652e+00 8.622582e-02 + 2.790000e+00 -1.642903e+00 -3.853464e+00 8.730239e-02 + 2.800000e+00 -1.696711e+00 -3.867275e+00 8.821161e-02 + 2.810000e+00 -1.759700e+00 -3.881087e+00 8.865812e-02 + 2.820000e+00 -1.830120e+00 -3.894899e+00 8.850613e-02 + 2.830000e+00 -1.905285e+00 -3.908710e+00 8.781616e-02 + 2.840000e+00 -1.981979e+00 -3.922522e+00 8.682582e-02 + 2.850000e+00 -2.056843e+00 -3.936334e+00 8.587719e-02 + 2.860000e+00 -2.126718e+00 -3.950145e+00 8.530316e-02 + 2.870000e+00 -2.188935e+00 -3.963957e+00 8.530532e-02 + 2.880000e+00 -2.241518e+00 -3.977769e+00 8.587504e-02 + 2.890000e+00 -2.283314e+00 -3.991580e+00 8.679888e-02 + 2.900000e+00 -2.314031e+00 -4.005392e+00 8.774513e-02 + 2.910000e+00 -2.334204e+00 -4.019204e+00 8.838627e-02 + 2.920000e+00 -2.345096e+00 -4.033016e+00 8.850696e-02 + 2.930000e+00 -2.348533e+00 -4.046827e+00 8.806776e-02 + 2.940000e+00 -2.346723e+00 -4.060639e+00 8.721507e-02 + 2.950000e+00 -2.342043e+00 -4.074451e+00 8.623706e-02 + 2.960000e+00 -2.336835e+00 -4.088262e+00 8.547181e-02 + 2.970000e+00 -2.333219e+00 -4.102074e+00 8.518872e-02 + 2.980000e+00 -2.332935e+00 -4.115886e+00 8.548554e-02 + 2.990000e+00 -2.337236e+00 -4.129697e+00 8.624986e-02 + 3.000000e+00 -2.346817e+00 -4.143509e+00 8.720597e-02 + 3.010000e+00 -2.361806e+00 -4.157321e+00 8.802122e-02 + 3.020000e+00 -2.381792e+00 -4.171133e+00 8.842215e-02 + 3.030000e+00 -2.405909e+00 -4.184944e+00 8.828001e-02 + 3.040000e+00 -2.432939e+00 -4.198756e+00 8.764730e-02 + 3.050000e+00 -2.461444e+00 -4.212568e+00 8.674126e-02 + 3.060000e+00 -2.489911e+00 -4.226379e+00 8.587672e-02 + 3.070000e+00 -2.516886e+00 -4.240191e+00 8.536071e-02 + 3.080000e+00 -2.541103e+00 -4.254003e+00 8.537964e-02 + 3.090000e+00 -2.561584e+00 -4.267814e+00 8.592621e-02 + 3.100000e+00 -2.577712e+00 -4.281626e+00 8.680329e-02 + 3.110000e+00 -2.589266e+00 -4.295438e+00 8.770250e-02 + 3.120000e+00 -2.596420e+00 -4.309250e+00 8.831725e-02 + 3.130000e+00 -2.599709e+00 -4.323061e+00 8.844402e-02 + 3.140000e+00 -2.599957e+00 -4.336873e+00 8.804325e-02 + 3.150000e+00 -2.598188e+00 -4.350685e+00 8.724975e-02 + 3.160000e+00 -2.595516e+00 -4.364496e+00 8.633174e-02 + 3.170000e+00 -2.593021e+00 -4.378308e+00 8.560513e-02 + 3.180000e+00 -2.591636e+00 -4.392120e+00 8.532290e-02 + 3.190000e+00 -2.592035e+00 -4.405931e+00 8.557901e-02 + 3.200000e+00 -2.594543e+00 -4.419743e+00 8.627157e-02 + 3.210000e+00 -2.599066e+00 -4.433555e+00 8.714478e-02 + 3.220000e+00 -2.605049e+00 -4.447366e+00 8.788730e-02 + 3.230000e+00 -2.611468e+00 -4.461178e+00 8.824143e-02 + 3.240000e+00 -2.616842e+00 -4.474990e+00 8.808516e-02 + 3.250000e+00 -2.619286e+00 -4.488802e+00 8.746838e-02 + 3.260000e+00 -2.616581e+00 -4.502613e+00 8.659820e-02 + 3.270000e+00 -2.606259e+00 -4.516425e+00 8.577550e-02 + 3.280000e+00 -2.585719e+00 -4.530237e+00 8.529449e-02 + 3.290000e+00 -2.552333e+00 -4.544048e+00 8.533489e-02 + 3.300000e+00 -2.503569e+00 -4.557860e+00 8.589126e-02 + 3.310000e+00 -2.437100e+00 -4.571672e+00 8.677526e-02 + 3.320000e+00 -2.350917e+00 -4.585483e+00 8.768926e-02 + 3.330000e+00 -2.243420e+00 -4.599295e+00 8.833407e-02 + 3.340000e+00 -2.113503e+00 -4.613107e+00 8.850678e-02 + 3.350000e+00 -1.960618e+00 -4.626919e+00 8.816083e-02 + 3.360000e+00 -1.784825e+00 -4.640730e+00 8.741788e-02 + 3.370000e+00 -1.586825e+00 -4.654542e+00 8.653083e-02 + 3.380000e+00 -1.367979e+00 -4.668354e+00 8.580368e-02 + 3.390000e+00 -1.130302e+00 -4.682165e+00 8.548686e-02 + 3.400000e+00 -8.764571e-01 -4.695977e+00 8.568406e-02 + 3.410000e+00 -6.097196e-01 -4.709789e+00 8.631281e-02 + 3.420000e+00 -3.339377e-01 -4.723600e+00 8.713910e-02 + 3.430000e+00 -5.347346e-02 -4.737412e+00 8.786787e-02 + 3.440000e+00 2.268704e-01 -4.751224e+00 8.824708e-02 + 3.450000e+00 5.019383e-01 -4.765036e+00 8.814830e-02 + 3.460000e+00 7.663258e-01 -4.778847e+00 8.760434e-02 + 3.470000e+00 1.014500e+00 -4.792659e+00 8.679847e-02 + 3.480000e+00 1.240932e+00 -4.806471e+00 8.600717e-02 + 3.490000e+00 1.440250e+00 -4.820282e+00 8.550784e-02 + 3.500000e+00 1.607392e+00 -4.834094e+00 8.547816e-02 + 3.510000e+00 1.737778e+00 -4.847906e+00 8.592753e-02 + 3.520000e+00 1.827471e+00 -4.861717e+00 8.669413e-02 + 3.530000e+00 1.873343e+00 -4.875529e+00 8.750884e-02 + 3.540000e+00 1.873221e+00 -4.889341e+00 8.809407e-02 + 3.550000e+00 1.826015e+00 -4.903152e+00 8.825661e-02 + 3.560000e+00 1.731819e+00 -4.916964e+00 8.794676e-02 + 3.570000e+00 1.591965e+00 -4.930776e+00 8.727197e-02 + 3.580000e+00 1.409047e+00 -4.944588e+00 8.646361e-02 + 3.590000e+00 1.186882e+00 -4.958399e+00 8.580261e-02 + 3.600000e+00 9.304277e-01 -4.972211e+00 8.552186e-02 + 3.610000e+00 6.456414e-01 -4.986023e+00 8.571906e-02 + 3.620000e+00 3.392945e-01 -4.999834e+00 8.631881e-02 + 3.630000e+00 1.873856e-02 -5.013646e+00 8.710326e-02 + 3.640000e+00 -3.083619e-01 -5.027458e+00 8.779520e-02 + 3.650000e+00 -6.343206e-01 -5.041269e+00 8.815575e-02 + 3.660000e+00 -9.517301e-01 -5.055081e+00 8.806124e-02 + 3.670000e+00 -1.253756e+00 -5.068893e+00 8.754045e-02 + 3.680000e+00 -1.534413e+00 -5.082705e+00 8.676573e-02 + 3.690000e+00 -1.788795e+00 -5.096516e+00 8.599990e-02 + 3.700000e+00 -2.013266e+00 -5.110328e+00 8.550922e-02 + 3.710000e+00 -2.205580e+00 -5.124140e+00 8.546775e-02 + 3.720000e+00 -2.364928e+00 -5.137951e+00 8.589091e-02 + 3.730000e+00 -2.491921e+00 -5.151763e+00 8.663012e-02 + 3.740000e+00 -2.588479e+00 -5.165575e+00 8.743106e-02 + 3.750000e+00 -2.657671e+00 -5.179386e+00 8.802674e-02 + 3.760000e+00 -2.703479e+00 -5.193198e+00 8.822663e-02 + 3.770000e+00 -2.730520e+00 -5.207010e+00 8.797479e-02 + 3.780000e+00 -2.743737e+00 -5.220822e+00 8.736478e-02 + 3.790000e+00 -2.748083e+00 -5.234633e+00 8.660995e-02 + 3.800000e+00 -2.748209e+00 -5.248445e+00 8.597450e-02 + 3.810000e+00 -2.748188e+00 -5.262257e+00 8.568213e-02 + 3.820000e+00 -2.751276e+00 -5.276068e+00 8.583325e-02 + 3.830000e+00 -2.759752e+00 -5.289880e+00 8.636683e-02 + 3.840000e+00 -2.774817e+00 -5.303692e+00 8.708555e-02 + 3.850000e+00 -2.796588e+00 -5.317503e+00 8.773157e-02 + 3.860000e+00 -2.824158e+00 -5.331315e+00 8.807818e-02 + 3.870000e+00 -2.855748e+00 -5.345127e+00 8.800391e-02 + 3.880000e+00 -2.888908e+00 -5.358939e+00 8.752973e-02 + 3.890000e+00 -2.920779e+00 -5.372750e+00 8.681247e-02 + 3.900000e+00 -2.948371e+00 -5.386562e+00 8.609591e-02 + 3.910000e+00 -2.968861e+00 -5.400374e+00 8.562970e-02 + 3.920000e+00 -2.979857e+00 -5.414185e+00 8.557964e-02 + 3.930000e+00 -2.979632e+00 -5.427997e+00 8.596450e-02 + 3.940000e+00 -2.967290e+00 -5.441809e+00 8.664908e-02 + 3.950000e+00 -2.942857e+00 -5.455620e+00 8.739672e-02 + 3.960000e+00 -2.907272e+00 -5.469432e+00 8.795581e-02 + 3.970000e+00 -2.862300e+00 -5.483244e+00 8.814437e-02 + 3.980000e+00 -2.810334e+00 -5.497055e+00 8.790624e-02 + 3.990000e+00 -2.754132e+00 -5.510867e+00 8.732687e-02 + 4.000000e+00 -2.696475e+00 -5.524679e+00 8.660621e-02 + 4.010000e+00 -2.639789e+00 -5.538491e+00 8.599417e-02 + 4.020000e+00 -2.585754e+00 -5.552302e+00 8.570445e-02 + 4.030000e+00 -2.534926e+00 -5.566114e+00 8.583588e-02 + 4.040000e+00 -2.486404e+00 -5.579926e+00 8.633496e-02 + 4.050000e+00 -2.437580e+00 -5.593737e+00 8.701785e-02 + 4.060000e+00 -2.383991e+00 -5.607549e+00 8.764065e-02 + 4.070000e+00 -2.319291e+00 -5.621361e+00 8.798621e-02 + 4.080000e+00 -2.235371e+00 -5.635172e+00 8.793541e-02 + 4.090000e+00 -2.122615e+00 -5.648984e+00 8.750393e-02 + 4.100000e+00 -1.970297e+00 -5.662796e+00 8.683711e-02 + 4.110000e+00 -1.767102e+00 -5.676608e+00 8.616432e-02 + 4.120000e+00 -1.501749e+00 -5.690419e+00 8.572243e-02 + 4.130000e+00 -1.163683e+00 -5.704231e+00 8.567084e-02 + 4.140000e+00 -7.438005e-01 -5.718043e+00 8.603091e-02 + 4.150000e+00 -2.351580e-01 -5.731854e+00 8.667774e-02 + 4.160000e+00 3.663656e-01 -5.745666e+00 8.738832e-02 + 4.170000e+00 1.061510e+00 -5.759478e+00 8.792278e-02 + 4.180000e+00 1.847208e+00 -5.773289e+00 8.810524e-02 + 4.190000e+00 2.716329e+00 -5.787101e+00 8.787868e-02 + 4.200000e+00 3.657618e+00 -5.800913e+00 8.732138e-02 + 4.210000e+00 4.655841e+00 -5.814725e+00 8.662233e-02 + 4.220000e+00 5.692133e+00 -5.828536e+00 8.602054e-02 + 4.230000e+00 6.744555e+00 -5.842348e+00 8.572319e-02 + 4.240000e+00 7.788825e+00 -5.856160e+00 8.583002e-02 + 4.250000e+00 8.799190e+00 -5.869971e+00 8.629595e-02 + 4.260000e+00 9.749408e+00 -5.883783e+00 8.694977e-02 + 4.270000e+00 1.061379e+01 -5.897595e+00 8.755959e-02 + 4.280000e+00 1.136822e+01 -5.911406e+00 8.791545e-02 + 4.290000e+00 1.199120e+01 -5.925218e+00 8.789847e-02 + 4.300000e+00 1.246467e+01 -5.939030e+00 8.751740e-02 + 4.310000e+00 1.277484e+01 -5.952841e+00 8.690514e-02 + 4.320000e+00 1.291270e+01 -5.966653e+00 8.627632e-02 + 4.330000e+00 1.287439e+01 -5.980465e+00 8.585518e-02 + 4.340000e+00 1.266135e+01 -5.994277e+00 8.579510e-02 + 4.350000e+00 1.228021e+01 -6.008088e+00 8.612033e-02 + 4.360000e+00 1.174245e+01 -6.021900e+00 8.671645e-02 + 4.370000e+00 1.106387e+01 -6.035712e+00 8.737418e-02 + 4.380000e+00 1.026392e+01 -6.049523e+00 8.786556e-02 + 4.390000e+00 9.364814e+00 -6.063335e+00 8.802129e-02 + 4.400000e+00 8.390613e+00 -6.077147e+00 8.778446e-02 + 4.410000e+00 7.366263e+00 -6.090958e+00 8.722793e-02 + 4.420000e+00 6.316617e+00 -6.104770e+00 8.653223e-02 + 4.430000e+00 5.265521e+00 -6.118582e+00 8.592841e-02 + 4.440000e+00 4.234999e+00 -6.132394e+00 8.561983e-02 + 4.450000e+00 3.244559e+00 -6.146205e+00 8.570877e-02 + 4.460000e+00 2.310668e+00 -6.160017e+00 8.615855e-02 + 4.470000e+00 1.446384e+00 -6.173829e+00 8.680890e-02 + 4.480000e+00 6.611823e-01 -6.187640e+00 8.743706e-02 + 4.490000e+00 -3.905441e-02 -6.201452e+00 8.783681e-02 + 4.500000e+00 -6.518808e-01 -6.215264e+00 8.788586e-02 + 4.510000e+00 -1.177993e+00 -6.229075e+00 8.758252e-02 + 4.520000e+00 -1.620823e+00 -6.242887e+00 8.704418e-02 + 4.530000e+00 -1.986045e+00 -6.256699e+00 8.646856e-02 + 4.540000e+00 -2.281044e+00 -6.270511e+00 8.606669e-02 + 4.550000e+00 -2.514362e+00 -6.284322e+00 8.598740e-02 + 4.560000e+00 -2.695158e+00 -6.298134e+00 8.626153e-02 + 4.570000e+00 -2.832719e+00 -6.311946e+00 8.679056e-02 + 4.580000e+00 -2.936024e+00 -6.325757e+00 8.738503e-02 + 4.590000e+00 -3.013391e+00 -6.339569e+00 8.783451e-02 + 4.600000e+00 -3.072212e+00 -6.353381e+00 8.798044e-02 + 4.610000e+00 -3.118767e+00 -6.367192e+00 8.776777e-02 + 4.620000e+00 -3.158134e+00 -6.381004e+00 8.726241e-02 + 4.630000e+00 -3.194163e+00 -6.394816e+00 8.663102e-02 + 4.640000e+00 -3.229516e+00 -6.408627e+00 8.608727e-02 + 4.650000e+00 -3.265756e+00 -6.422439e+00 8.581849e-02 + 4.660000e+00 -3.303465e+00 -6.436251e+00 8.591708e-02 + 4.670000e+00 -3.342377e+00 -6.450063e+00 8.634536e-02 + 4.680000e+00 -3.381515e+00 -6.463874e+00 8.695011e-02 + 4.690000e+00 -3.419326e+00 -6.477686e+00 8.751985e-02 + 4.700000e+00 -3.453792e+00 -6.491498e+00 8.785941e-02 + 4.710000e+00 -3.482530e+00 -6.505309e+00 8.785407e-02 + 4.720000e+00 -3.502873e+00 -6.519121e+00 8.750507e-02 + 4.730000e+00 -3.511939e+00 -6.532933e+00 8.692868e-02 + 4.740000e+00 -3.506682e+00 -6.546744e+00 8.631937e-02 + 4.750000e+00 -3.483957e+00 -6.560556e+00 8.588540e-02 + 4.760000e+00 -3.440576e+00 -6.574368e+00 8.577557e-02 + 4.770000e+00 -3.373385e+00 -6.588180e+00 8.602434e-02 + 4.780000e+00 -3.279357e+00 -6.601991e+00 8.653953e-02 + 4.790000e+00 -3.155710e+00 -6.615803e+00 8.713833e-02 + 4.800000e+00 -3.000036e+00 -6.629615e+00 8.761468e-02 + 4.810000e+00 -2.810458e+00 -6.643426e+00 8.781026e-02 + 4.820000e+00 -2.585794e+00 -6.657238e+00 8.766528e-02 + 4.830000e+00 -2.325724e+00 -6.671050e+00 8.723634e-02 + 4.840000e+00 -2.030943e+00 -6.684861e+00 8.667774e-02 + 4.850000e+00 -1.703304e+00 -6.698673e+00 8.619059e-02 + 4.860000e+00 -1.345909e+00 -6.712485e+00 8.595303e-02 + 4.870000e+00 -9.631702e-01 -6.726297e+00 8.605479e-02 + 4.880000e+00 -5.608041e-01 -6.740108e+00 8.646303e-02 + 4.890000e+00 -1.457638e-01 -6.753920e+00 8.703493e-02 + 4.900000e+00 2.738950e-01 -6.767732e+00 8.757120e-02 + 4.910000e+00 6.892164e-01 -6.781543e+00 8.788676e-02 + 4.920000e+00 1.090608e+00 -6.795355e+00 8.787244e-02 + 4.930000e+00 1.468155e+00 -6.809167e+00 8.752974e-02 + 4.940000e+00 1.811980e+00 -6.822978e+00 8.697063e-02 + 4.950000e+00 2.112617e+00 -6.836790e+00 8.638246e-02 + 4.960000e+00 2.361395e+00 -6.850602e+00 8.596608e-02 + 4.970000e+00 2.550801e+00 -6.864413e+00 8.586518e-02 + 4.980000e+00 2.674816e+00 -6.878225e+00 8.611303e-02 + 4.990000e+00 2.729185e+00 -6.892037e+00 8.661999e-02 + 5.000000e+00 2.711627e+00 -6.905849e+00 8.720766e-02 + 5.010000e+00 2.621959e+00 -6.919660e+00 8.767376e-02 + 5.020000e+00 2.462128e+00 -6.933472e+00 8.786104e-02 + 5.030000e+00 2.236157e+00 -6.947284e+00 8.770755e-02 + 5.040000e+00 1.949990e+00 -6.961095e+00 8.726511e-02 + 5.050000e+00 1.611265e+00 -6.974907e+00 8.668269e-02 + 5.060000e+00 1.229002e+00 -6.988719e+00 8.615816e-02 + 5.070000e+00 8.132488e-01 -7.002530e+00 8.587099e-02 + 5.080000e+00 3.746712e-01 -7.016342e+00 8.591790e-02 + 5.090000e+00 -7.586038e-02 -7.030154e+00 8.627722e-02 + 5.100000e+00 -5.276906e-01 -7.043966e+00 8.681827e-02 + 5.110000e+00 -9.707736e-01 -7.057777e+00 8.735105e-02 + 5.120000e+00 -1.396027e+00 -7.071589e+00 8.769425e-02 + 5.130000e+00 -1.795627e+00 -7.085401e+00 8.773588e-02 + 5.140000e+00 -2.163237e+00 -7.099212e+00 8.746834e-02 + 5.150000e+00 -2.494151e+00 -7.113024e+00 8.698983e-02 + 5.160000e+00 -2.785361e+00 -7.126836e+00 8.647198e-02 + 5.170000e+00 -3.035536e+00 -7.140647e+00 8.610178e-02 + 5.180000e+00 -3.244924e+00 -7.154459e+00 8.601496e-02 + 5.190000e+00 -3.415178e+00 -7.168271e+00 8.624523e-02 + 5.200000e+00 -3.549129e+00 -7.182083e+00 8.671154e-02 + 5.210000e+00 -3.650505e+00 -7.195894e+00 8.724892e-02 + 5.220000e+00 -3.723620e+00 -7.209706e+00 8.766895e-02 + 5.230000e+00 -3.773049e+00 -7.223518e+00 8.782505e-02 + 5.240000e+00 -3.803304e+00 -7.237329e+00 8.766071e-02 + 5.250000e+00 -3.818524e+00 -7.251141e+00 8.722768e-02 + 5.260000e+00 -3.822194e+00 -7.264953e+00 8.667016e-02 + 5.270000e+00 -3.816918e+00 -7.278764e+00 8.617831e-02 + 5.280000e+00 -3.804229e+00 -7.292576e+00 8.592329e-02 + 5.290000e+00 -3.784477e+00 -7.306388e+00 8.599517e-02 + 5.300000e+00 -3.756772e+00 -7.320200e+00 8.636886e-02 + 5.310000e+00 -3.718998e+00 -7.334011e+00 8.691337e-02 + 5.320000e+00 -3.667897e+00 -7.347823e+00 8.744021e-02 + 5.330000e+00 -3.599214e+00 -7.361635e+00 8.776965e-02 + 5.340000e+00 -3.507905e+00 -7.375446e+00 8.779011e-02 + 5.350000e+00 -3.388388e+00 -7.389258e+00 8.749321e-02 + 5.360000e+00 -3.234838e+00 -7.403070e+00 8.697617e-02 + 5.370000e+00 -3.041515e+00 -7.416881e+00 8.641121e-02 + 5.380000e+00 -2.803099e+00 -7.430693e+00 8.598917e-02 + 5.390000e+00 -2.515036e+00 -7.444505e+00 8.585342e-02 + 5.400000e+00 -2.173860e+00 -7.458316e+00 8.604798e-02 + 5.410000e+00 -1.777503e+00 -7.472128e+00 8.650183e-02 + 5.420000e+00 -1.325552e+00 -7.485940e+00 8.705661e-02 + 5.430000e+00 -8.194596e-01 -7.499752e+00 8.752478e-02 + 5.440000e+00 -2.626892e-01 -7.513563e+00 8.775421e-02 + 5.450000e+00 3.392176e-01 -7.527375e+00 8.767696e-02 + 5.460000e+00 9.786512e-01 -7.541187e+00 8.732932e-02 + 5.470000e+00 1.646031e+00 -7.554998e+00 8.683885e-02 + 5.480000e+00 2.329988e+00 -7.568810e+00 8.638176e-02 + 5.490000e+00 3.017633e+00 -7.582622e+00 8.612218e-02 + 5.500000e+00 3.694900e+00 -7.596433e+00 8.615289e-02 + 5.510000e+00 4.346958e+00 -7.610245e+00 8.646102e-02 + 5.520000e+00 4.958674e+00 -7.624057e+00 8.693372e-02 + 5.530000e+00 5.515119e+00 -7.637869e+00 8.740100e-02 + 5.540000e+00 6.002084e+00 -7.651680e+00 8.769710e-02 + 5.550000e+00 6.406594e+00 -7.665492e+00 8.771699e-02 + 5.560000e+00 6.717406e+00 -7.679304e+00 8.745053e-02 + 5.570000e+00 6.925442e+00 -7.693115e+00 8.698579e-02 + 5.580000e+00 7.024169e+00 -7.706927e+00 8.648066e-02 + 5.590000e+00 7.009884e+00 -7.720739e+00 8.610998e-02 + 5.600000e+00 6.881897e+00 -7.734550e+00 8.600369e-02 + 5.610000e+00 6.642601e+00 -7.748362e+00 8.619864e-02 + 5.620000e+00 6.297426e+00 -7.762174e+00 8.662450e-02 + 5.630000e+00 5.854665e+00 -7.775986e+00 8.713015e-02 + 5.640000e+00 5.325193e+00 -7.789797e+00 8.753878e-02 + 5.650000e+00 4.722072e+00 -7.803609e+00 8.770900e-02 + 5.660000e+00 4.060080e+00 -7.817421e+00 8.758144e-02 + 5.670000e+00 3.355160e+00 -7.831232e+00 8.719768e-02 + 5.680000e+00 2.623839e+00 -7.845044e+00 8.668744e-02 + 5.690000e+00 1.882618e+00 -7.858856e+00 8.622663e-02 + 5.700000e+00 1.147384e+00 -7.872667e+00 8.597749e-02 + 5.710000e+00 4.328576e-01 -7.886479e+00 8.603025e-02 + 5.720000e+00 -2.478914e-01 -7.900291e+00 8.636931e-02 + 5.730000e+00 -8.838435e-01 -7.914102e+00 8.687907e-02 + 5.740000e+00 -1.466320e+00 -7.927914e+00 8.738655e-02 + 5.750000e+00 -1.989158e+00 -7.941726e+00 8.772229e-02 + 5.760000e+00 -2.448757e+00 -7.955538e+00 8.777674e-02 + 5.770000e+00 -2.844007e+00 -7.969349e+00 8.753466e-02 + 5.780000e+00 -3.176100e+00 -7.983161e+00 8.707946e-02 + 5.790000e+00 -3.448233e+00 -7.996973e+00 8.656641e-02 + 5.800000e+00 -3.665236e+00 -8.010784e+00 8.617139e-02 + 5.810000e+00 -3.833133e+00 -8.024596e+00 8.602990e-02 + 5.820000e+00 -3.958675e+00 -8.038408e+00 8.618804e-02 + 5.830000e+00 -4.048865e+00 -8.052219e+00 8.658593e-02 + 5.840000e+00 -4.110503e+00 -8.066031e+00 8.708082e-02 + 5.850000e+00 -4.149782e+00 -8.079843e+00 8.749955e-02 + 5.860000e+00 -4.171953e+00 -8.093655e+00 8.769861e-02 + 5.870000e+00 -4.181080e+00 -8.107466e+00 8.761101e-02 + 5.880000e+00 -4.179890e+00 -8.121278e+00 8.726695e-02 + 5.890000e+00 -4.169735e+00 -8.135090e+00 8.678365e-02 + 5.900000e+00 -4.150654e+00 -8.148901e+00 8.632682e-02 + 5.910000e+00 -4.121538e+00 -8.162713e+00 8.605422e-02 + 5.920000e+00 -4.080373e+00 -8.176525e+00 8.605936e-02 + 5.930000e+00 -4.024548e+00 -8.190336e+00 8.633734e-02 + 5.940000e+00 -3.951214e+00 -8.204148e+00 8.678737e-02 + 5.950000e+00 -3.857649e+00 -8.217960e+00 8.725091e-02 + 5.960000e+00 -3.741620e+00 -8.231772e+00 8.756870e-02 + 5.970000e+00 -3.601711e+00 -8.245583e+00 8.763482e-02 + 5.980000e+00 -3.437595e+00 -8.259395e+00 8.743080e-02 + 5.990000e+00 -3.250224e+00 -8.273207e+00 8.703087e-02 + 6.000000e+00 -3.041939e+00 -8.287018e+00 8.657745e-02 + 6.010000e+00 -2.816474e+00 -8.300830e+00 8.623311e-02 + 6.020000e+00 -2.578867e+00 -8.314642e+00 8.612316e-02 + 6.030000e+00 -2.335272e+00 -8.328453e+00 8.628953e-02 + 6.040000e+00 -2.092693e+00 -8.342265e+00 8.667500e-02 + 6.050000e+00 -1.858648e+00 -8.356077e+00 8.714473e-02 + 6.060000e+00 -1.640791e+00 -8.369888e+00 8.753548e-02 + 6.070000e+00 -1.446513e+00 -8.383700e+00 8.771242e-02 + 6.080000e+00 -1.282544e+00 -8.397512e+00 8.761380e-02 + 6.090000e+00 -1.154595e+00 -8.411324e+00 8.727067e-02 + 6.100000e+00 -1.067042e+00 -8.425135e+00 8.679705e-02 + 6.110000e+00 -1.022691e+00 -8.438947e+00 8.635272e-02 + 6.120000e+00 -1.022633e+00 -8.452759e+00 8.608880e-02 + 6.130000e+00 -1.066192e+00 -8.466570e+00 8.609374e-02 + 6.140000e+00 -1.150981e+00 -8.480382e+00 8.636059e-02 + 6.150000e+00 -1.273047e+00 -8.494194e+00 8.678994e-02 + 6.160000e+00 -1.427113e+00 -8.508005e+00 8.722702e-02 + 6.170000e+00 -1.606882e+00 -8.521817e+00 8.751718e-02 + 6.180000e+00 -1.805393e+00 -8.535629e+00 8.755858e-02 + 6.190000e+00 -2.015408e+00 -8.549441e+00 8.733548e-02 + 6.200000e+00 -2.229787e+00 -8.563252e+00 8.692355e-02 + 6.210000e+00 -2.441843e+00 -8.577064e+00 8.646565e-02 + 6.220000e+00 -2.645638e+00 -8.590876e+00 8.612434e-02 + 6.230000e+00 -2.836214e+00 -8.604687e+00 8.602490e-02 + 6.240000e+00 -3.009722e+00 -8.618499e+00 8.620926e-02 + 6.250000e+00 -3.163462e+00 -8.632311e+00 8.661987e-02 + 6.260000e+00 -3.295813e+00 -8.646122e+00 8.712074e-02 + 6.270000e+00 -3.406071e+00 -8.659934e+00 8.754630e-02 + 6.280000e+00 -3.494195e+00 -8.673746e+00 8.775802e-02 + 6.290000e+00 -3.560494e+00 -8.687558e+00 8.768946e-02 + 6.300000e+00 -3.605266e+00 -8.701369e+00 8.736689e-02 + 6.310000e+00 -3.628425e+00 -8.715181e+00 8.690065e-02 + 6.320000e+00 -3.629147e+00 -8.728993e+00 8.644948e-02 + 6.330000e+00 -3.605564e+00 -8.742804e+00 8.616701e-02 + 6.340000e+00 -3.554534e+00 -8.756616e+00 8.614766e-02 + 6.350000e+00 -3.471511e+00 -8.770428e+00 8.639233e-02 + 6.360000e+00 -3.350547e+00 -8.784239e+00 8.680872e-02 + 6.370000e+00 -3.184410e+00 -8.798051e+00 8.724599e-02 + 6.380000e+00 -2.964853e+00 -8.811863e+00 8.754876e-02 + 6.390000e+00 -2.683002e+00 -8.825674e+00 8.760987e-02 + 6.400000e+00 -2.329863e+00 -8.839486e+00 8.740504e-02 + 6.410000e+00 -1.896913e+00 -8.853298e+00 8.700040e-02 + 6.420000e+00 -1.376751e+00 -8.867110e+00 8.653120e-02 + 6.430000e+00 -7.637666e-01 -8.880921e+00 8.615719e-02 + 6.440000e+00 -5.478658e-02 -8.894733e+00 8.600743e-02 + 6.450000e+00 7.503419e-01 -8.908545e+00 8.613388e-02 + 6.460000e+00 1.648275e+00 -8.922356e+00 8.649247e-02 + 6.470000e+00 2.631839e+00 -8.936168e+00 8.696004e-02 + 6.480000e+00 3.689864e+00 -8.949980e+00 8.737928e-02 + 6.490000e+00 4.807217e+00 -8.963791e+00 8.761334e-02 + 6.500000e+00 5.965040e+00 -8.977603e+00 8.759051e-02 + 6.510000e+00 7.141184e+00 -8.991415e+00 8.732628e-02 + 6.520000e+00 8.310844e+00 -9.005227e+00 8.691727e-02 + 6.530000e+00 9.447355e+00 -9.019038e+00 8.650892e-02 + 6.540000e+00 1.052313e+01 -9.032850e+00 8.624585e-02 + 6.550000e+00 1.151068e+01 -9.046662e+00 8.622056e-02 + 6.560000e+00 1.238368e+01 -9.060473e+00 8.643989e-02 + 6.570000e+00 1.311803e+01 -9.074285e+00 8.682322e-02 + 6.580000e+00 1.369284e+01 -9.088097e+00 8.723311e-02 + 6.590000e+00 1.409131e+01 -9.101908e+00 8.752513e-02 + 6.600000e+00 1.430143e+01 -9.115720e+00 8.759756e-02 + 6.610000e+00 1.431653e+01 -9.129532e+00 8.742490e-02 + 6.620000e+00 1.413553e+01 -9.143344e+00 8.706581e-02 + 6.630000e+00 1.376303e+01 -9.157155e+00 8.664383e-02 + 6.640000e+00 1.320907e+01 -9.170967e+00 8.630586e-02 + 6.650000e+00 1.248876e+01 -9.184779e+00 8.617074e-02 + 6.660000e+00 1.162158e+01 -9.198590e+00 8.628606e-02 + 6.670000e+00 1.063063e+01 -9.212402e+00 8.661044e-02 + 6.680000e+00 9.541615e+00 -9.226214e+00 8.702918e-02 + 6.690000e+00 8.381888e+00 -9.240025e+00 8.739620e-02 + 6.700000e+00 7.179331e+00 -9.253837e+00 8.758517e-02 + 6.710000e+00 5.961341e+00 -9.267649e+00 8.753185e-02 + 6.720000e+00 4.753851e+00 -9.281461e+00 8.725476e-02 + 6.730000e+00 3.580485e+00 -9.295272e+00 8.684917e-02 + 6.740000e+00 2.461850e+00 -9.309084e+00 8.645577e-02 + 6.750000e+00 1.415025e+00 -9.322896e+00 8.621269e-02 + 6.760000e+00 4.532287e-01 -9.336707e+00 8.620624e-02 + 6.770000e+00 -4.142968e-01 -9.350519e+00 8.643915e-02 + 6.780000e+00 -1.182223e+00 -9.364331e+00 8.682945e-02 + 6.790000e+00 -1.848891e+00 -9.378142e+00 8.724072e-02 + 6.800000e+00 -2.415919e+00 -9.391954e+00 8.753056e-02 + 6.810000e+00 -2.887703e+00 -9.405766e+00 8.759901e-02 + 6.820000e+00 -3.270830e+00 -9.419577e+00 8.742103e-02 + 6.830000e+00 -3.573468e+00 -9.433389e+00 8.705433e-02 + 6.840000e+00 -3.804748e+00 -9.447201e+00 8.662072e-02 + 6.850000e+00 -3.974192e+00 -9.461013e+00 8.626564e-02 + 6.860000e+00 -4.091203e+00 -9.474824e+00 8.610804e-02 + 6.870000e+00 -4.164653e+00 -9.488636e+00 8.619781e-02 + 6.880000e+00 -4.202570e+00 -9.502448e+00 8.649787e-02 + 6.890000e+00 -4.211947e+00 -9.516259e+00 8.689872e-02 + 6.900000e+00 -4.198652e+00 -9.530071e+00 8.725885e-02 + 6.910000e+00 -4.167450e+00 -9.543883e+00 8.745463e-02 + 6.920000e+00 -4.122095e+00 -9.557694e+00 8.742188e-02 + 6.930000e+00 -4.065505e+00 -9.571506e+00 8.717653e-02 + 6.940000e+00 -3.999959e+00 -9.585318e+00 8.680901e-02 + 6.950000e+00 -3.927327e+00 -9.599130e+00 8.645406e-02 + 6.960000e+00 -3.849278e+00 -9.612941e+00 8.624413e-02 + 6.970000e+00 -3.767473e+00 -9.626753e+00 8.626168e-02 + 6.980000e+00 -3.683709e+00 -9.640565e+00 8.650827e-02 + 6.990000e+00 -3.600007e+00 -9.654376e+00 8.690351e-02 + 7.000000e+00 -3.518647e+00 -9.668188e+00 8.731419e-02 + 7.010000e+00 -3.442143e+00 -9.682000e+00 8.760140e-02 + 7.020000e+00 -3.373162e+00 -9.695811e+00 8.766765e-02 + 7.030000e+00 -3.314405e+00 -9.709623e+00 8.748867e-02 + 7.040000e+00 -3.268464e+00 -9.723435e+00 8.712136e-02 + 7.050000e+00 -3.237658e+00 -9.737247e+00 8.668565e-02 + 7.060000e+00 -3.223883e+00 -9.751058e+00 8.632511e-02 + 7.070000e+00 -3.228470e+00 -9.764870e+00 8.615774e-02 + 7.080000e+00 -3.252079e+00 -9.778682e+00 8.623406e-02 + 7.090000e+00 -3.294630e+00 -9.792493e+00 8.651903e-02 + 7.100000e+00 -3.355279e+00 -9.806305e+00 8.690579e-02 + 7.110000e+00 -3.432434e+00 -9.820117e+00 8.725504e-02 + 7.120000e+00 -3.523812e+00 -9.833928e+00 8.744407e-02 + 7.130000e+00 -3.626529e+00 -9.847740e+00 8.740803e-02 + 7.140000e+00 -3.737210e+00 -9.861552e+00 8.716079e-02 + 7.150000e+00 -3.852113e+00 -9.875363e+00 8.679014e-02 + 7.160000e+00 -3.967249e+00 -9.889175e+00 8.642857e-02 + 7.170000e+00 -4.078489e+00 -9.902987e+00 8.620775e-02 + 7.180000e+00 -4.181658e+00 -9.916799e+00 8.621132e-02 + 7.190000e+00 -4.272592e+00 -9.930610e+00 8.644384e-02 + 7.200000e+00 -4.347178e+00 -9.944422e+00 8.682872e-02 + 7.210000e+00 -4.401366e+00 -9.958234e+00 8.723616e-02 + 7.220000e+00 -4.431155e+00 -9.972045e+00 8.752910e-02 + 7.230000e+00 -4.432579e+00 -9.985857e+00 8.760985e-02 + 7.240000e+00 -4.401686e+00 -9.999669e+00 8.745203e-02 + 7.250000e+00 -4.334534e+00 -1.001348e+01 8.710905e-02 + 7.260000e+00 -4.227210e+00 -1.002729e+01 8.669701e-02 + 7.270000e+00 -4.075886e+00 -1.004110e+01 8.635634e-02 + 7.280000e+00 -3.876916e+00 -1.005492e+01 8.620357e-02 + 7.290000e+00 -3.626982e+00 -1.006873e+01 8.628964e-02 + 7.300000e+00 -3.323282e+00 -1.008254e+01 8.658147e-02 + 7.310000e+00 -2.963758e+00 -1.009635e+01 8.697451e-02 + 7.320000e+00 -2.547353e+00 -1.011016e+01 8.733096e-02 + 7.330000e+00 -2.074275e+00 -1.012397e+01 8.752789e-02 + 7.340000e+00 -1.546259e+00 -1.013779e+01 8.749837e-02 + 7.350000e+00 -9.667883e-01 -1.015160e+01 8.725294e-02 + 7.360000e+00 -3.412800e-01 -1.016541e+01 8.687595e-02 + 7.370000e+00 3.228177e-01 -1.017922e+01 8.649780e-02 + 7.380000e+00 1.016010e+00 -1.019303e+01 8.625065e-02 + 7.390000e+00 1.726847e+00 -1.020684e+01 8.622171e-02 + 7.400000e+00 2.442125e+00 -1.022066e+01 8.642147e-02 + 7.410000e+00 3.147204e+00 -1.023447e+01 8.677992e-02 + 7.420000e+00 3.826419e+00 -1.024828e+01 8.717238e-02 + 7.430000e+00 4.463596e+00 -1.026209e+01 8.746396e-02 + 7.440000e+00 5.042623e+00 -1.027590e+01 8.755554e-02 + 7.450000e+00 5.548071e+00 -1.028971e+01 8.741620e-02 + 7.460000e+00 5.965823e+00 -1.030353e+01 8.709278e-02 + 7.470000e+00 6.283678e+00 -1.031734e+01 8.669456e-02 + 7.480000e+00 6.491899e+00 -1.033115e+01 8.635679e-02 + 7.490000e+00 6.583679e+00 -1.034496e+01 8.619412e-02 + 7.500000e+00 6.555482e+00 -1.035877e+01 8.625962e-02 + 7.510000e+00 6.407260e+00 -1.037258e+01 8.652573e-02 + 7.520000e+00 6.142512e+00 -1.038640e+01 8.689495e-02 + 7.530000e+00 5.768195e+00 -1.040021e+01 8.723582e-02 + 7.540000e+00 5.294482e+00 -1.041402e+01 8.742941e-02 + 7.550000e+00 4.734383e+00 -1.042783e+01 8.740958e-02 + 7.560000e+00 4.103251e+00 -1.044164e+01 8.718460e-02 + 7.570000e+00 3.418196e+00 -1.045545e+01 8.683440e-02 + 7.580000e+00 2.697439e+00 -1.046927e+01 8.648406e-02 + 7.590000e+00 1.959645e+00 -1.048308e+01 8.626112e-02 + 7.600000e+00 1.223256e+00 -1.049689e+01 8.625008e-02 + 7.610000e+00 5.058789e-01 -1.051070e+01 8.646118e-02 + 7.620000e+00 -1.762705e-01 -1.052451e+01 8.682625e-02 + 7.630000e+00 -8.088206e-01 -1.053832e+01 8.722328e-02 + 7.640000e+00 -1.379593e+00 -1.055214e+01 8.751959e-02 + 7.650000e+00 -1.878834e+00 -1.056595e+01 8.761687e-02 + 7.660000e+00 -2.299321e+00 -1.057976e+01 8.748327e-02 + 7.670000e+00 -2.636371e+00 -1.059357e+01 8.716352e-02 + 7.680000e+00 -2.887729e+00 -1.060738e+01 8.676455e-02 + 7.690000e+00 -3.053399e+00 -1.062120e+01 8.642026e-02 + 7.700000e+00 -3.135390e+00 -1.063501e+01 8.624582e-02 + 7.710000e+00 -3.137448e+00 -1.064882e+01 8.629701e-02 + 7.720000e+00 -3.064754e+00 -1.066263e+01 8.655023e-02 + 7.730000e+00 -2.923640e+00 -1.067644e+01 8.691194e-02 + 7.740000e+00 -2.721321e+00 -1.069025e+01 8.725297e-02 + 7.750000e+00 -2.465665e+00 -1.070407e+01 8.745415e-02 + 7.760000e+00 -2.165005e+00 -1.071788e+01 8.744637e-02 + 7.770000e+00 -1.827993e+00 -1.073169e+01 8.723295e-02 + 7.780000e+00 -1.463495e+00 -1.074550e+01 8.688815e-02 + 7.790000e+00 -1.080518e+00 -1.075931e+01 8.653246e-02 + 7.800000e+00 -6.881554e-01 -1.077312e+01 8.629153e-02 + 7.810000e+00 -2.955460e-01 -1.078694e+01 8.625170e-02 + 7.820000e+00 8.818105e-02 -1.080075e+01 8.642853e-02 + 7.830000e+00 4.539747e-01 -1.081456e+01 8.676105e-02 + 7.840000e+00 7.929615e-01 -1.082837e+01 8.713417e-02 + 7.850000e+00 1.096579e+00 -1.084218e+01 8.741985e-02 + 7.860000e+00 1.356747e+00 -1.085599e+01 8.752100e-02 + 7.870000e+00 1.566073e+00 -1.086981e+01 8.740354e-02 + 7.880000e+00 1.718081e+00 -1.088362e+01 8.710728e-02 + 7.890000e+00 1.807461e+00 -1.089743e+01 8.673292e-02 + 7.900000e+00 1.830310e+00 -1.091124e+01 8.640862e-02 + 7.910000e+00 1.784361e+00 -1.092505e+01 8.624595e-02 + 7.920000e+00 1.669172e+00 -1.093886e+01 8.630016e-02 + 7.930000e+00 1.486265e+00 -1.095268e+01 8.655020e-02 + 7.940000e+00 1.239192e+00 -1.096649e+01 8.690681e-02 + 7.950000e+00 9.335295e-01 -1.098030e+01 8.724518e-02 + 7.960000e+00 5.767748e-01 -1.099411e+01 8.744885e-02 + 7.970000e+00 1.781685e-01 -1.100792e+01 8.744896e-02 + 7.980000e+00 -2.515741e-01 -1.102173e+01 8.724661e-02 + 7.990000e+00 -7.006017e-01 -1.103555e+01 8.691219e-02 + 8.000000e+00 -1.156323e+00 -1.104936e+01 8.656200e-02 + 8.010000e+00 -1.605844e+00 -1.106317e+01 8.631875e-02 + 8.020000e+00 -2.036420e+00 -1.107698e+01 8.626827e-02 + 8.030000e+00 -2.435906e+00 -1.109079e+01 8.642838e-02 + 8.040000e+00 -2.793178e+00 -1.110460e+01 8.674233e-02 + 8.050000e+00 -3.098512e+00 -1.111842e+01 8.709977e-02 + 8.060000e+00 -3.343890e+00 -1.113223e+01 8.737617e-02 + 8.070000e+00 -3.523241e+00 -1.114604e+01 8.747575e-02 + 8.080000e+00 -3.632589e+00 -1.115985e+01 8.736322e-02 + 8.090000e+00 -3.670114e+00 -1.117366e+01 8.707518e-02 + 8.100000e+00 -3.636133e+00 -1.118747e+01 8.670830e-02 + 8.110000e+00 -3.532999e+00 -1.120129e+01 8.638727e-02 + 8.120000e+00 -3.364936e+00 -1.121510e+01 8.622217e-02 + 8.130000e+00 -3.137818e+00 -1.122891e+01 8.626941e-02 + 8.140000e+00 -2.858915e+00 -1.124272e+01 8.651148e-02 + 8.150000e+00 -2.536611e+00 -1.125653e+01 8.686382e-02 + 8.160000e+00 -2.180124e+00 -1.127034e+01 8.720573e-02 + 8.170000e+00 -1.799223e+00 -1.128416e+01 8.742290e-02 + 8.180000e+00 -1.403965e+00 -1.129797e+01 8.744584e-02 + 8.190000e+00 -1.004458e+00 -1.131178e+01 8.727231e-02 + 8.200000e+00 -6.106442e-01 -1.132559e+01 8.696732e-02 + 8.210000e+00 -2.321136e-01 -1.133940e+01 8.664116e-02 + 8.220000e+00 1.220572e-01 -1.135322e+01 8.641148e-02 + 8.230000e+00 4.434491e-01 -1.136703e+01 8.636156e-02 + 8.240000e+00 7.244291e-01 -1.138084e+01 8.650989e-02 + 8.250000e+00 9.582697e-01 -1.139465e+01 8.680331e-02 + 8.260000e+00 1.139265e+00 -1.140846e+01 8.713658e-02 + 8.270000e+00 1.262844e+00 -1.142227e+01 8.739024e-02 + 8.280000e+00 1.325686e+00 -1.143609e+01 8.747210e-02 + 8.290000e+00 1.325830e+00 -1.144990e+01 8.734839e-02 + 8.300000e+00 1.262779e+00 -1.146371e+01 8.705530e-02 + 8.310000e+00 1.137587e+00 -1.147752e+01 8.668776e-02 + 8.320000e+00 9.529220e-01 -1.149133e+01 8.636844e-02 + 8.330000e+00 7.130975e-01 -1.150514e+01 8.620594e-02 + 8.340000e+00 4.240556e-01 -1.151896e+01 8.625642e-02 + 8.350000e+00 9.329779e-02 -1.153277e+01 8.650321e-02 + 8.360000e+00 -2.702450e-01 -1.154658e+01 8.686301e-02 + 8.370000e+00 -6.564063e-01 -1.156039e+01 8.721593e-02 + 8.380000e+00 -1.054043e+00 -1.157420e+01 8.744716e-02 + 8.390000e+00 -1.451351e+00 -1.158801e+01 8.748512e-02 + 8.400000e+00 -1.836238e+00 -1.160183e+01 8.732405e-02 + 8.410000e+00 -2.196723e+00 -1.161564e+01 8.702498e-02 + 8.420000e+00 -2.521366e+00 -1.162945e+01 8.669490e-02 + 8.430000e+00 -2.799690e+00 -1.164326e+01 8.645018e-02 + 8.440000e+00 -3.022590e+00 -1.165707e+01 8.637573e-02 + 8.450000e+00 -3.182695e+00 -1.167088e+01 8.649456e-02 + 8.460000e+00 -3.274671e+00 -1.168470e+01 8.675976e-02 + 8.470000e+00 -3.295447e+00 -1.169851e+01 8.707235e-02 + 8.480000e+00 -3.244348e+00 -1.171232e+01 8.731743e-02 + 8.490000e+00 -3.123134e+00 -1.172613e+01 8.740456e-02 + 8.500000e+00 -2.935929e+00 -1.173994e+01 8.729860e-02 + 8.510000e+00 -2.689061e+00 -1.175375e+01 8.703170e-02 + 8.520000e+00 -2.390808e+00 -1.176757e+01 8.669304e-02 + 8.530000e+00 -2.051063e+00 -1.178138e+01 8.639925e-02 + 8.540000e+00 -1.680950e+00 -1.179519e+01 8.625415e-02 + 8.550000e+00 -1.292393e+00 -1.180900e+01 8.631147e-02 + 8.560000e+00 -8.976655e-01 -1.182281e+01 8.655493e-02 + 8.570000e+00 -5.089507e-01 -1.183662e+01 8.690379e-02 + 8.580000e+00 -1.379157e-01 -1.185044e+01 8.724170e-02 + 8.590000e+00 2.046711e-01 -1.186425e+01 8.745698e-02 + 8.600000e+00 5.092724e-01 -1.187806e+01 8.747997e-02 + 8.610000e+00 7.678529e-01 -1.189187e+01 8.730537e-02 + 8.620000e+00 9.740860e-01 -1.190568e+01 8.699360e-02 + 8.630000e+00 1.123495e+00 -1.191949e+01 8.665084e-02 + 8.640000e+00 1.213531e+00 -1.193331e+01 8.639336e-02 + 8.650000e+00 1.243602e+00 -1.194712e+01 8.630718e-02 + 8.660000e+00 1.215045e+00 -1.196093e+01 8.641768e-02 + 8.670000e+00 1.131068e+00 -1.197474e+01 8.668092e-02 + 8.680000e+00 9.966652e-01 -1.198855e+01 8.700042e-02 + 8.690000e+00 8.184972e-01 -1.200236e+01 8.726226e-02 + 8.700000e+00 6.047687e-01 -1.201618e+01 8.737496e-02 + 8.710000e+00 3.650812e-01 -1.202999e+01 8.730014e-02 + 8.720000e+00 1.102728e-01 -1.204380e+01 8.706510e-02 + 8.730000e+00 -1.477617e-01 -1.205761e+01 8.675349e-02 + 8.740000e+00 -3.962768e-01 -1.207142e+01 8.647706e-02 + 8.750000e+00 -6.219127e-01 -1.208524e+01 8.633674e-02 + 8.760000e+00 -8.109697e-01 -1.209905e+01 8.638627e-02 + 8.770000e+00 -9.497260e-01 -1.211286e+01 8.661224e-02 + 8.780000e+00 -1.024799e+00 -1.212667e+01 8.693873e-02 + 8.790000e+00 -1.023552e+00 -1.214048e+01 8.725461e-02 + 8.800000e+00 -9.345354e-01 -1.215429e+01 8.745244e-02 + 8.810000e+00 -7.479563e-01 -1.216811e+01 8.746492e-02 + 8.820000e+00 -4.561570e-01 -1.218192e+01 8.728703e-02 + 8.830000e+00 -5.408176e-02 -1.219573e+01 8.697780e-02 + 8.840000e+00 4.602920e-01 -1.220954e+01 8.664106e-02 + 8.850000e+00 1.085586e+00 -1.222335e+01 8.639072e-02 + 8.860000e+00 1.816743e+00 -1.223716e+01 8.631117e-02 + 8.870000e+00 2.644869e+00 -1.225098e+01 8.642725e-02 + 8.880000e+00 3.557207e+00 -1.226479e+01 8.669538e-02 + 8.890000e+00 4.537280e+00 -1.227860e+01 8.701972e-02 + 8.900000e+00 5.565186e+00 -1.229241e+01 8.728657e-02 + 8.910000e+00 6.618072e+00 -1.230622e+01 8.740369e-02 + 8.920000e+00 7.670763e+00 -1.232003e+01 8.733101e-02 + 8.930000e+00 8.696530e+00 -1.233385e+01 8.709356e-02 + 8.940000e+00 9.667974e+00 -1.234766e+01 8.677302e-02 + 8.950000e+00 1.055799e+01 -1.236147e+01 8.648046e-02 + 8.960000e+00 1.134075e+01 -1.237528e+01 8.631808e-02 + 8.970000e+00 1.199270e+01 -1.238909e+01 8.634303e-02 + 8.980000e+00 1.249350e+01 -1.240290e+01 8.654665e-02 + 8.990000e+00 1.282679e+01 -1.241672e+01 8.685784e-02 + 9.000000e+00 1.298090e+01 -1.243053e+01 8.716892e-02 + 9.010000e+00 1.294932e+01 -1.244434e+01 8.737363e-02 + 9.020000e+00 1.273097e+01 -1.245815e+01 8.740326e-02 + 9.030000e+00 1.233022e+01 -1.247196e+01 8.724920e-02 + 9.040000e+00 1.175672e+01 -1.248577e+01 8.696564e-02 + 9.050000e+00 1.102496e+01 -1.249959e+01 8.665154e-02 + 9.060000e+00 1.015368e+01 -1.251340e+01 8.641715e-02 + 9.070000e+00 9.165054e+00 -1.252721e+01 8.634552e-02 + 9.080000e+00 8.083764e+00 -1.254102e+01 8.646260e-02 + 9.090000e+00 6.936027e+00 -1.255483e+01 8.672781e-02 + 9.100000e+00 5.748546e+00 -1.256864e+01 8.704891e-02 + 9.110000e+00 4.547501e+00 -1.258246e+01 8.731494e-02 + 9.120000e+00 3.357612e+00 -1.259627e+01 8.743453e-02 + 9.130000e+00 2.201315e+00 -1.261008e+01 8.736635e-02 + 9.140000e+00 1.098084e+00 -1.262389e+01 8.713241e-02 + 9.150000e+00 6.393724e-02 -1.263770e+01 8.681078e-02 + 9.160000e+00 -8.888679e-01 -1.265151e+01 8.650957e-02 + 9.170000e+00 -1.751948e+00 -1.266533e+01 8.633011e-02 + 9.180000e+00 -2.520712e+00 -1.267914e+01 8.633136e-02 + 9.190000e+00 -3.194120e+00 -1.269295e+01 8.650901e-02 + 9.200000e+00 -3.774287e+00 -1.270676e+01 8.679761e-02 + 9.210000e+00 -4.265986e+00 -1.272057e+01 8.709484e-02 + 9.220000e+00 -4.676078e+00 -1.273438e+01 8.729798e-02 + 9.230000e+00 -5.012897e+00 -1.274820e+01 8.733918e-02 + 9.240000e+00 -5.285654e+00 -1.276201e+01 8.720785e-02 + 9.250000e+00 -5.503858e+00 -1.277582e+01 8.695382e-02 + 9.260000e+00 -5.676820e+00 -1.278963e+01 8.667035e-02 + 9.270000e+00 -5.813222e+00 -1.280344e+01 8.646195e-02 + 9.280000e+00 -5.920798e+00 -1.281725e+01 8.640730e-02 + 9.290000e+00 -6.006108e+00 -1.283107e+01 8.653038e-02 + 9.300000e+00 -6.074419e+00 -1.284488e+01 8.679133e-02 + 9.310000e+00 -6.129667e+00 -1.285869e+01 8.710062e-02 + 9.320000e+00 -6.174503e+00 -1.287250e+01 8.735094e-02 + 9.330000e+00 -6.210392e+00 -1.288631e+01 8.745438e-02 + 9.340000e+00 -6.237755e+00 -1.290013e+01 8.737209e-02 + 9.350000e+00 -6.256124e+00 -1.291394e+01 8.712738e-02 + 9.360000e+00 -6.264304e+00 -1.292775e+01 8.679863e-02 + 9.370000e+00 -6.260523e+00 -1.294156e+01 8.649375e-02 + 9.380000e+00 -6.242561e+00 -1.295537e+01 8.631371e-02 + 9.390000e+00 -6.207852e+00 -1.296918e+01 8.631735e-02 + 9.400000e+00 -6.153565e+00 -1.298300e+01 8.650032e-02 + 9.410000e+00 -6.076659e+00 -1.299681e+01 8.679699e-02 + 9.420000e+00 -5.973936e+00 -1.301062e+01 8.710424e-02 + 9.430000e+00 -5.842086e+00 -1.302443e+01 8.731774e-02 + 9.440000e+00 -5.677740e+00 -1.303824e+01 8.736720e-02 + 9.450000e+00 -5.477554e+00 -1.305205e+01 8.723917e-02 + 9.460000e+00 -5.238312e+00 -1.306587e+01 8.698093e-02 + 9.470000e+00 -4.957070e+00 -1.307968e+01 8.668442e-02 + 9.480000e+00 -4.631329e+00 -1.309349e+01 8.645490e-02 + 9.490000e+00 -4.259246e+00 -1.310730e+01 8.637421e-02 + 9.500000e+00 -3.839860e+00 -1.312111e+01 8.647142e-02 + 9.510000e+00 -3.373332e+00 -1.313492e+01 8.671246e-02 + 9.520000e+00 -2.861170e+00 -1.314874e+01 8.701277e-02 + 9.530000e+00 -2.306436e+00 -1.316255e+01 8.726783e-02 + 9.540000e+00 -1.713899e+00 -1.317636e+01 8.738967e-02 + 9.550000e+00 -1.090124e+00 -1.319017e+01 8.733651e-02 + 9.560000e+00 -4.434820e-01 -1.320398e+01 8.712656e-02 + 9.570000e+00 2.159325e-01 -1.321779e+01 8.683195e-02 + 9.580000e+00 8.764886e-01 -1.323161e+01 8.655460e-02 + 9.590000e+00 1.525300e+00 -1.324542e+01 8.639119e-02 + 9.600000e+00 2.148600e+00 -1.325923e+01 8.639887e-02 + 9.610000e+00 2.732200e+00 -1.327304e+01 8.657453e-02 + 9.620000e+00 3.262001e+00 -1.328685e+01 8.685595e-02 + 9.630000e+00 3.724542e+00 -1.330066e+01 8.714429e-02 + 9.640000e+00 4.107565e+00 -1.331448e+01 8.733899e-02 + 9.650000e+00 4.400543e+00 -1.332829e+01 8.737213e-02 + 9.660000e+00 4.595165e+00 -1.334210e+01 8.723101e-02 + 9.670000e+00 4.685740e+00 -1.335591e+01 8.696239e-02 + 9.680000e+00 4.669497e+00 -1.336972e+01 8.665720e-02 + 9.690000e+00 4.546759e+00 -1.338353e+01 8.642001e-02 + 9.700000e+00 4.320990e+00 -1.339735e+01 8.633296e-02 + 9.710000e+00 3.998700e+00 -1.341116e+01 8.642649e-02 + 9.720000e+00 3.589214e+00 -1.342497e+01 8.666849e-02 + 9.730000e+00 3.104320e+00 -1.343878e+01 8.697614e-02 + 9.740000e+00 2.557813e+00 -1.345259e+01 8.724548e-02 + 9.750000e+00 1.964951e+00 -1.346640e+01 8.738734e-02 + 9.760000e+00 1.341861e+00 -1.348022e+01 8.735698e-02 + 9.770000e+00 7.049174e-01 -1.349403e+01 8.716823e-02 + 9.780000e+00 7.012748e-02 -1.350784e+01 8.688841e-02 + 9.790000e+00 -5.474493e-01 -1.352165e+01 8.661543e-02 + 9.800000e+00 -1.134219e+00 -1.353546e+01 8.644403e-02 + 9.810000e+00 -1.678491e+00 -1.354927e+01 8.643230e-02 + 9.820000e+00 -2.170806e+00 -1.356309e+01 8.658090e-02 + 9.830000e+00 -2.604164e+00 -1.357690e+01 8.683326e-02 + 9.840000e+00 -2.974131e+00 -1.359071e+01 8.709657e-02 + 9.850000e+00 -3.278823e+00 -1.360452e+01 8.727520e-02 + 9.860000e+00 -3.518798e+00 -1.361833e+01 8.730399e-02 + 9.870000e+00 -3.696842e+00 -1.363215e+01 8.717051e-02 + 9.880000e+00 -3.817675e+00 -1.364596e+01 8.691943e-02 + 9.890000e+00 -3.887602e+00 -1.365977e+01 8.663786e-02 + 9.900000e+00 -3.914115e+00 -1.367358e+01 8.642579e-02 + 9.910000e+00 -3.905480e+00 -1.368739e+01 8.636104e-02 + 9.920000e+00 -3.870320e+00 -1.370120e+01 8.647090e-02 + 9.930000e+00 -3.817203e+00 -1.371502e+01 8.672179e-02 + 9.940000e+00 -3.754274e+00 -1.372883e+01 8.703094e-02 + 9.950000e+00 -3.688918e+00 -1.374264e+01 8.729552e-02 + 9.960000e+00 -3.627475e+00 -1.375645e+01 8.742791e-02 + 9.970000e+00 -3.575013e+00 -1.377026e+01 8.738488e-02 + 9.980000e+00 -3.535158e+00 -1.378407e+01 8.718164e-02 + 9.990000e+00 -3.509989e+00 -1.379789e+01 8.688691e-02 + 1.000000e+01 -3.499993e+00 -1.381170e+01 8.660026e-02 + 1.001000e+01 -3.504072e+00 -1.382551e+01 8.641841e-02 + 1.002000e+01 -3.519616e+00 -1.383932e+01 8.640157e-02 + 1.003000e+01 -3.542627e+00 -1.385313e+01 8.655216e-02 + 1.004000e+01 -3.567881e+00 -1.386694e+01 8.681427e-02 + 1.005000e+01 -3.589155e+00 -1.388076e+01 8.709419e-02 + 1.006000e+01 -3.599469e+00 -1.389457e+01 8.729364e-02 + 1.007000e+01 -3.591385e+00 -1.390838e+01 8.734331e-02 + 1.008000e+01 -3.557318e+00 -1.392219e+01 8.722578e-02 + 1.009000e+01 -3.489873e+00 -1.393600e+01 8.698092e-02 + 1.010000e+01 -3.382189e+00 -1.394981e+01 8.669241e-02 + 1.011000e+01 -3.228289e+00 -1.396363e+01 8.645935e-02 + 1.012000e+01 -3.023408e+00 -1.397744e+01 8.636177e-02 + 1.013000e+01 -2.764303e+00 -1.399125e+01 8.643218e-02 + 1.014000e+01 -2.449523e+00 -1.400506e+01 8.664393e-02 + 1.015000e+01 -2.079619e+00 -1.401887e+01 8.692128e-02 + 1.016000e+01 -1.657294e+00 -1.403268e+01 8.716681e-02 + 1.017000e+01 -1.187470e+00 -1.404650e+01 8.729563e-02 + 1.018000e+01 -6.772696e-01 -1.406031e+01 8.726425e-02 + 1.019000e+01 -1.358937e-01 -1.407412e+01 8.708504e-02 + 1.020000e+01 4.255869e-01 -1.408793e+01 8.682200e-02 + 1.021000e+01 9.945439e-01 -1.410174e+01 8.656929e-02 + 1.022000e+01 1.557189e+00 -1.411555e+01 8.641868e-02 + 1.023000e+01 2.099047e+00 -1.412937e+01 8.642691e-02 + 1.024000e+01 2.605490e+00 -1.414318e+01 8.659488e-02 + 1.025000e+01 3.062306e+00 -1.415699e+01 8.686709e-02 + 1.026000e+01 3.456283e+00 -1.417080e+01 8.715138e-02 + 1.027000e+01 3.775775e+00 -1.418461e+01 8.735130e-02 + 1.028000e+01 4.011229e+00 -1.419842e+01 8.739897e-02 + 1.029000e+01 4.155640e+00 -1.421224e+01 8.727770e-02 + 1.030000e+01 4.204914e+00 -1.422605e+01 8.702751e-02 + 1.031000e+01 4.158113e+00 -1.423986e+01 8.673214e-02 + 1.032000e+01 4.017568e+00 -1.425367e+01 8.649118e-02 + 1.033000e+01 3.788855e+00 -1.426748e+01 8.638585e-02 + 1.034000e+01 3.480622e+00 -1.428129e+01 8.645047e-02 + 1.035000e+01 3.104278e+00 -1.429511e+01 8.666030e-02 + 1.036000e+01 2.673553e+00 -1.430892e+01 8.694084e-02 + 1.037000e+01 2.203951e+00 -1.432273e+01 8.719458e-02 + 1.038000e+01 1.712118e+00 -1.433654e+01 8.733498e-02 + 1.039000e+01 1.215153e+00 -1.435035e+01 8.731546e-02 + 1.040000e+01 7.298949e-01 -1.436417e+01 8.714454e-02 + 1.041000e+01 2.722260e-01 -1.437798e+01 8.688261e-02 + 1.042000e+01 -1.435834e-01 -1.439179e+01 8.662157e-02 + 1.043000e+01 -5.054535e-01 -1.440560e+01 8.645317e-02 + 1.044000e+01 -8.039674e-01 -1.441941e+01 8.643676e-02 + 1.045000e+01 -1.032717e+00 -1.443322e+01 8.657798e-02 + 1.046000e+01 -1.188507e+00 -1.444704e+01 8.682686e-02 + 1.047000e+01 -1.271401e+00 -1.446085e+01 8.709613e-02 + 1.048000e+01 -1.284622e+00 -1.447466e+01 8.729218e-02 + 1.049000e+01 -1.234299e+00 -1.448847e+01 8.734732e-02 + 1.050000e+01 -1.129080e+00 -1.450228e+01 8.724243e-02 + 1.051000e+01 -9.796357e-01 -1.451609e+01 8.701305e-02 + 1.052000e+01 -7.980667e-01 -1.452991e+01 8.673757e-02 + 1.053000e+01 -5.972583e-01 -1.454372e+01 8.651054e-02 + 1.054000e+01 -3.902032e-01 -1.455753e+01 8.640985e-02 + 1.055000e+01 -1.893300e-01 -1.457134e+01 8.646890e-02 + 1.056000e+01 -5.868969e-03 -1.458515e+01 8.666457e-02 + 1.057000e+01 1.507162e-01 -1.459896e+01 8.692576e-02 + 1.058000e+01 2.732033e-01 -1.461278e+01 8.715906e-02 + 1.059000e+01 3.569721e-01 -1.462659e+01 8.728155e-02 + 1.060000e+01 4.002350e-01 -1.464040e+01 8.724917e-02 + 1.061000e+01 4.041267e-01 -1.465421e+01 8.707157e-02 + 1.062000e+01 3.726514e-01 -1.466802e+01 8.680913e-02 + 1.063000e+01 3.124882e-01 -1.468183e+01 8.655297e-02 + 1.064000e+01 2.326669e-01 -1.469565e+01 8.639387e-02 + 1.065000e+01 1.441274e-01 -1.470946e+01 8.639026e-02 + 1.066000e+01 5.918253e-02 -1.472327e+01 8.654709e-02 + 1.067000e+01 -9.089408e-03 -1.473708e+01 8.681372e-02 + 1.068000e+01 -4.749838e-02 -1.475089e+01 8.710195e-02 + 1.069000e+01 -4.341128e-02 -1.476470e+01 8.731675e-02 + 1.070000e+01 1.459279e-02 -1.477852e+01 8.738842e-02 + 1.071000e+01 1.361100e-01 -1.479233e+01 8.729542e-02 + 1.072000e+01 3.283693e-01 -1.480614e+01 8.707112e-02 + 1.073000e+01 5.957845e-01 -1.481995e+01 8.679261e-02 + 1.074000e+01 9.396214e-01 -1.483376e+01 8.655478e-02 + 1.075000e+01 1.357797e+00 -1.484757e+01 8.643778e-02 + 1.076000e+01 1.844820e+00 -1.486139e+01 8.647898e-02 + 1.077000e+01 2.391879e+00 -1.487520e+01 8.665995e-02 + 1.078000e+01 2.987079e+00 -1.488901e+01 8.691370e-02 + 1.079000e+01 3.615810e+00 -1.490282e+01 8.714917e-02 + 1.080000e+01 4.261249e+00 -1.491663e+01 8.728329e-02 + 1.081000e+01 4.904966e+00 -1.493044e+01 8.726934e-02 + 1.082000e+01 5.527609e+00 -1.494426e+01 8.711234e-02 + 1.083000e+01 6.109646e+00 -1.495807e+01 8.686715e-02 + 1.084000e+01 6.632134e+00 -1.497188e+01 8.661987e-02 + 1.085000e+01 7.077476e+00 -1.498569e+01 8.645806e-02 + 1.086000e+01 7.430133e+00 -1.499950e+01 8.643983e-02 + 1.087000e+01 7.677269e+00 -1.501331e+01 8.657274e-02 + 1.088000e+01 7.809287e+00 -1.502713e+01 8.681111e-02 + 1.089000e+01 7.820243e+00 -1.504094e+01 8.707253e-02 + 1.090000e+01 7.708102e+00 -1.505475e+01 8.726713e-02 + 1.091000e+01 7.474844e+00 -1.506856e+01 8.732861e-02 + 1.092000e+01 7.126393e+00 -1.508237e+01 8.723654e-02 + 1.093000e+01 6.672383e+00 -1.509619e+01 8.702312e-02 + 1.094000e+01 6.125769e+00 -1.511000e+01 8.676251e-02 + 1.095000e+01 5.502291e+00 -1.512381e+01 8.654572e-02 + 1.096000e+01 4.819826e+00 -1.513762e+01 8.644903e-02 + 1.097000e+01 4.097651e+00 -1.515143e+01 8.650673e-02 + 1.098000e+01 3.355657e+00 -1.516524e+01 8.669867e-02 + 1.099000e+01 2.613538e+00 -1.517906e+01 8.695747e-02 + 1.100000e+01 1.890007e+00 -1.519287e+01 8.719265e-02 + 1.101000e+01 1.202072e+00 -1.520668e+01 8.732212e-02 + 1.102000e+01 5.644048e-01 -1.522049e+01 8.730016e-02 + 1.103000e+01 -1.117578e-02 -1.523430e+01 8.713260e-02 + 1.104000e+01 -5.160635e-01 -1.524811e+01 8.687511e-02 + 1.105000e+01 -9.450700e-01 -1.526193e+01 8.661474e-02 + 1.106000e+01 -1.296459e+00 -1.527574e+01 8.644044e-02 + 1.107000e+01 -1.571811e+00 -1.528955e+01 8.641206e-02 + 1.108000e+01 -1.775734e+00 -1.530336e+01 8.653895e-02 + 1.109000e+01 -1.915430e+00 -1.531717e+01 8.677666e-02 + 1.110000e+01 -2.000150e+00 -1.533098e+01 8.704302e-02 + 1.111000e+01 -2.040561e+00 -1.534480e+01 8.724705e-02 + 1.112000e+01 -2.048072e+00 -1.535861e+01 8.732011e-02 + 1.113000e+01 -2.034146e+00 -1.537242e+01 8.723861e-02 + 1.114000e+01 -2.009629e+00 -1.538623e+01 8.703151e-02 + 1.115000e+01 -1.984157e+00 -1.540004e+01 8.677052e-02 + 1.116000e+01 -1.965642e+00 -1.541385e+01 8.654577e-02 + 1.117000e+01 -1.959882e+00 -1.542767e+01 8.643477e-02 + 1.118000e+01 -1.970309e+00 -1.544148e+01 8.647500e-02 + 1.119000e+01 -1.997881e+00 -1.545529e+01 8.665064e-02 + 1.120000e+01 -2.041129e+00 -1.546910e+01 8.689860e-02 + 1.121000e+01 -2.096343e+00 -1.548291e+01 8.713137e-02 + 1.122000e+01 -2.157899e+00 -1.549672e+01 8.726780e-02 + 1.123000e+01 -2.218678e+00 -1.551054e+01 8.726082e-02 + 1.124000e+01 -2.270590e+00 -1.552435e+01 8.711302e-02 + 1.125000e+01 -2.305135e+00 -1.553816e+01 8.687573e-02 + 1.126000e+01 -2.313987e+00 -1.555197e+01 8.663170e-02 + 1.127000e+01 -2.289573e+00 -1.556578e+01 8.646671e-02 + 1.128000e+01 -2.225594e+00 -1.557959e+01 8.643942e-02 + 1.129000e+01 -2.117479e+00 -1.559341e+01 8.656027e-02 + 1.130000e+01 -1.962742e+00 -1.560722e+01 8.678773e-02 + 1.131000e+01 -1.761217e+00 -1.562103e+01 8.704332e-02 + 1.132000e+01 -1.515167e+00 -1.563484e+01 8.723945e-02 + 1.133000e+01 -1.229262e+00 -1.564865e+01 8.730965e-02 + 1.134000e+01 -9.104208e-01 -1.566246e+01 8.723088e-02 + 1.135000e+01 -5.675403e-01 -1.567628e+01 8.703110e-02 + 1.136000e+01 -2.111127e-01 -1.569009e+01 8.677987e-02 + 1.137000e+01 1.472366e-01 -1.570390e+01 8.656488e-02 + 1.138000e+01 4.952728e-01 -1.571771e+01 8.646148e-02 + 1.139000e+01 8.207056e-01 -1.573152e+01 8.650596e-02 + 1.140000e+01 1.111748e+00 -1.574533e+01 8.668240e-02 + 1.141000e+01 1.357647e+00 -1.575915e+01 8.692850e-02 + 1.142000e+01 1.549171e+00 -1.577296e+01 8.715797e-02 + 1.143000e+01 1.679013e+00 -1.578677e+01 8.729070e-02 + 1.144000e+01 1.742111e+00 -1.580058e+01 8.728018e-02 + 1.145000e+01 1.735857e+00 -1.581439e+01 8.712905e-02 + 1.146000e+01 1.660190e+00 -1.582820e+01 8.688833e-02 + 1.147000e+01 1.517580e+00 -1.584202e+01 8.664048e-02 + 1.148000e+01 1.312886e+00 -1.585583e+01 8.647135e-02 + 1.149000e+01 1.053117e+00 -1.586964e+01 8.644017e-02 + 1.150000e+01 7.471025e-01 -1.588345e+01 8.655827e-02 + 1.151000e+01 4.050765e-01 -1.589726e+01 8.678499e-02 + 1.152000e+01 3.822206e-02 -1.591108e+01 8.704223e-02 + 1.153000e+01 -3.418258e-01 -1.592489e+01 8.724198e-02 + 1.154000e+01 -7.234805e-01 -1.593870e+01 8.731646e-02 + 1.155000e+01 -1.095689e+00 -1.595251e+01 8.724078e-02 + 1.156000e+01 -1.448379e+00 -1.596632e+01 8.704099e-02 + 1.157000e+01 -1.772845e+00 -1.598013e+01 8.678539e-02 + 1.158000e+01 -2.062066e+00 -1.599395e+01 8.656163e-02 + 1.159000e+01 -2.310919e+00 -1.600776e+01 8.644656e-02 + 1.160000e+01 -2.516314e+00 -1.602157e+01 8.647927e-02 + 1.161000e+01 -2.677205e+00 -1.603538e+01 8.664723e-02 + 1.162000e+01 -2.794523e+00 -1.604919e+01 8.689108e-02 + 1.163000e+01 -2.870991e+00 -1.606300e+01 8.712607e-02 + 1.164000e+01 -2.910869e+00 -1.607682e+01 8.727177e-02 + 1.165000e+01 -2.919626e+00 -1.609063e+01 8.727937e-02 + 1.166000e+01 -2.903548e+00 -1.610444e+01 8.714783e-02 + 1.167000e+01 -2.869334e+00 -1.611825e+01 8.692387e-02 + 1.168000e+01 -2.823663e+00 -1.613206e+01 8.668616e-02 + 1.169000e+01 -2.772784e+00 -1.614587e+01 8.651824e-02 + 1.170000e+01 -2.722144e+00 -1.615969e+01 8.647921e-02 + 1.171000e+01 -2.676059e+00 -1.617350e+01 8.658254e-02 + 1.172000e+01 -2.637473e+00 -1.618731e+01 8.679125e-02 + 1.173000e+01 -2.607795e+00 -1.620112e+01 8.703142e-02 + 1.174000e+01 -2.586832e+00 -1.621493e+01 8.721852e-02 + 1.175000e+01 -2.572831e+00 -1.622874e+01 8.728674e-02 + 1.176000e+01 -2.562607e+00 -1.624256e+01 8.721136e-02 + 1.177000e+01 -2.551775e+00 -1.625637e+01 8.701698e-02 + 1.178000e+01 -2.535058e+00 -1.627018e+01 8.676945e-02 + 1.179000e+01 -2.506656e+00 -1.628399e+01 8.655367e-02 + 1.180000e+01 -2.460660e+00 -1.629780e+01 8.644429e-02 + 1.181000e+01 -2.391487e+00 -1.631161e+01 8.647926e-02 + 1.182000e+01 -2.294308e+00 -1.632543e+01 8.664617e-02 + 1.183000e+01 -2.165445e+00 -1.633924e+01 8.688672e-02 + 1.184000e+01 -2.002710e+00 -1.635305e+01 8.711760e-02 + 1.185000e+01 -1.805678e+00 -1.636686e+01 8.725964e-02 + 1.186000e+01 -1.575853e+00 -1.638067e+01 8.726476e-02 + 1.187000e+01 -1.316743e+00 -1.639448e+01 8.713197e-02 + 1.188000e+01 -1.033807e+00 -1.640830e+01 8.690762e-02 + 1.189000e+01 -7.343041e-01 -1.642211e+01 8.666991e-02 + 1.190000e+01 -4.270274e-01 -1.643592e+01 8.650215e-02 + 1.191000e+01 -1.219464e-01 -1.644973e+01 8.646365e-02 + 1.192000e+01 1.702256e-01 -1.646354e+01 8.656845e-02 + 1.193000e+01 4.385179e-01 -1.647735e+01 8.678025e-02 + 1.194000e+01 6.722155e-01 -1.649117e+01 8.702549e-02 + 1.195000e+01 8.613718e-01 -1.650498e+01 8.721939e-02 + 1.196000e+01 9.972917e-01 -1.651879e+01 8.729525e-02 + 1.197000e+01 1.072960e+00 -1.653260e+01 8.722691e-02 + 1.198000e+01 1.083388e+00 -1.654641e+01 8.703750e-02 + 1.199000e+01 1.025863e+00 -1.656022e+01 8.679182e-02 + 1.200000e+01 9.000883e-01 -1.657404e+01 8.657464e-02 + 1.201000e+01 7.081926e-01 -1.658785e+01 8.646157e-02 + 1.202000e+01 4.546330e-01 -1.660166e+01 8.649249e-02 + 1.203000e+01 1.459752e-01 -1.661547e+01 8.665720e-02 + 1.204000e+01 -2.094234e-01 -1.662928e+01 8.689918e-02 + 1.205000e+01 -6.018116e-01 -1.664310e+01 8.713577e-02 + 1.206000e+01 -1.020500e+00 -1.665691e+01 8.728698e-02 + 1.207000e+01 -1.454349e+00 -1.667072e+01 8.730257e-02 + 1.208000e+01 -1.892254e+00 -1.668453e+01 8.717861e-02 + 1.209000e+01 -2.323611e+00 -1.669834e+01 8.695856e-02 + 1.210000e+01 -2.738726e+00 -1.671215e+01 8.671861e-02 + 1.211000e+01 -3.129152e+00 -1.672597e+01 8.654174e-02 + 1.212000e+01 -3.487930e+00 -1.673978e+01 8.648877e-02 + 1.213000e+01 -3.809734e+00 -1.675359e+01 8.657682e-02 + 1.214000e+01 -4.090900e+00 -1.676740e+01 8.677324e-02 + 1.215000e+01 -4.329355e+00 -1.678121e+01 8.700753e-02 + 1.216000e+01 -4.524443e+00 -1.679502e+01 8.719647e-02 + 1.217000e+01 -4.676680e+00 -1.680884e+01 8.727295e-02 + 1.218000e+01 -4.787434e+00 -1.682265e+01 8.720863e-02 + 1.219000e+01 -4.858581e+00 -1.683646e+01 8.702334e-02 + 1.220000e+01 -4.892147e+00 -1.685027e+01 8.677848e-02 + 1.221000e+01 -4.889964e+00 -1.686408e+01 8.655639e-02 + 1.222000e+01 -4.853374e+00 -1.687789e+01 8.643217e-02 + 1.223000e+01 -4.782995e+00 -1.689171e+01 8.644725e-02 + 1.224000e+01 -4.678572e+00 -1.690552e+01 8.659482e-02 + 1.225000e+01 -4.538928e+00 -1.691933e+01 8.682247e-02 + 1.226000e+01 -4.362009e+00 -1.693314e+01 8.705119e-02 + 1.227000e+01 -4.145042e+00 -1.694695e+01 8.720315e-02 + 1.228000e+01 -3.884773e+00 -1.696076e+01 8.722833e-02 + 1.229000e+01 -3.577793e+00 -1.697458e+01 8.712105e-02 + 1.230000e+01 -3.220920e+00 -1.698839e+01 8.692162e-02 + 1.231000e+01 -2.811608e+00 -1.700220e+01 8.670249e-02 + 1.232000e+01 -2.348369e+00 -1.701601e+01 8.654327e-02 + 1.233000e+01 -1.831168e+00 -1.702982e+01 8.650268e-02 + 1.234000e+01 -1.261761e+00 -1.704363e+01 8.659741e-02 + 1.235000e+01 -6.439623e-01 -1.705745e+01 8.679596e-02 + 1.236000e+01 1.619533e-02 -1.707126e+01 8.702998e-02 + 1.237000e+01 7.104125e-01 -1.708507e+01 8.721853e-02 + 1.238000e+01 1.428205e+00 -1.709888e+01 8.729621e-02 + 1.239000e+01 2.157113e+00 -1.711269e+01 8.723538e-02 + 1.240000e+01 2.883035e+00 -1.712650e+01 8.705554e-02 + 1.241000e+01 3.590672e+00 -1.714032e+01 8.681702e-02 + 1.242000e+01 4.264062e+00 -1.715413e+01 8.660088e-02 + 1.243000e+01 4.887185e+00 -1.716794e+01 8.648117e-02 + 1.244000e+01 5.444599e+00 -1.718175e+01 8.649889e-02 + 1.245000e+01 5.922081e+00 -1.719556e+01 8.664741e-02 + 1.246000e+01 6.307240e+00 -1.720937e+01 8.687486e-02 + 1.247000e+01 6.590063e+00 -1.722319e+01 8.710268e-02 + 1.248000e+01 6.763375e+00 -1.723700e+01 8.725305e-02 + 1.249000e+01 6.823174e+00 -1.725081e+01 8.727533e-02 + 1.250000e+01 6.768833e+00 -1.726462e+01 8.716280e-02 + 1.251000e+01 6.603155e+00 -1.727843e+01 8.695464e-02 + 1.252000e+01 6.332272e+00 -1.729224e+01 8.672268e-02 + 1.253000e+01 5.965397e+00 -1.730606e+01 8.654691e-02 + 1.254000e+01 5.514443e+00 -1.731987e+01 8.648757e-02 + 1.255000e+01 4.993524e+00 -1.733368e+01 8.656378e-02 + 1.256000e+01 4.418364e+00 -1.734749e+01 8.674682e-02 + 1.257000e+01 3.805654e+00 -1.736130e+01 8.697064e-02 + 1.258000e+01 3.172377e+00 -1.737512e+01 8.715550e-02 + 1.259000e+01 2.535149e+00 -1.738893e+01 8.723579e-02 + 1.260000e+01 1.909600e+00 -1.740274e+01 8.718240e-02 + 1.261000e+01 1.309839e+00 -1.741655e+01 8.701253e-02 + 1.262000e+01 7.480110e-01 -1.743036e+01 8.678406e-02 + 1.263000e+01 2.339870e-01 -1.744417e+01 8.657617e-02 + 1.264000e+01 -2.248141e-01 -1.745799e+01 8.646206e-02 + 1.265000e+01 -6.234624e-01 -1.747180e+01 8.648318e-02 + 1.266000e+01 -9.594159e-01 -1.748561e+01 8.663426e-02 + 1.267000e+01 -1.232294e+00 -1.749942e+01 8.686518e-02 + 1.268000e+01 -1.443546e+00 -1.751323e+01 8.709868e-02 + 1.269000e+01 -1.596039e+00 -1.752704e+01 8.725726e-02 + 1.270000e+01 -1.693595e+00 -1.754086e+01 8.728943e-02 + 1.271000e+01 -1.740512e+00 -1.755467e+01 8.718665e-02 + 1.272000e+01 -1.741106e+00 -1.756848e+01 8.698587e-02 + 1.273000e+01 -1.699295e+00 -1.758229e+01 8.675708e-02 + 1.274000e+01 -1.618267e+00 -1.759610e+01 8.657944e-02 + 1.275000e+01 -1.500248e+00 -1.760991e+01 8.651388e-02 + 1.276000e+01 -1.346380e+00 -1.762373e+01 8.658162e-02 + 1.277000e+01 -1.156738e+00 -1.763754e+01 8.675681e-02 + 1.278000e+01 -9.304549e-01 -1.765135e+01 8.697617e-02 + 1.279000e+01 -6.659689e-01 -1.766516e+01 8.716167e-02 + 1.280000e+01 -3.613674e-01 -1.767897e+01 8.724787e-02 + 1.281000e+01 -1.479615e-02 -1.769278e+01 8.720413e-02 + 1.282000e+01 3.750883e-01 -1.770660e+01 8.704486e-02 + 1.283000e+01 8.086627e-01 -1.772041e+01 8.682463e-02 + 1.284000e+01 1.284911e+00 -1.773422e+01 8.661965e-02 + 1.285000e+01 1.801066e+00 -1.774803e+01 8.650142e-02 + 1.286000e+01 2.352344e+00 -1.776184e+01 8.651145e-02 + 1.287000e+01 2.931804e+00 -1.777565e+01 8.664630e-02 + 1.288000e+01 3.530348e+00 -1.778947e+01 8.685881e-02 + 1.289000e+01 4.136866e+00 -1.780328e+01 8.707494e-02 + 1.290000e+01 4.738538e+00 -1.781709e+01 8.721979e-02 + 1.291000e+01 5.321262e+00 -1.783090e+01 8.724332e-02 + 1.292000e+01 5.870205e+00 -1.784471e+01 8.713713e-02 + 1.293000e+01 6.370443e+00 -1.785852e+01 8.693730e-02 + 1.294000e+01 6.807651e+00 -1.787234e+01 8.671240e-02 + 1.295000e+01 7.168799e+00 -1.788615e+01 8.654021e-02 + 1.296000e+01 7.442828e+00 -1.789996e+01 8.648076e-02 + 1.297000e+01 7.621238e+00 -1.791377e+01 8.655504e-02 + 1.298000e+01 7.698580e+00 -1.792758e+01 8.673754e-02 + 1.299000e+01 7.672791e+00 -1.794139e+01 8.696542e-02 + 1.300000e+01 7.545364e+00 -1.795521e+01 8.716080e-02 + 1.301000e+01 7.321336e+00 -1.796902e+01 8.725769e-02 + 1.302000e+01 7.009091e+00 -1.798283e+01 8.722421e-02 + 1.303000e+01 6.619978e+00 -1.799664e+01 8.707300e-02 + 1.304000e+01 6.167776e+00 -1.801045e+01 8.685689e-02 + 1.305000e+01 5.668028e+00 -1.802426e+01 8.665092e-02 + 1.306000e+01 5.137281e+00 -1.803808e+01 8.652655e-02 + 1.307000e+01 4.592276e+00 -1.805189e+01 8.652657e-02 + 1.308000e+01 4.049143e+00 -1.806570e+01 8.664985e-02 + 1.309000e+01 3.522635e+00 -1.807951e+01 8.685195e-02 + 1.310000e+01 3.025452e+00 -1.809332e+01 8.706123e-02 + 1.311000e+01 2.567700e+00 -1.810714e+01 8.720411e-02 + 1.312000e+01 2.156499e+00 -1.812095e+01 8.723055e-02 + 1.313000e+01 1.795783e+00 -1.813476e+01 8.713085e-02 + 1.314000e+01 1.486275e+00 -1.814857e+01 8.693898e-02 + 1.315000e+01 1.225663e+00 -1.816238e+01 8.672112e-02 + 1.316000e+01 1.008933e+00 -1.817619e+01 8.655317e-02 + 1.317000e+01 8.288618e-01 -1.819001e+01 8.649430e-02 + 1.318000e+01 6.766120e-01 -1.820382e+01 8.656584e-02 + 1.319000e+01 5.424062e-01 -1.821763e+01 8.674359e-02 + 1.320000e+01 4.162247e-01 -1.823144e+01 8.696646e-02 + 1.321000e+01 2.884859e-01 -1.824525e+01 8.715806e-02 + 1.322000e+01 1.506670e-01 -1.825906e+01 8.725317e-02 + 1.323000e+01 -4.176142e-03 -1.827288e+01 8.721970e-02 + 1.324000e+01 -1.810185e-01 -1.828669e+01 8.706934e-02 + 1.325000e+01 -3.826260e-01 -1.830050e+01 8.685354e-02 + 1.326000e+01 -6.094786e-01 -1.831431e+01 8.664622e-02 + 1.327000e+01 -8.598531e-01 -1.832812e+01 8.651835e-02 + 1.328000e+01 -1.130056e+00 -1.834193e+01 8.651319e-02 + 1.329000e+01 -1.414786e+00 -1.835575e+01 8.663091e-02 + 1.330000e+01 -1.707590e+00 -1.836956e+01 8.682878e-02 + 1.331000e+01 -2.001388e+00 -1.838337e+01 8.703661e-02 + 1.332000e+01 -2.289020e+00 -1.839718e+01 8.718159e-02 + 1.333000e+01 -2.563773e+00 -1.841099e+01 8.721341e-02 + 1.334000e+01 -2.819863e+00 -1.842480e+01 8.712116e-02 + 1.335000e+01 -3.052826e+00 -1.843862e+01 8.693697e-02 + 1.336000e+01 -3.259805e+00 -1.845243e+01 8.672516e-02 + 1.337000e+01 -3.439707e+00 -1.846624e+01 8.656022e-02 + 1.338000e+01 -3.593226e+00 -1.848005e+01 8.650086e-02 + 1.339000e+01 -3.722743e+00 -1.849386e+01 8.656903e-02 + 1.340000e+01 -3.832096e+00 -1.850767e+01 8.674195e-02 + 1.341000e+01 -3.926265e+00 -1.852149e+01 8.696027e-02 + 1.342000e+01 -4.010981e+00 -1.853530e+01 8.714905e-02 + 1.343000e+01 -4.092286e+00 -1.854911e+01 8.724376e-02 + 1.344000e+01 -4.176105e+00 -1.856292e+01 8.721219e-02 + 1.345000e+01 -4.267821e+00 -1.857673e+01 8.706518e-02 + 1.346000e+01 -4.371916e+00 -1.859054e+01 8.685304e-02 + 1.347000e+01 -4.491687e+00 -1.860436e+01 8.664868e-02 + 1.348000e+01 -4.629050e+00 -1.861817e+01 8.652270e-02 + 1.349000e+01 -4.784448e+00 -1.863198e+01 8.651870e-02 + 1.350000e+01 -4.956864e+00 -1.864579e+01 8.663784e-02 + 1.351000e+01 -5.143928e+00 -1.865960e+01 8.683855e-02 + 1.352000e+01 -5.342101e+00 -1.867341e+01 8.705148e-02 + 1.353000e+01 -5.546924e+00 -1.868723e+01 8.720391e-02 + 1.354000e+01 -5.753306e+00 -1.870104e+01 8.724463e-02 + 1.355000e+01 -5.955817e+00 -1.871485e+01 8.716110e-02 + 1.356000e+01 -6.148971e+00 -1.872866e+01 8.698342e-02 + 1.357000e+01 -6.327478e+00 -1.874247e+01 8.677405e-02 + 1.358000e+01 -6.486436e+00 -1.875628e+01 8.660648e-02 + 1.359000e+01 -6.621461e+00 -1.877010e+01 8.653958e-02 + 1.360000e+01 -6.728749e+00 -1.878391e+01 8.659674e-02 + 1.361000e+01 -6.805065e+00 -1.879772e+01 8.675746e-02 + 1.362000e+01 -6.847679e+00 -1.881153e+01 8.696484e-02 + 1.363000e+01 -6.854252e+00 -1.882534e+01 8.714585e-02 + 1.364000e+01 -6.822699e+00 -1.883915e+01 8.723680e-02 + 1.365000e+01 -6.751047e+00 -1.885297e+01 8.720513e-02 + 1.366000e+01 -6.637312e+00 -1.886678e+01 8.706033e-02 + 1.367000e+01 -6.479411e+00 -1.888059e+01 8.685082e-02 + 1.368000e+01 -6.275138e+00 -1.889440e+01 8.664769e-02 + 1.369000e+01 -6.022197e+00 -1.890821e+01 8.652037e-02 + 1.370000e+01 -5.718318e+00 -1.892203e+01 8.651225e-02 + 1.371000e+01 -5.361436e+00 -1.893584e+01 8.662527e-02 + 1.372000e+01 -4.949941e+00 -1.894965e+01 8.681930e-02 + 1.373000e+01 -4.482964e+00 -1.896346e+01 8.702647e-02 + 1.374000e+01 -3.960701e+00 -1.897727e+01 8.717513e-02 + 1.375000e+01 -3.384724e+00 -1.899108e+01 8.721440e-02 + 1.376000e+01 -2.758268e+00 -1.900490e+01 8.713130e-02 + 1.377000e+01 -2.086466e+00 -1.901871e+01 8.695496e-02 + 1.378000e+01 -1.376492e+00 -1.903252e+01 8.674677e-02 + 1.379000e+01 -6.376060e-01 -1.904633e+01 8.657948e-02 + 1.380000e+01 1.189154e-01 -1.906014e+01 8.651187e-02 + 1.381000e+01 8.799825e-01 -1.907395e+01 8.656795e-02 + 1.382000e+01 1.631013e+00 -1.908777e+01 8.672833e-02 + 1.383000e+01 2.356368e+00 -1.910158e+01 8.693729e-02 + 1.384000e+01 3.039881e+00 -1.911539e+01 8.712256e-02 + 1.385000e+01 3.665462e+00 -1.912920e+01 8.722057e-02 + 1.386000e+01 4.217727e+00 -1.914301e+01 8.719805e-02 + 1.387000e+01 4.682640e+00 -1.915682e+01 8.706323e-02 + 1.388000e+01 5.048115e+00 -1.917064e+01 8.686301e-02 + 1.389000e+01 5.304554e+00 -1.918445e+01 8.666718e-02 + 1.390000e+01 5.445279e+00 -1.919826e+01 8.654443e-02 + 1.391000e+01 5.466843e+00 -1.921207e+01 8.653820e-02 + 1.392000e+01 5.369194e+00 -1.922588e+01 8.665117e-02 + 1.393000e+01 5.155694e+00 -1.923969e+01 8.684424e-02 + 1.394000e+01 4.832977e+00 -1.925351e+01 8.705052e-02 + 1.395000e+01 4.410678e+00 -1.926732e+01 8.719880e-02 + 1.396000e+01 3.901022e+00 -1.928113e+01 8.723803e-02 + 1.397000e+01 3.318331e+00 -1.929494e+01 8.715449e-02 + 1.398000e+01 2.678455e+00 -1.930875e+01 8.697640e-02 + 1.399000e+01 1.998167e+00 -1.932256e+01 8.676445e-02 + 1.400000e+01 1.294562e+00 -1.933638e+01 8.659131e-02 + 1.401000e+01 5.844846e-01 -1.935019e+01 8.651647e-02 + 1.402000e+01 -1.159802e-01 -1.936400e+01 8.656534e-02 + 1.403000e+01 -7.919358e-01 -1.937781e+01 8.672021e-02 + 1.404000e+01 -1.430003e+00 -1.939162e+01 8.692668e-02 + 1.405000e+01 -2.018545e+00 -1.940543e+01 8.711310e-02 + 1.406000e+01 -2.547779e+00 -1.941925e+01 8.721543e-02 + 1.407000e+01 -3.009802e+00 -1.943306e+01 8.719908e-02 + 1.408000e+01 -3.398520e+00 -1.944687e+01 8.707031e-02 + 1.409000e+01 -3.709518e+00 -1.946068e+01 8.687410e-02 + 1.410000e+01 -3.939893e+00 -1.947449e+01 8.667883e-02 + 1.411000e+01 -4.088053e+00 -1.948830e+01 8.655280e-02 + 1.412000e+01 -4.153539e+00 -1.950212e+01 8.654022e-02 + 1.413000e+01 -4.136856e+00 -1.951593e+01 8.664544e-02 + 1.414000e+01 -4.039348e+00 -1.952974e+01 8.683144e-02 + 1.415000e+01 -3.863122e+00 -1.954355e+01 8.703311e-02 + 1.416000e+01 -3.611024e+00 -1.955736e+01 8.718022e-02 + 1.417000e+01 -3.286660e+00 -1.957117e+01 8.722168e-02 + 1.418000e+01 -2.894460e+00 -1.958499e+01 8.714281e-02 + 1.419000e+01 -2.439767e+00 -1.959880e+01 8.697027e-02 + 1.420000e+01 -1.928925e+00 -1.961261e+01 8.676321e-02 + 1.421000e+01 -1.369369e+00 -1.962642e+01 8.659313e-02 + 1.422000e+01 -7.696641e-01 -1.964023e+01 8.651919e-02 + 1.423000e+01 -1.395087e-01 -1.965405e+01 8.656721e-02 + 1.424000e+01 5.103362e-01 -1.966786e+01 8.672041e-02 + 1.425000e+01 1.168189e+00 -1.968167e+01 8.692539e-02 + 1.426000e+01 1.821671e+00 -1.969548e+01 8.711108e-02 + 1.427000e+01 2.457998e+00 -1.970929e+01 8.721334e-02 + 1.428000e+01 3.064343e+00 -1.972310e+01 8.719685e-02 + 1.429000e+01 3.628244e+00 -1.973692e+01 8.706682e-02 + 1.430000e+01 4.138038e+00 -1.975073e+01 8.686730e-02 + 1.431000e+01 4.583296e+00 -1.976454e+01 8.666640e-02 + 1.432000e+01 4.955240e+00 -1.977835e+01 8.653308e-02 + 1.433000e+01 5.247099e+00 -1.979216e+01 8.651313e-02 + 1.434000e+01 5.454396e+00 -1.980597e+01 8.661301e-02 + 1.435000e+01 5.575138e+00 -1.981979e+01 8.679766e-02 + 1.436000e+01 5.609900e+00 -1.983360e+01 8.700313e-02 + 1.437000e+01 5.561781e+00 -1.984741e+01 8.715912e-02 + 1.438000e+01 5.436253e+00 -1.986122e+01 8.721313e-02 + 1.439000e+01 5.240895e+00 -1.987503e+01 8.714810e-02 + 1.440000e+01 4.985026e+00 -1.988884e+01 8.698788e-02 + 1.441000e+01 4.679273e+00 -1.990266e+01 8.678910e-02 + 1.442000e+01 4.335075e+00 -1.991647e+01 8.662183e-02 + 1.443000e+01 3.964178e+00 -1.993028e+01 8.654520e-02 + 1.444000e+01 3.578123e+00 -1.994409e+01 8.658651e-02 + 1.445000e+01 3.187783e+00 -1.995790e+01 8.673150e-02 + 1.446000e+01 2.802954e+00 -1.997171e+01 8.692952e-02 + 1.447000e+01 2.432023e+00 -1.998553e+01 8.711160e-02 + 1.448000e+01 2.081747e+00 -1.999934e+01 8.721460e-02 + 1.449000e+01 1.757120e+00 -2.001315e+01 8.720277e-02 + 1.450000e+01 1.461361e+00 -2.002696e+01 8.707979e-02 + 1.451000e+01 1.195997e+00 -2.004077e+01 8.688753e-02 + 1.452000e+01 9.610290e-01 -2.005458e+01 8.669200e-02 + 1.453000e+01 7.551803e-01 -2.006840e+01 8.656071e-02 + 1.454000e+01 5.761841e-01 -2.008221e+01 8.653907e-02 + 1.455000e+01 4.211026e-01 -2.009602e+01 8.663426e-02 + 1.456000e+01 2.866464e-01 -2.010983e+01 8.681266e-02 + 1.457000e+01 1.694743e-01 -2.012364e+01 8.701187e-02 + 1.458000e+01 6.645185e-02 -2.013745e+01 8.716272e-02 + 1.459000e+01 -2.514443e-02 -2.015127e+01 8.721308e-02 + 1.460000e+01 -1.074894e-01 -2.016508e+01 8.714545e-02 + 1.461000e+01 -1.821416e-01 -2.017889e+01 8.698281e-02 + 1.462000e+01 -2.500448e-01 -2.019270e+01 8.678086e-02 + 1.463000e+01 -3.115920e-01 -2.020651e+01 8.660920e-02 + 1.464000e+01 -3.667410e-01 -2.022032e+01 8.652729e-02 + 1.465000e+01 -4.151668e-01 -2.023414e+01 8.656352e-02 + 1.466000e+01 -4.564340e-01 -2.024795e+01 8.670512e-02 + 1.467000e+01 -4.901719e-01 -2.026176e+01 8.690285e-02 + 1.468000e+01 -5.162349e-01 -2.027557e+01 8.708850e-02 + 1.469000e+01 -5.348347e-01 -2.028938e+01 8.719871e-02 + 1.470000e+01 -5.466305e-01 -2.030319e+01 8.719651e-02 + 1.471000e+01 -5.527720e-01 -2.031701e+01 8.708366e-02 + 1.472000e+01 -5.548896e-01 -2.033082e+01 8.689996e-02 + 1.473000e+01 -5.550346e-01 -2.034463e+01 8.670973e-02 + 1.474000e+01 -5.555731e-01 -2.035844e+01 8.657974e-02 + 1.475000e+01 -5.590439e-01 -2.037225e+01 8.655587e-02 + 1.476000e+01 -5.679911e-01 -2.038607e+01 8.664678e-02 + 1.477000e+01 -5.847853e-01 -2.039988e+01 8.682083e-02 + 1.478000e+01 -6.114465e-01 -2.041369e+01 8.701749e-02 + 1.479000e+01 -6.494827e-01 -2.042750e+01 8.716862e-02 + 1.480000e+01 -6.997548e-01 -2.044131e+01 8.722207e-02 + 1.481000e+01 -7.623785e-01 -2.045512e+01 8.715926e-02 + 1.482000e+01 -8.366678e-01 -2.046894e+01 8.700137e-02 + 1.483000e+01 -9.211228e-01 -2.048275e+01 8.680223e-02 + 1.484000e+01 -1.013463e+00 -2.049656e+01 8.663007e-02 + 1.485000e+01 -1.110697e+00 -2.051037e+01 8.654393e-02 + 1.486000e+01 -1.209235e+00 -2.052418e+01 8.657293e-02 + 1.487000e+01 -1.305011e+00 -2.053799e+01 8.670590e-02 + 1.488000e+01 -1.393638e+00 -2.055181e+01 8.689546e-02 + 1.489000e+01 -1.470557e+00 -2.056562e+01 8.707496e-02 + 1.490000e+01 -1.531186e+00 -2.057943e+01 8.718178e-02 + 1.491000e+01 -1.571064e+00 -2.059324e+01 8.717868e-02 + 1.492000e+01 -1.585969e+00 -2.060705e+01 8.706638e-02 + 1.493000e+01 -1.572029e+00 -2.062086e+01 8.688319e-02 + 1.494000e+01 -1.525798e+00 -2.063468e+01 8.669216e-02 + 1.495000e+01 -1.444329e+00 -2.064849e+01 8.655945e-02 + 1.496000e+01 -1.325218e+00 -2.066230e+01 8.653123e-02 + 1.497000e+01 -1.166644e+00 -2.067611e+01 8.661736e-02 + 1.498000e+01 -9.674051e-01 -2.068992e+01 8.678785e-02 + 1.499000e+01 -7.269469e-01 -2.070373e+01 8.698363e-02 + 1.500000e+01 -4.454000e-01 -2.071755e+01 8.713743e-02 + 1.501000e+01 -1.236221e-01 -2.073136e+01 8.719695e-02 + 1.502000e+01 2.367538e-01 -2.074517e+01 8.714255e-02 + 1.503000e+01 6.332650e-01 -2.075898e+01 8.699371e-02 + 1.504000e+01 1.062564e+00 -2.077279e+01 8.680245e-02 + 1.505000e+01 1.520368e+00 -2.078660e+01 8.663558e-02 + 1.506000e+01 2.001423e+00 -2.080042e+01 8.655162e-02 + 1.507000e+01 2.499483e+00 -2.081423e+01 8.658014e-02 + 1.508000e+01 3.007331e+00 -2.082804e+01 8.671129e-02 + 1.509000e+01 3.516827e+00 -2.084185e+01 8.689934e-02 + 1.510000e+01 4.019008e+00 -2.085566e+01 8.707903e-02 + 1.511000e+01 4.504236e+00 -2.086947e+01 8.718840e-02 + 1.512000e+01 4.962400e+00 -2.088329e+01 8.719001e-02 + 1.513000e+01 5.383163e+00 -2.089710e+01 8.708351e-02 + 1.514000e+01 5.756255e+00 -2.091091e+01 8.690578e-02 + 1.515000e+01 6.071799e+00 -2.092472e+01 8.671843e-02 + 1.516000e+01 6.320652e+00 -2.093853e+01 8.658676e-02 + 1.517000e+01 6.494763e+00 -2.095234e+01 8.655692e-02 + 1.518000e+01 6.587501e+00 -2.096616e+01 8.663953e-02 + 1.519000e+01 6.593970e+00 -2.097997e+01 8.680590e-02 + 1.520000e+01 6.511261e+00 -2.099378e+01 8.699829e-02 + 1.521000e+01 6.338644e+00 -2.100759e+01 8.715026e-02 + 1.522000e+01 6.077686e+00 -2.102140e+01 8.720959e-02 + 1.523000e+01 5.732276e+00 -2.103521e+01 8.715597e-02 + 1.524000e+01 5.308559e+00 -2.104903e+01 8.700773e-02 + 1.525000e+01 4.814774e+00 -2.106284e+01 8.681567e-02 + 1.526000e+01 4.261014e+00 -2.107665e+01 8.664582e-02 + 1.527000e+01 3.658895e+00 -2.109046e+01 8.655666e-02 + 1.528000e+01 3.021173e+00 -2.110427e+01 8.657858e-02 + 1.529000e+01 2.361305e+00 -2.111808e+01 8.670310e-02 + 1.530000e+01 1.692992e+00 -2.113190e+01 8.688598e-02 + 1.531000e+01 1.029719e+00 -2.114571e+01 8.706302e-02 + 1.532000e+01 3.843055e-01 -2.115952e+01 8.717253e-02 + 1.533000e+01 -2.314983e-01 -2.117333e+01 8.717646e-02 + 1.534000e+01 -8.073607e-01 -2.118714e+01 8.707316e-02 + 1.535000e+01 -1.334647e+00 -2.120096e+01 8.689792e-02 + 1.536000e+01 -1.806617e+00 -2.121477e+01 8.671103e-02 + 1.537000e+01 -2.218534e+00 -2.122858e+01 8.657716e-02 + 1.538000e+01 -2.567686e+00 -2.124239e+01 8.654282e-02 + 1.539000e+01 -2.853326e+00 -2.125620e+01 8.661987e-02 + 1.540000e+01 -3.076533e+00 -2.127001e+01 8.678136e-02 + 1.541000e+01 -3.240015e+00 -2.128383e+01 8.697121e-02 + 1.542000e+01 -3.347861e+00 -2.129764e+01 8.712405e-02 + 1.543000e+01 -3.405258e+00 -2.131145e+01 8.718786e-02 + 1.544000e+01 -3.418200e+00 -2.132526e+01 8.714159e-02 + 1.545000e+01 -3.393192e+00 -2.133907e+01 8.700214e-02 + 1.546000e+01 -3.336974e+00 -2.135288e+01 8.681863e-02 + 1.547000e+01 -3.256275e+00 -2.136670e+01 8.665566e-02 + 1.548000e+01 -3.157593e+00 -2.138051e+01 8.657086e-02 + 1.549000e+01 -3.047040e+00 -2.139432e+01 8.659456e-02 + 1.550000e+01 -2.930208e+00 -2.140813e+01 8.671892e-02 + 1.551000e+01 -2.812102e+00 -2.142194e+01 8.690064e-02 + 1.552000e+01 -2.697099e+00 -2.143575e+01 8.707639e-02 + 1.553000e+01 -2.588949e+00 -2.144957e+01 8.718490e-02 + 1.554000e+01 -2.490803e+00 -2.146338e+01 8.718799e-02 + 1.555000e+01 -2.405253e+00 -2.147719e+01 8.708347e-02 + 1.556000e+01 -2.334388e+00 -2.149100e+01 8.690596e-02 + 1.557000e+01 -2.279846e+00 -2.150481e+01 8.671539e-02 + 1.558000e+01 -2.242860e+00 -2.151862e+01 8.657662e-02 + 1.559000e+01 -2.224294e+00 -2.153244e+01 8.653701e-02 + 1.560000e+01 -2.224665e+00 -2.154625e+01 8.660975e-02 + 1.561000e+01 -2.244148e+00 -2.156006e+01 8.676924e-02 + 1.562000e+01 -2.282567e+00 -2.157387e+01 8.696030e-02 + 1.563000e+01 -2.339377e+00 -2.158768e+01 8.711762e-02 + 1.564000e+01 -2.413641e+00 -2.160149e+01 8.718828e-02 + 1.565000e+01 -2.504009e+00 -2.161531e+01 8.714959e-02 + 1.566000e+01 -2.608694e+00 -2.162912e+01 8.701652e-02 + 1.567000e+01 -2.725478e+00 -2.164293e+01 8.683646e-02 + 1.568000e+01 -2.851718e+00 -2.165674e+01 8.667307e-02 + 1.569000e+01 -2.984382e+00 -2.167055e+01 8.658420e-02 + 1.570000e+01 -3.120107e+00 -2.168436e+01 8.660152e-02 + 1.571000e+01 -3.255281e+00 -2.169818e+01 8.671925e-02 + 1.572000e+01 -3.386141e+00 -2.171199e+01 8.689629e-02 + 1.573000e+01 -3.508893e+00 -2.172580e+01 8.707088e-02 + 1.574000e+01 -3.619842e+00 -2.173961e+01 8.718225e-02 + 1.575000e+01 -3.715524e+00 -2.175342e+01 8.719152e-02 + 1.576000e+01 -3.792840e+00 -2.176723e+01 8.709476e-02 + 1.577000e+01 -3.849176e+00 -2.178105e+01 8.692438e-02 + 1.578000e+01 -3.882504e+00 -2.179486e+01 8.673815e-02 + 1.579000e+01 -3.891464e+00 -2.180867e+01 8.659954e-02 + 1.580000e+01 -3.875416e+00 -2.182248e+01 8.655563e-02 + 1.581000e+01 -3.834455e+00 -2.183629e+01 8.662049e-02 + 1.582000e+01 -3.769399e+00 -2.185010e+01 8.677023e-02 + 1.583000e+01 -3.681745e+00 -2.186392e+01 8.695160e-02 + 1.584000e+01 -3.573588e+00 -2.187773e+01 8.710090e-02 + 1.585000e+01 -3.447530e+00 -2.189154e+01 8.716604e-02 + 1.586000e+01 -3.306553e+00 -2.190535e+01 8.712429e-02 + 1.587000e+01 -3.153896e+00 -2.191916e+01 8.698994e-02 + 1.588000e+01 -2.992916e+00 -2.193298e+01 8.680943e-02 + 1.589000e+01 -2.826957e+00 -2.194679e+01 8.664565e-02 + 1.590000e+01 -2.659230e+00 -2.196060e+01 8.655622e-02 + 1.591000e+01 -2.492706e+00 -2.197441e+01 8.657323e-02 + 1.592000e+01 -2.330024e+00 -2.198822e+01 8.669178e-02 + 1.593000e+01 -2.173434e+00 -2.200203e+01 8.687175e-02 + 1.594000e+01 -2.024744e+00 -2.201585e+01 8.705200e-02 + 1.595000e+01 -1.885313e+00 -2.202966e+01 8.717166e-02 + 1.596000e+01 -1.756044e+00 -2.204347e+01 8.719096e-02 + 1.597000e+01 -1.637404e+00 -2.205728e+01 8.710449e-02 + 1.598000e+01 -1.529458e+00 -2.207109e+01 8.694291e-02 + 1.599000e+01 -1.431911e+00 -2.208490e+01 8.676253e-02 + 1.600000e+01 -1.344145e+00 -2.209872e+01 8.662605e-02 + 1.601000e+01 -1.265271e+00 -2.211253e+01 8.658077e-02 + 1.602000e+01 -1.194158e+00 -2.212634e+01 8.664190e-02 + 1.603000e+01 -1.129475e+00 -2.214015e+01 8.678723e-02 + 1.604000e+01 -1.069708e+00 -2.215396e+01 8.696517e-02 + 1.605000e+01 -1.013175e+00 -2.216777e+01 8.711310e-02 + 1.606000e+01 -9.580365e-01 -2.218159e+01 8.717913e-02 + 1.607000e+01 -9.022976e-01 -2.219540e+01 8.713980e-02 + 1.608000e+01 -8.438092e-01 -2.220921e+01 8.700803e-02 + 1.609000e+01 -7.802728e-01 -2.222302e+01 8.682870e-02 + 1.610000e+01 -7.092517e-01 -2.223683e+01 8.666351e-02 + 1.611000e+01 -6.281935e-01 -2.225064e+01 8.656967e-02 + 1.612000e+01 -5.344664e-01 -2.226446e+01 8.657978e-02 + 1.613000e+01 -4.254127e-01 -2.227827e+01 8.669028e-02 + 1.614000e+01 -2.984207e-01 -2.229208e+01 8.686268e-02 + 1.615000e+01 -1.510139e-01 -2.230589e+01 8.703726e-02 + 1.616000e+01 1.904334e-02 -2.231970e+01 8.715393e-02 + 1.617000e+01 2.136275e-01 -2.233351e+01 8.717286e-02 + 1.618000e+01 4.341297e-01 -2.234733e+01 8.708780e-02 + 1.619000e+01 6.813283e-01 -2.236114e+01 8.692818e-02 + 1.620000e+01 9.552663e-01 -2.237495e+01 8.674911e-02 + 1.621000e+01 1.255142e+00 -2.238876e+01 8.661257e-02 + 1.622000e+01 1.579220e+00 -2.240257e+01 8.656588e-02 + 1.623000e+01 1.924770e+00 -2.241638e+01 8.662499e-02 + 1.624000e+01 2.288039e+00 -2.243020e+01 8.676888e-02 + 1.625000e+01 2.664263e+00 -2.244401e+01 8.694708e-02 + 1.626000e+01 3.047722e+00 -2.245782e+01 8.709763e-02 + 1.627000e+01 3.431836e+00 -2.247163e+01 8.716854e-02 + 1.628000e+01 3.809304e+00 -2.248544e+01 8.713550e-02 + 1.629000e+01 4.172289e+00 -2.249925e+01 8.701008e-02 + 1.630000e+01 4.512626e+00 -2.251307e+01 8.683574e-02 + 1.631000e+01 4.822073e+00 -2.252688e+01 8.667314e-02 + 1.632000e+01 5.092568e+00 -2.254069e+01 8.657922e-02 + 1.633000e+01 5.316504e+00 -2.255450e+01 8.658719e-02 + 1.634000e+01 5.487003e+00 -2.256831e+01 8.669477e-02 + 1.635000e+01 5.598176e+00 -2.258212e+01 8.686500e-02 + 1.636000e+01 5.645362e+00 -2.259594e+01 8.703936e-02 + 1.637000e+01 5.625337e+00 -2.260975e+01 8.715825e-02 + 1.638000e+01 5.536483e+00 -2.262356e+01 8.718141e-02 + 1.639000e+01 5.378903e+00 -2.263737e+01 8.710144e-02 + 1.640000e+01 5.154495e+00 -2.265118e+01 8.694617e-02 + 1.641000e+01 4.866954e+00 -2.266500e+01 8.676927e-02 + 1.642000e+01 4.521731e+00 -2.267881e+01 8.663185e-02 + 1.643000e+01 4.125925e+00 -2.269262e+01 8.658129e-02 + 1.644000e+01 3.688121e+00 -2.270643e+01 8.663452e-02 + 1.645000e+01 3.218184e+00 -2.272024e+01 8.677209e-02 + 1.646000e+01 2.727006e+00 -2.273405e+01 8.694519e-02 + 1.647000e+01 2.226214e+00 -2.274787e+01 8.709303e-02 + 1.648000e+01 1.727859e+00 -2.276168e+01 8.716397e-02 + 1.649000e+01 1.244083e+00 -2.277549e+01 8.713314e-02 + 1.650000e+01 7.867764e-01 -2.278930e+01 8.701083e-02 + 1.651000e+01 3.672473e-01 -2.280311e+01 8.683899e-02 + 1.652000e+01 -4.106897e-03 -2.281692e+01 8.667696e-02 + 1.653000e+01 -3.180983e-01 -2.283074e+01 8.658105e-02 + 1.654000e+01 -5.670198e-01 -2.284455e+01 8.658475e-02 + 1.655000e+01 -7.448772e-01 -2.285836e+01 8.668684e-02 + 1.656000e+01 -8.475763e-01 -2.287217e+01 8.685183e-02 + 1.657000e+01 -8.730600e-01 -2.288598e+01 8.702265e-02 + 1.658000e+01 -8.213907e-01 -2.289979e+01 8.714060e-02 + 1.659000e+01 -6.947757e-01 -2.291361e+01 8.716553e-02 + 1.660000e+01 -4.975349e-01 -2.292742e+01 8.708940e-02 + 1.661000e+01 -2.360089e-01 -2.294123e+01 8.693890e-02 + 1.662000e+01 8.158785e-02 -2.295504e+01 8.676641e-02 + 1.663000e+01 4.453688e-01 -2.296885e+01 8.663207e-02 + 1.664000e+01 8.440257e-01 -2.298266e+01 8.658288e-02 + 1.665000e+01 1.265123e+00 -2.299648e+01 8.663604e-02 + 1.666000e+01 1.695427e+00 -2.301029e+01 8.677288e-02 + 1.667000e+01 2.121268e+00 -2.302410e+01 8.694556e-02 + 1.668000e+01 2.528916e+00 -2.303791e+01 8.709395e-02 + 1.669000e+01 2.904967e+00 -2.305172e+01 8.716660e-02 + 1.670000e+01 3.236733e+00 -2.306553e+01 8.713823e-02 + 1.671000e+01 3.512608e+00 -2.307935e+01 8.701830e-02 + 1.672000e+01 3.722423e+00 -2.309316e+01 8.684779e-02 + 1.673000e+01 3.857756e+00 -2.310697e+01 8.668536e-02 + 1.674000e+01 3.912201e+00 -2.312078e+01 8.658717e-02 + 1.675000e+01 3.881580e+00 -2.313459e+01 8.658725e-02 + 1.676000e+01 3.764095e+00 -2.314840e+01 8.668542e-02 + 1.677000e+01 3.560410e+00 -2.316222e+01 8.684746e-02 + 1.678000e+01 3.273652e+00 -2.317603e+01 8.701727e-02 + 1.679000e+01 2.909355e+00 -2.318984e+01 8.713655e-02 + 1.680000e+01 2.475305e+00 -2.320365e+01 8.716485e-02 + 1.681000e+01 1.981337e+00 -2.321746e+01 8.709319e-02 + 1.682000e+01 1.439047e+00 -2.323127e+01 8.694702e-02 + 1.683000e+01 8.614615e-01 -2.324509e+01 8.677753e-02 + 1.684000e+01 2.626474e-01 -2.325890e+01 8.664413e-02 + 1.685000e+01 -3.427034e-01 -2.327271e+01 8.659376e-02 + 1.686000e+01 -9.397152e-01 -2.328652e+01 8.664432e-02 + 1.687000e+01 -1.513775e+00 -2.330033e+01 8.677822e-02 + 1.688000e+01 -2.050971e+00 -2.331414e+01 8.694875e-02 + 1.689000e+01 -2.538503e+00 -2.332796e+01 8.709653e-02 + 1.690000e+01 -2.965063e+00 -2.334177e+01 8.717022e-02 + 1.691000e+01 -3.321160e+00 -2.335558e+01 8.714398e-02 + 1.692000e+01 -3.599382e+00 -2.336939e+01 8.702621e-02 + 1.693000e+01 -3.794593e+00 -2.338320e+01 8.685672e-02 + 1.694000e+01 -3.904057e+00 -2.339702e+01 8.669324e-02 + 1.695000e+01 -3.927475e+00 -2.341083e+01 8.659162e-02 + 1.696000e+01 -3.866950e+00 -2.342464e+01 8.658630e-02 + 1.697000e+01 -3.726880e+00 -2.343845e+01 8.667811e-02 + 1.698000e+01 -3.513775e+00 -2.345226e+01 8.683405e-02 + 1.699000e+01 -3.236015e+00 -2.346607e+01 8.699912e-02 + 1.700000e+01 -2.903556e+00 -2.347989e+01 8.711559e-02 + 1.701000e+01 -2.527597e+00 -2.349370e+01 8.714296e-02 + 1.702000e+01 -2.120218e+00 -2.350751e+01 8.707167e-02 + 1.703000e+01 -1.694000e+00 -2.352132e+01 8.692631e-02 + 1.704000e+01 -1.261644e+00 -2.353513e+01 8.675731e-02 + 1.705000e+01 -8.356002e-01 -2.354894e+01 8.662374e-02 + 1.706000e+01 -4.277182e-01 -2.356276e+01 8.657281e-02 + 1.707000e+01 -4.892143e-02 -2.357657e+01 8.662316e-02 + 1.708000e+01 2.910743e-01 -2.359038e+01 8.675822e-02 + 1.709000e+01 5.840006e-01 -2.360419e+01 8.693214e-02 + 1.710000e+01 8.232263e-01 -2.361800e+01 8.708590e-02 + 1.711000e+01 1.003896e+00 -2.363181e+01 8.716778e-02 + 1.712000e+01 1.123014e+00 -2.364563e+01 8.715096e-02 + 1.713000e+01 1.179478e+00 -2.365944e+01 8.704241e-02 + 1.714000e+01 1.174056e+00 -2.367325e+01 8.688049e-02 + 1.715000e+01 1.109323e+00 -2.368706e+01 8.672189e-02 + 1.716000e+01 9.895443e-01 -2.370087e+01 8.662208e-02 + 1.717000e+01 8.205209e-01 -2.371468e+01 8.661594e-02 + 1.718000e+01 6.094028e-01 -2.372850e+01 8.670535e-02 + 1.719000e+01 3.644659e-01 -2.374231e+01 8.685859e-02 + 1.720000e+01 9.486754e-02 -2.375612e+01 8.702171e-02 + 1.721000e+01 -1.896189e-01 -2.376993e+01 8.713742e-02 + 1.722000e+01 -4.788820e-01 -2.378374e+01 8.716496e-02 + 1.723000e+01 -7.627576e-01 -2.379755e+01 8.709387e-02 + 1.724000e+01 -1.031315e+00 -2.381137e+01 8.694759e-02 + 1.725000e+01 -1.275137e+00 -2.382518e+01 8.677555e-02 + 1.726000e+01 -1.485587e+00 -2.383899e+01 8.663639e-02 + 1.727000e+01 -1.655059e+00 -2.385280e+01 8.657763e-02 + 1.728000e+01 -1.777198e+00 -2.386661e+01 8.661901e-02 + 1.729000e+01 -1.847091e+00 -2.388042e+01 8.674544e-02 + 1.730000e+01 -1.861422e+00 -2.389424e+01 8.691249e-02 + 1.731000e+01 -1.818574e+00 -2.390805e+01 8.706206e-02 + 1.732000e+01 -1.718697e+00 -2.392186e+01 8.714263e-02 + 1.733000e+01 -1.563709e+00 -2.393567e+01 8.712675e-02 + 1.734000e+01 -1.357258e+00 -2.394948e+01 8.702031e-02 + 1.735000e+01 -1.104620e+00 -2.396329e+01 8.686045e-02 + 1.736000e+01 -8.125520e-01 -2.397711e+01 8.670292e-02 + 1.737000e+01 -4.890906e-01 -2.399092e+01 8.660293e-02 + 1.738000e+01 -1.433124e-01 -2.400473e+01 8.659576e-02 + 1.739000e+01 2.149441e-01 -2.401854e+01 8.668431e-02 + 1.740000e+01 5.753838e-01 -2.403235e+01 8.683806e-02 + 1.741000e+01 9.275768e-01 -2.404616e+01 8.700392e-02 + 1.742000e+01 1.261287e+00 -2.405998e+01 8.712489e-02 + 1.743000e+01 1.566793e+00 -2.407379e+01 8.715968e-02 + 1.744000e+01 1.835197e+00 -2.408760e+01 8.709670e-02 + 1.745000e+01 2.058695e+00 -2.410141e+01 8.695786e-02 + 1.746000e+01 2.230823e+00 -2.411522e+01 8.679122e-02 + 1.747000e+01 2.346639e+00 -2.412903e+01 8.665454e-02 + 1.748000e+01 2.402862e+00 -2.414285e+01 8.659530e-02 + 1.749000e+01 2.397953e+00 -2.415666e+01 8.663394e-02 + 1.750000e+01 2.332120e+00 -2.417047e+01 8.675670e-02 + 1.751000e+01 2.207283e+00 -2.418428e+01 8.692050e-02 + 1.752000e+01 2.026962e+00 -2.419809e+01 8.706826e-02 + 1.753000e+01 1.796122e+00 -2.421191e+01 8.714880e-02 + 1.754000e+01 1.520973e+00 -2.422572e+01 8.713429e-02 + 1.755000e+01 1.208728e+00 -2.423953e+01 8.702966e-02 + 1.756000e+01 8.673386e-01 -2.425334e+01 8.687089e-02 + 1.757000e+01 5.052165e-01 -2.426715e+01 8.671285e-02 + 1.758000e+01 1.309496e-01 -2.428096e+01 8.661037e-02 + 1.759000e+01 -2.469724e-01 -2.429478e+01 8.659908e-02 + 1.760000e+01 -6.204145e-01 -2.430859e+01 8.668283e-02 + 1.761000e+01 -9.818255e-01 -2.432240e+01 8.683227e-02 + 1.762000e+01 -1.324432e+00 -2.433621e+01 8.699534e-02 + 1.763000e+01 -1.642390e+00 -2.435002e+01 8.711552e-02 + 1.764000e+01 -1.930898e+00 -2.436383e+01 8.715136e-02 + 1.765000e+01 -2.186256e+00 -2.437765e+01 8.709049e-02 + 1.766000e+01 -2.405888e+00 -2.439146e+01 8.695380e-02 + 1.767000e+01 -2.588317e+00 -2.440527e+01 8.678836e-02 + 1.768000e+01 -2.733104e+00 -2.441908e+01 8.665140e-02 + 1.769000e+01 -2.840752e+00 -2.443289e+01 8.659050e-02 + 1.770000e+01 -2.912593e+00 -2.444670e+01 8.662688e-02 + 1.771000e+01 -2.950643e+00 -2.446052e+01 8.674783e-02 + 1.772000e+01 -2.957458e+00 -2.447433e+01 8.691132e-02 + 1.773000e+01 -2.935981e+00 -2.448814e+01 8.706087e-02 + 1.774000e+01 -2.889393e+00 -2.450195e+01 8.714520e-02 + 1.775000e+01 -2.820974e+00 -2.451576e+01 8.713574e-02 + 1.776000e+01 -2.733977e+00 -2.452957e+01 8.703622e-02 + 1.777000e+01 -2.631524e+00 -2.454339e+01 8.688139e-02 + 1.778000e+01 -2.516520e+00 -2.455720e+01 8.672516e-02 + 1.779000e+01 -2.391589e+00 -2.457101e+01 8.662212e-02 + 1.780000e+01 -2.259035e+00 -2.458482e+01 8.660840e-02 + 1.781000e+01 -2.120827e+00 -2.459863e+01 8.668891e-02 + 1.782000e+01 -1.978597e+00 -2.461244e+01 8.683560e-02 + 1.783000e+01 -1.833662e+00 -2.462626e+01 8.699740e-02 + 1.784000e+01 -1.687057e+00 -2.464007e+01 8.711823e-02 + 1.785000e+01 -1.539578e+00 -2.465388e+01 8.715627e-02 + 1.786000e+01 -1.391838e+00 -2.466769e+01 8.709820e-02 + 1.787000e+01 -1.244314e+00 -2.468150e+01 8.696366e-02 + 1.788000e+01 -1.097405e+00 -2.469531e+01 8.679860e-02 + 1.789000e+01 -9.514796e-01 -2.470913e+01 8.665973e-02 + 1.790000e+01 -8.069198e-01 -2.472294e+01 8.659487e-02 + 1.791000e+01 -6.641559e-01 -2.473675e+01 8.662618e-02 + 1.792000e+01 -5.236915e-01 -2.475056e+01 8.674239e-02 + 1.793000e+01 -3.861179e-01 -2.476437e+01 8.690283e-02 + 1.794000e+01 -2.521187e-01 -2.477818e+01 8.705183e-02 + 1.795000e+01 -1.224641e-01 -2.479200e+01 8.713817e-02 + 1.796000e+01 2.002381e-03 -2.480581e+01 8.713247e-02 + 1.797000e+01 1.203851e-01 -2.481962e+01 8.703715e-02 + 1.798000e+01 2.317610e-01 -2.483343e+01 8.688545e-02 + 1.799000e+01 3.352080e-01 -2.484724e+01 8.673017e-02 + 1.800000e+01 4.298322e-01 -2.486105e+01 8.662547e-02 + 1.801000e+01 5.147948e-01 -2.487487e+01 8.660800e-02 + 1.802000e+01 5.893341e-01 -2.488868e+01 8.668387e-02 + 1.803000e+01 6.527827e-01 -2.490249e+01 8.682659e-02 + 1.804000e+01 7.045791e-01 -2.491630e+01 8.698645e-02 + 1.805000e+01 7.442724e-01 -2.493011e+01 8.710806e-02 + 1.806000e+01 7.715211e-01 -2.494393e+01 8.714944e-02 + 1.807000e+01 7.860873e-01 -2.495774e+01 8.709627e-02 + 1.808000e+01 7.878271e-01 -2.497155e+01 8.696669e-02 + 1.809000e+01 7.766795e-01 -2.498536e+01 8.680515e-02 + 1.810000e+01 7.526563e-01 -2.499917e+01 8.666724e-02 + 1.811000e+01 7.158358e-01 -2.501298e+01 8.660047e-02 + 1.812000e+01 6.663611e-01 -2.502680e+01 8.662762e-02 + 1.813000e+01 6.044479e-01 -2.504061e+01 8.673865e-02 + 1.814000e+01 5.303998e-01 -2.505442e+01 8.689440e-02 + 1.815000e+01 4.446352e-01 -2.506823e+01 8.704050e-02 + 1.816000e+01 3.477236e-01 -2.508204e+01 8.712634e-02 + 1.817000e+01 2.404307e-01 -2.509585e+01 8.712243e-02 + 1.818000e+01 1.237700e-01 -2.510967e+01 8.703037e-02 + 1.819000e+01 -9.416308e-04 -2.512348e+01 8.688225e-02 + 1.820000e+01 -1.320299e-01 -2.513729e+01 8.672973e-02 + 1.821000e+01 -2.674146e-01 -2.515110e+01 8.662628e-02 + 1.822000e+01 -4.045726e-01 -2.516491e+01 8.660846e-02 + 1.823000e+01 -5.405171e-01 -2.517872e+01 8.668296e-02 + 1.824000e+01 -6.717992e-01 -2.519254e+01 8.682420e-02 + 1.825000e+01 -7.945361e-01 -2.520635e+01 8.698340e-02 + 1.826000e+01 -9.044691e-01 -2.522016e+01 8.710574e-02 + 1.827000e+01 -9.970535e-01 -2.523397e+01 8.714922e-02 + 1.828000e+01 -1.067581e+00 -2.524778e+01 8.709899e-02 + 1.829000e+01 -1.111334e+00 -2.526159e+01 8.697229e-02 + 1.830000e+01 -1.123760e+00 -2.527541e+01 8.681263e-02 + 1.831000e+01 -1.100680e+00 -2.528922e+01 8.667502e-02 + 1.832000e+01 -1.038493e+00 -2.530303e+01 8.660692e-02 + 1.833000e+01 -9.343971e-01 -2.531684e+01 8.663167e-02 + 1.834000e+01 -7.865948e-01 -2.533065e+01 8.674018e-02 + 1.835000e+01 -5.944846e-01 -2.534446e+01 8.689429e-02 + 1.836000e+01 -3.588183e-01 -2.535828e+01 8.704028e-02 + 1.837000e+01 -8.181862e-02 -2.537209e+01 8.712763e-02 + 1.838000e+01 2.327552e-01 -2.538590e+01 8.712632e-02 + 1.839000e+01 5.796003e-01 -2.539971e+01 8.703698e-02 + 1.840000e+01 9.519272e-01 -2.541352e+01 8.689062e-02 + 1.841000e+01 1.341585e+00 -2.542733e+01 8.673808e-02 + 1.842000e+01 1.739249e+00 -2.544115e+01 8.663261e-02 + 1.843000e+01 2.134674e+00 -2.545496e+01 8.661124e-02 + 1.844000e+01 2.517002e+00 -2.546877e+01 8.668172e-02 + 1.845000e+01 2.875107e+00 -2.548258e+01 8.681972e-02 + 1.846000e+01 3.197976e+00 -2.549639e+01 8.697754e-02 + 1.847000e+01 3.475105e+00 -2.551020e+01 8.710080e-02 + 1.848000e+01 3.696893e+00 -2.552402e+01 8.714724e-02 + 1.849000e+01 3.855011e+00 -2.553783e+01 8.710102e-02 + 1.850000e+01 3.942748e+00 -2.555164e+01 8.697805e-02 + 1.851000e+01 3.955291e+00 -2.556545e+01 8.682055e-02 + 1.852000e+01 3.889955e+00 -2.557926e+01 8.668268e-02 + 1.853000e+01 3.746327e+00 -2.559307e+01 8.661186e-02 + 1.854000e+01 3.526329e+00 -2.560689e+01 8.663212e-02 + 1.855000e+01 3.234200e+00 -2.562070e+01 8.673571e-02 + 1.856000e+01 2.876383e+00 -2.563451e+01 8.688589e-02 + 1.857000e+01 2.461332e+00 -2.564832e+01 8.703003e-02 + 1.858000e+01 1.999250e+00 -2.566213e+01 8.711799e-02 + 1.859000e+01 1.501751e+00 -2.567595e+01 8.711936e-02 + 1.860000e+01 9.814823e-01 -2.568976e+01 8.703370e-02 + 1.861000e+01 4.517027e-01 -2.570357e+01 8.689062e-02 + 1.862000e+01 -7.414835e-02 -2.571738e+01 8.673974e-02 + 1.863000e+01 -5.828892e-01 -2.573119e+01 8.663363e-02 + 1.864000e+01 -1.062014e+00 -2.574500e+01 8.660942e-02 + 1.865000e+01 -1.500081e+00 -2.575882e+01 8.667576e-02 + 1.866000e+01 -1.887051e+00 -2.577263e+01 8.680969e-02 + 1.867000e+01 -2.214570e+00 -2.578644e+01 8.696490e-02 + 1.868000e+01 -2.476187e+00 -2.580025e+01 8.708798e-02 + 1.869000e+01 -2.667493e+00 -2.581406e+01 8.713694e-02 + 1.870000e+01 -2.786196e+00 -2.582787e+01 8.709541e-02 + 1.871000e+01 -2.832105e+00 -2.584169e+01 8.697819e-02 + 1.872000e+01 -2.807064e+00 -2.585550e+01 8.682608e-02 + 1.873000e+01 -2.714802e+00 -2.586931e+01 8.669201e-02 + 1.874000e+01 -2.560741e+00 -2.588312e+01 8.662265e-02 + 1.875000e+01 -2.351752e+00 -2.589693e+01 8.664204e-02 + 1.876000e+01 -2.095870e+00 -2.591074e+01 8.674305e-02 + 1.877000e+01 -1.802001e+00 -2.592456e+01 8.689001e-02 + 1.878000e+01 -1.479602e+00 -2.593837e+01 8.703136e-02 + 1.879000e+01 -1.138366e+00 -2.595218e+01 8.711776e-02 + 1.880000e+01 -7.879214e-01 -2.596599e+01 8.711906e-02 + 1.881000e+01 -4.375466e-01 -2.597980e+01 8.703452e-02 + 1.882000e+01 -9.591223e-02 -2.599361e+01 8.689316e-02 + 1.883000e+01 2.291400e-01 -2.600743e+01 8.674382e-02 + 1.884000e+01 5.307793e-01 -2.602124e+01 8.663848e-02 + 1.885000e+01 8.033258e-01 -2.603505e+01 8.661408e-02 + 1.886000e+01 1.042344e+00 -2.604886e+01 8.667944e-02 + 1.887000e+01 1.244694e+00 -2.606267e+01 8.681211e-02 + 1.888000e+01 1.408534e+00 -2.607648e+01 8.696633e-02 + 1.889000e+01 1.533284e+00 -2.609030e+01 8.708914e-02 + 1.890000e+01 1.619555e+00 -2.610411e+01 8.713861e-02 + 1.891000e+01 1.669032e+00 -2.611792e+01 8.709817e-02 + 1.892000e+01 1.684341e+00 -2.613173e+01 8.698215e-02 + 1.893000e+01 1.668888e+00 -2.614554e+01 8.683088e-02 + 1.894000e+01 1.626680e+00 -2.615935e+01 8.669698e-02 + 1.895000e+01 1.562134e+00 -2.617317e+01 8.662709e-02 + 1.896000e+01 1.479893e+00 -2.618698e+01 8.664556e-02 + 1.897000e+01 1.384630e+00 -2.620079e+01 8.674573e-02 + 1.898000e+01 1.280880e+00 -2.621460e+01 8.689237e-02 + 1.899000e+01 1.172869e+00 -2.622841e+01 8.703415e-02 + 1.900000e+01 1.064382e+00 -2.624222e+01 8.712155e-02 + 1.901000e+01 9.586432e-01 -2.625604e+01 8.712391e-02 + 1.902000e+01 8.582358e-01 -2.626985e+01 8.703982e-02 + 1.903000e+01 7.650479e-01 -2.628366e+01 8.689764e-02 + 1.904000e+01 6.802536e-01 -2.629747e+01 8.674590e-02 + 1.905000e+01 6.043264e-01 -2.631128e+01 8.663675e-02 + 1.906000e+01 5.370840e-01 -2.632509e+01 8.660775e-02 + 1.907000e+01 4.777607e-01 -2.633891e+01 8.666869e-02 + 1.908000e+01 4.251049e-01 -2.635272e+01 8.679810e-02 + 1.909000e+01 3.774942e-01 -2.636653e+01 8.695090e-02 + 1.910000e+01 3.330653e-01 -2.638034e+01 8.707426e-02 + 1.911000e+01 2.898492e-01 -2.639415e+01 8.712585e-02 + 1.912000e+01 2.459072e-01 -2.640797e+01 8.708827e-02 + 1.913000e+01 1.994612e-01 -2.642178e+01 8.697485e-02 + 1.914000e+01 1.490112e-01 -2.643559e+01 8.682517e-02 + 1.915000e+01 9.343576e-02 -2.644940e+01 8.669150e-02 + 1.916000e+01 3.207130e-02 -2.646321e+01 8.662080e-02 + 1.917000e+01 -3.523389e-02 -2.647702e+01 8.663819e-02 + 1.918000e+01 -1.080916e-01 -2.649084e+01 8.673807e-02 + 1.919000e+01 -1.855728e-01 -2.650465e+01 8.688609e-02 + 1.920000e+01 -2.662331e-01 -2.651846e+01 8.703131e-02 + 1.921000e+01 -3.481626e-01 -2.653227e+01 8.712394e-02 + 1.922000e+01 -4.290574e-01 -2.654608e+01 8.713244e-02 + 1.923000e+01 -5.063087e-01 -2.655989e+01 8.705411e-02 + 1.924000e+01 -5.771067e-01 -2.657371e+01 8.691603e-02 + 1.925000e+01 -6.385529e-01 -2.658752e+01 8.676580e-02 + 1.926000e+01 -6.877780e-01 -2.660133e+01 8.665529e-02 + 1.927000e+01 -7.220605e-01 -2.661514e+01 8.662258e-02 + 1.928000e+01 -7.389414e-01 -2.662895e+01 8.667855e-02 + 1.929000e+01 -7.363326e-01 -2.664276e+01 8.680308e-02 + 1.930000e+01 -7.126151e-01 -2.665658e+01 8.695223e-02 + 1.931000e+01 -6.667246e-01 -2.667039e+01 8.707374e-02 + 1.932000e+01 -5.982225e-01 -2.668420e+01 8.712516e-02 + 1.933000e+01 -5.073506e-01 -2.669801e+01 8.708834e-02 + 1.934000e+01 -3.950681e-01 -2.671182e+01 8.697554e-02 + 1.935000e+01 -2.630694e-01 -2.672563e+01 8.682530e-02 + 1.936000e+01 -1.137826e-01 -2.673945e+01 8.668935e-02 + 1.937000e+01 4.965341e-02 -2.675326e+01 8.661471e-02 + 1.938000e+01 2.234330e-01 -2.676707e+01 8.662727e-02 + 1.939000e+01 4.031503e-01 -2.678088e+01 8.672263e-02 + 1.940000e+01 5.838880e-01 -2.679469e+01 8.686764e-02 + 1.941000e+01 7.603286e-01 -2.680850e+01 8.701220e-02 + 1.942000e+01 9.268876e-01 -2.682232e+01 8.710673e-02 + 1.943000e+01 1.077867e+00 -2.683613e+01 8.711916e-02 + 1.944000e+01 1.207627e+00 -2.684994e+01 8.704579e-02 + 1.945000e+01 1.310772e+00 -2.686375e+01 8.691245e-02 + 1.946000e+01 1.382344e+00 -2.687756e+01 8.676570e-02 + 1.947000e+01 1.418029e+00 -2.689137e+01 8.665689e-02 + 1.948000e+01 1.414343e+00 -2.690519e+01 8.662421e-02 + 1.949000e+01 1.368829e+00 -2.691900e+01 8.667927e-02 + 1.950000e+01 1.280213e+00 -2.693281e+01 8.680296e-02 + 1.951000e+01 1.148547e+00 -2.694662e+01 8.695227e-02 + 1.952000e+01 9.753031e-01 -2.696043e+01 8.707545e-02 + 1.953000e+01 7.634311e-01 -2.697424e+01 8.712995e-02 + 1.954000e+01 5.173547e-01 -2.698806e+01 8.709697e-02 + 1.955000e+01 2.429157e-01 -2.700187e+01 8.698780e-02 + 1.956000e+01 -5.274497e-02 -2.701568e+01 8.684001e-02 + 1.957000e+01 -3.613665e-01 -2.702949e+01 8.670468e-02 + 1.958000e+01 -6.738055e-01 -2.704330e+01 8.662878e-02 + 1.959000e+01 -9.803250e-01 -2.705711e+01 8.663873e-02 + 1.960000e+01 -1.270927e+00 -2.707093e+01 8.673105e-02 + 1.961000e+01 -1.535714e+00 -2.708474e+01 8.687359e-02 + 1.962000e+01 -1.765271e+00 -2.709855e+01 8.701693e-02 + 1.963000e+01 -1.951044e+00 -2.711236e+01 8.711161e-02 + 1.964000e+01 -2.085707e+00 -2.712617e+01 8.712512e-02 + 1.965000e+01 -2.163487e+00 -2.713998e+01 8.705289e-02 + 1.966000e+01 -2.180452e+00 -2.715380e+01 8.691976e-02 + 1.967000e+01 -2.134721e+00 -2.716761e+01 8.677159e-02 + 1.968000e+01 -2.026606e+00 -2.718142e+01 8.665955e-02 + 1.969000e+01 -1.858664e+00 -2.719523e+01 8.662232e-02 + 1.970000e+01 -1.635658e+00 -2.720904e+01 8.667250e-02 + 1.971000e+01 -1.364429e+00 -2.722286e+01 8.679216e-02 + 1.972000e+01 -1.053676e+00 -2.723667e+01 8.693928e-02 + 1.973000e+01 -7.136597e-01 -2.725048e+01 8.706254e-02 + 1.974000e+01 -3.558338e-01 -2.726429e+01 8.711913e-02 + 1.975000e+01 7.572895e-03 -2.727810e+01 8.708940e-02 + 1.976000e+01 3.640104e-01 -2.729191e+01 8.698344e-02 + 1.977000e+01 7.010758e-01 -2.730573e+01 8.683771e-02 + 1.978000e+01 1.006975e+00 -2.731954e+01 8.670262e-02 + 1.979000e+01 1.270958e+00 -2.733335e+01 8.662514e-02 + 1.980000e+01 1.483711e+00 -2.734716e+01 8.663239e-02 + 1.981000e+01 1.637679e+00 -2.736097e+01 8.672204e-02 + 1.982000e+01 1.727326e+00 -2.737478e+01 8.686318e-02 + 1.983000e+01 1.749294e+00 -2.738860e+01 8.700723e-02 + 1.984000e+01 1.702483e+00 -2.740241e+01 8.710492e-02 + 1.985000e+01 1.588034e+00 -2.741622e+01 8.712322e-02 + 1.986000e+01 1.409227e+00 -2.743003e+01 8.705644e-02 + 1.987000e+01 1.171294e+00 -2.744384e+01 8.692811e-02 + 1.988000e+01 8.811625e-01 -2.745765e+01 8.678293e-02 + 1.989000e+01 5.471485e-01 -2.747147e+01 8.667148e-02 + 1.990000e+01 1.786013e-01 -2.748528e+01 8.663257e-02 + 1.991000e+01 -2.144701e-01 -2.749909e+01 8.667962e-02 + 1.992000e+01 -6.217781e-01 -2.751290e+01 8.679592e-02 + 1.993000e+01 -1.033127e+00 -2.752671e+01 8.694062e-02 + 1.994000e+01 -1.438757e+00 -2.754052e+01 8.706314e-02 + 1.995000e+01 -1.829651e+00 -2.755434e+01 8.712079e-02 + 1.996000e+01 -2.197791e+00 -2.756815e+01 8.709333e-02 + 1.997000e+01 -2.536358e+00 -2.758196e+01 8.698987e-02 + 1.998000e+01 -2.839868e+00 -2.759577e+01 8.684575e-02 + 1.999000e+01 -3.104253e+00 -2.760958e+01 8.671056e-02 + 2.000000e+01 -3.326870e+00 -2.762339e+01 8.663104e-02 diff --git a/diffpy/pdffit2/tests/testdata/Ni.stru b/doc/examples/Ni.stru similarity index 100% rename from diffpy/pdffit2/tests/testdata/Ni.stru rename to doc/examples/Ni.stru diff --git a/examples/Ni_calculation.py b/doc/examples/Ni_calculation.py similarity index 73% rename from examples/Ni_calculation.py rename to doc/examples/Ni_calculation.py index bfe1e941..fd789c56 100755 --- a/examples/Ni_calculation.py +++ b/doc/examples/Ni_calculation.py @@ -1,7 +1,7 @@ #!/usr/bin/env python -'''Calculate PDF of FCC nickel. Save data to Ni_calculation.cgr. -''' +"""Calculate PDF of FCC nickel. Save data to Ni_calculation.cgr. +""" from diffpy.pdffit2 import PdfFit @@ -11,9 +11,9 @@ # load structure file in PDFFIT or DISCUS format P.read_struct("Ni.stru") -radiation_type = 'X' # x-rays +radiation_type = "X" # x-rays qmax = 30.0 # Q-cutoff used in PDF calculation in 1/A -qdamp = 0.01 # instrument Q-resolution factor, responsible for PDF decay +qdamp = 0.01 # instrument Q-resolution factor, responsible for PDF decay rmin = 0.01 # minimum r-value rmax = 30.0 # maximum r-value npts = 3000 # number of points in the r-grid diff --git a/examples/Ni_plot_pdf.py b/doc/examples/Ni_plot_pdf.py similarity index 72% rename from examples/Ni_plot_pdf.py rename to doc/examples/Ni_plot_pdf.py index f6019d2a..603c65c9 100755 --- a/examples/Ni_plot_pdf.py +++ b/doc/examples/Ni_plot_pdf.py @@ -1,8 +1,10 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -'''Calculate PDF of FCC nickel and plot it using matplotlib. -''' +"""Calculate PDF of FCC nickel and plot it using matplotlib. +""" + +import pylab from diffpy.pdffit2 import PdfFit @@ -12,9 +14,9 @@ # load structure file in PDFFIT or DISCUS format P.read_struct("Ni.stru") -radiation_type = 'X' # x-rays +radiation_type = "X" # x-rays qmax = 30.0 # Q-cutoff used in PDF calculation in 1/A -qdamp = 0.01 # instrument Q-resolution factor, responsible for PDF decay +qdamp = 0.01 # instrument Q-resolution factor, responsible for PDF decay rmin = 0.01 # minimum r-value rmax = 30.0 # maximum r-value npts = 3000 # number of points in the r-grid @@ -28,11 +30,10 @@ G = P.getpdf_fit() # pylab is matplotlib interface with MATLAB-like plotting commands -import pylab pylab.plot(r, G) -pylab.xlabel(u'r (Å)') -pylab.ylabel(u'G (Å$^{-2}$)') -pylab.title('x-ray PDF of nickel simulated at Qmax = %g' % qmax) +pylab.xlabel("r (Å)") +pylab.ylabel("G (Å$^{-2}$)") +pylab.title("x-ray PDF of nickel simulated at Qmax = %g" % qmax) # display plot window, this must be the last command in the script pylab.show() diff --git a/examples/Ni_refinement.py b/doc/examples/Ni_refinement.py similarity index 77% rename from examples/Ni_refinement.py rename to doc/examples/Ni_refinement.py index 177659d2..665e92f4 100755 --- a/examples/Ni_refinement.py +++ b/doc/examples/Ni_refinement.py @@ -1,9 +1,11 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -'''Perform simple refinement of Ni structure to the experimental x-ray PDF. +"""Perform simple refinement of Ni structure to the experimental x-ray PDF. Save fitted curve, refined structure and results summary. -''' +""" + +import pylab from diffpy.pdffit2 import PdfFit @@ -14,11 +16,11 @@ # Load experimental x-ray PDF data qmax = 30.0 # Q-cutoff used in PDF calculation in 1/A -qdamp = 0.01 # instrument Q-resolution factor, responsible for PDF decay -pf.read_data('Ni-xray.gr', 'X', qmax, qdamp) +qdamp = 0.01 # instrument Q-resolution factor, responsible for PDF decay +pf.read_data("Ni-xray.gr", "X", qmax, qdamp) # Load nickel structure, must be in PDFFIT or DISCUS format -pf.read_struct('Ni.stru') +pf.read_struct("Ni.stru") # Configure Refinement ------------------------------------------------------- @@ -31,12 +33,12 @@ pf.setpar(1, pf.lat(1)) # Refine phase scale factor. Right side can have formulas. -pf.constrain('pscale', '@20 * 2') +pf.constrain("pscale", "@20 * 2") pf.setpar(20, pf.getvar(pf.pscale) / 2.0) # Refine PDF damping due to instrument Q-resolution. # Left side can be also passed as a reference to PdfFit object -pf.constrain(pf.qdamp, '@21') +pf.constrain(pf.qdamp, "@21") pf.setpar(21, 0.03) # Refine sharpening factor for correlated motion of close atoms. @@ -45,9 +47,9 @@ # Set all temperature factors isotropic and equal to @4 for idx in range(1, 5): - pf.constrain(pf.u11(idx), '@4') - pf.constrain(pf.u22(idx), '@4') - pf.constrain(pf.u33(idx), '@4') + pf.constrain(pf.u11(idx), "@4") + pf.constrain(pf.u22(idx), "@4") + pf.constrain(pf.u33(idx), "@4") pf.setpar(4, pf.u11(1)) # Refine --------------------------------------------------------------------- @@ -64,8 +66,6 @@ # Plot results --------------------------------------------------------------- # pylab is matplotlib interface with MATLAB-like plotting commands -import pylab - # obtain data from PdfFit calculator object r = pf.getR() Gobs = pf.getpdf_obs() @@ -76,13 +76,13 @@ Gdiff = pylab.array(Gobs) - pylab.array(Gfit) Gdiff_baseline = -10 -pylab.plot(r, Gobs, 'ko') -pylab.plot(r, Gfit, 'b-') -pylab.plot(r, Gdiff + Gdiff_baseline, 'r-') +pylab.plot(r, Gobs, "ko") +pylab.plot(r, Gfit, "b-") +pylab.plot(r, Gdiff + Gdiff_baseline, "r-") -pylab.xlabel(u'r (Å)') -pylab.ylabel(u'G (Å$^{-2}$)') -pylab.title('Fit of nickel to x-ray experimental PDF') +pylab.xlabel("r (Å)") +pylab.ylabel("G (Å$^{-2}$)") +pylab.title("Fit of nickel to x-ray experimental PDF") # display plot window, this must be the last command in the script pylab.show() diff --git a/doc/make.bat b/doc/make.bat new file mode 100644 index 00000000..2be83069 --- /dev/null +++ b/doc/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=PackagingScientificPython + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/doc/source/_static/.placeholder b/doc/source/_static/.placeholder new file mode 100644 index 00000000..e69de29b diff --git a/doc/source/api/diffpy.pdffit2.rst b/doc/source/api/diffpy.pdffit2.rst new file mode 100644 index 00000000..cd474770 --- /dev/null +++ b/doc/source/api/diffpy.pdffit2.rst @@ -0,0 +1,33 @@ +:tocdepth: -1 + +diffpy.pdffit2 package +====================== + +.. automodule:: diffpy.pdffit2 + :members: + :undoc-members: + :show-inheritance: + +diffpy.pdffit2.ipy_ext module +----------------------------- + +.. automodule:: diffpy.pdffit2.ipy_ext + :members: + :undoc-members: + :show-inheritance: + +diffpy.pdffit2.pdffit module +----------------------------- + +.. automodule:: diffpy.pdffit2.pdffit + :members: + :undoc-members: + :show-inheritance: + +diffpy.pdffit2.output module +----------------------------- + +.. automodule:: diffpy.pdffit2.output + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/conf.py b/doc/source/conf.py new file mode 100644 index 00000000..e5e8dace --- /dev/null +++ b/doc/source/conf.py @@ -0,0 +1,292 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# diffpy.pdffit2 documentation build configuration file, created by +# sphinx-quickstart on Thu Jan 30 15:49:41 2014. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import time +from importlib.metadata import version +from pathlib import Path + +# Eliminate autodoc warning +autodoc_mock_imports = ["diffpy.pdffit2"] + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use Path().resolve() to make it absolute, like shown here. +# sys.path.insert(0, str(Path(".").resolve())) +sys.path.insert(0, str(Path("../..").resolve())) +sys.path.insert(0, str(Path("../../src").resolve())) + +# abbreviations +ab_authors = "Billinge Group members and community contributors" + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.todo", + "sphinx.ext.viewcode", + "sphinx.ext.intersphinx", + "sphinx_rtd_theme", + "m2r", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_suffix = [".rst", ".md"] + +# The encoding of source files. +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = "index" + +# General information about the project. +project = "diffpy.pdffit2" +copyright = "%Y, The Trustees of Columbia University in the City of New York" + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. + +fullversion = version(project) +# The short X.Y version. +version = "".join(fullversion.split(".post")[:1]) +# The full version, including alpha/beta/rc tags. +release = fullversion + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +today = time.strftime("%B %d, %Y", time.localtime()) +year = today.split()[-1] +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' +# substitute YEAR in the copyright string +copyright = copyright.replace("%Y", year) + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ["build"] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = "sphinx" + +# A list of ignored prefixes for module index sorting. +modindex_common_prefix = ["diffpy.pdffit2"] + +# Display all warnings for missing links. +nitpicky = True + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + "navigation_with_keys": "true", +} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +# html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Output file base name for HTML help builder. +basename = "diffpy.pdffit2".replace(" ", "").replace(".", "") +htmlhelp_basename = basename + "doc" + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # 'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + # 'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + # 'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ("index", "diffpy.pdffit2.tex", "diffpy.pdffit2 Documentation", ab_authors, "manual"), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [("index", "diffpy.pdffit2", "diffpy.pdffit2 Documentation", ab_authors, 1)] + +# If true, show URL addresses after external links. +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + "index", + "diffpy.pdffit2", + "diffpy.pdffit2 Documentation", + ab_authors, + "diffpy.pdffit2", + "One line description of project.", + "Miscellaneous", + ), +] + +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False + + +# Example configuration for intersphinx: refer to the Python standard library. +# intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/epydoc/Makefile b/doc/source/epydoc/Makefile similarity index 100% rename from doc/epydoc/Makefile rename to doc/source/epydoc/Makefile diff --git a/doc/epydoc/epydoc.cfg b/doc/source/epydoc/epydoc.cfg similarity index 100% rename from doc/epydoc/epydoc.cfg rename to doc/source/epydoc/epydoc.cfg diff --git a/doc/source/index.rst b/doc/source/index.rst new file mode 100644 index 00000000..bc6f0043 --- /dev/null +++ b/doc/source/index.rst @@ -0,0 +1,44 @@ +####### +|title| +####### + +.. |title| replace:: diffpy.pdffit2 documentation + +diffpy.pdffit2 - PDFfit2 - real space structure refinement program.. + +| Software version |release|. +| Last updated |today|. + +======= +Authors +======= + +diffpy.pdffit2 is developed by Billinge Group +and its community contributors. + +For a detailed list of contributors see +https://github.com/diffpy/diffpy.pdffit2/graphs/contributors. + +============ +Installation +============ + +See the `README `_ +file included with the distribution. + +================= +Table of contents +================= +.. toctree:: + :titlesonly: + + license + release + Package API + +======= +Indices +======= + +* :ref:`genindex` +* :ref:`search` diff --git a/doc/source/license.rst b/doc/source/license.rst new file mode 100644 index 00000000..421a9ed7 --- /dev/null +++ b/doc/source/license.rst @@ -0,0 +1,5 @@ +:tocdepth: -1 + +.. index:: license + +.. include:: ../../LICENSE.rst diff --git a/doc/source/release.rst b/doc/source/release.rst new file mode 100644 index 00000000..27cd0cc9 --- /dev/null +++ b/doc/source/release.rst @@ -0,0 +1,5 @@ +:tocdepth: -1 + +.. index:: release notes + +.. include:: ../../CHANGELOG.rst diff --git a/environment.yml b/environment.yml new file mode 100644 index 00000000..5fb2f044 --- /dev/null +++ b/environment.yml @@ -0,0 +1,7 @@ +name: diffpy.pdffit2 +channels: + - conda-forge +dependencies: + - python>=3.10 + - pip + - conda diff --git a/news/TEMPLATE.rst b/news/TEMPLATE.rst new file mode 100644 index 00000000..790d30b1 --- /dev/null +++ b/news/TEMPLATE.rst @@ -0,0 +1,23 @@ +**Added:** + +* + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* diff --git a/news/news.rst b/news/news.rst new file mode 100644 index 00000000..e9bf5d01 --- /dev/null +++ b/news/news.rst @@ -0,0 +1,24 @@ +**Added:** + +* + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* Code linted to group flake8 standards +* Package structure moved to diffpy standard structure + +**Security:** + +* diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..6945ff83 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,72 @@ +[build-system] +requires = ["setuptools>=62.0", "setuptools-git-versioning<2"] +build-backend = "setuptools.build_meta" + +[project] +name = "diffpy.pdffit2" +dynamic=['version'] +authors = [ + { name="Simon J.L. Billinge group", email="simon.billinge@gmail.com" }, +] +maintainers = [ + { name="Simon J.L. Billinge group", email="simon.billinge@gmail.com" }, +] +description = "PDFfit2 - real space structure refinement program." +keywords = ['PDF structure refinement'] +readme = "README.rst" +requires-python = ">=3.10" +classifiers = [ + 'Development Status :: 5 - Production/Stable', + 'Environment :: Console', + 'Intended Audience :: Developers', + 'Intended Audience :: Science/Research', + 'License :: OSI Approved :: BSD License', + 'Operating System :: MacOS :: MacOS X', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: POSIX', + 'Operating System :: Unix', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Topic :: Scientific/Engineering :: Physics', + 'Topic :: Scientific/Engineering :: Chemistry', +] + +[project.urls] +Homepage = "https://github.com/diffpy/diffpy.pdffit2/" +Issues = "https://github.com/diffpy/diffpy.pdffit2/issues/" + +[tool.setuptools-git-versioning] +enabled = true +template = "{tag}" +dev_template = "{tag}" +dirty_template = "{tag}" + +[tool.setuptools.packages.find] +where = ["src"] # list of folders that contain the packages (["."] by default) +include = ["*"] # package names should match these glob patterns (["*"] by default) +exclude = ["diffpy.pdffit2.tests*"] # exclude packages matching these glob patterns (empty by default) +namespaces = false # to disable scanning PEP 420 namespaces (true by default) + +[tool.black] +line-length = 115 +include = '\.pyi?$' +exclude = ''' +/( + \.git + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | \.rst + | \.txt + | _build + | buck-out + | build + | dist + + # The following are specific to Black, you probably don't want those. + | blib2to3 + | tests/data +)/ +''' diff --git a/requirements/build.txt b/requirements/build.txt new file mode 100644 index 00000000..23094c91 --- /dev/null +++ b/requirements/build.txt @@ -0,0 +1,3 @@ +python +setuptools +gsl diff --git a/requirements/docs.txt b/requirements/docs.txt new file mode 100644 index 00000000..ab17b1c8 --- /dev/null +++ b/requirements/docs.txt @@ -0,0 +1,4 @@ +sphinx +sphinx_rtd_theme +doctr +m2r diff --git a/requirements/pip.txt b/requirements/pip.txt new file mode 100644 index 00000000..e69de29b diff --git a/requirements/run.txt b/requirements/run.txt new file mode 100644 index 00000000..33133cd6 --- /dev/null +++ b/requirements/run.txt @@ -0,0 +1,2 @@ +diffpy.structure +six diff --git a/requirements/test.txt b/requirements/test.txt new file mode 100644 index 00000000..6f9ccf84 --- /dev/null +++ b/requirements/test.txt @@ -0,0 +1,5 @@ +flake8 +pytest +codecov +coverage +pytest-env diff --git a/rever.xsh b/rever.xsh deleted file mode 100644 index 2af270b9..00000000 --- a/rever.xsh +++ /dev/null @@ -1,14 +0,0 @@ -$PROJECT = 'diffpy.pdffit2' -$ACTIVITIES = [ - 'tag', # Creates a tag for the new version number - 'push_tag', # Pushes the tag up to the $TAG_REMOTE - 'pypi', # Sends the package to pypi - 'ghrelease' # Creates a Github release entry for the new tag - ] -$PUSH_TAG_REMOTE = 'git@github.com:diffpy/diffpy.pdffit2.git' # Repo to push tags to -$GITHUB_ORG = 'diffpy' # Github org for Github releases and conda-forge -$GITHUB_REPO = 'diffpy.pdffit2' # Github repo for Github releases and conda-forge -$GHRELEASE_PREPEND = """See [CHANGELOG.md](CHANGELOG.md) for detailed release notes. - -The release is also available at [PyPI](https://pypi.org/project/diffpy.pdffit2/) and [Conda](https://anaconda.org/conda-forge/diffpy.pdffit2). -""" # release message diff --git a/setup.py b/setup.py index bb6bb72a..a788e91e 100755 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Installation script for diffpy.pdffit2 +# Extensions script for diffpy.pdffit2 """PDFfit2 - real space structure refinement engine @@ -8,103 +8,40 @@ Scripts: pdffit2 """ +import glob import os import re import sys import warnings -from setuptools import setup, find_packages -from setuptools import Extension +from setuptools import Extension, setup # Use this version when git data are not available, like in git zip archive. # Update when tagging a new release. -FALLBACK_VERSION = '1.4.2' +FALLBACK_VERSION = "1.4.3" -# determine if we run with Python 3. -PY3 = (sys.version_info[0] == 3) - -# versioncfgfile holds version data for git commit hash and date. -# It must reside in the same directory as version.py. MYDIR = os.path.dirname(os.path.abspath(__file__)) -versioncfgfile = os.path.join(MYDIR, 'diffpy/pdffit2/version.cfg') -gitarchivecfgfile = os.path.join(MYDIR, '.gitarchive.cfg') - - -def gitinfo(): - from subprocess import Popen, PIPE, check_output - kw = dict(stdout=PIPE, cwd=MYDIR, universal_newlines=True) - proc = Popen(['git', 'describe', '--tags', '--match=[v,V,[:digit:]]*'], **kw) - desc = proc.stdout.read() - proc = Popen(['git', 'log', '-1', '--format=%H %ct %ci'], **kw) - glog = proc.stdout.read() - rv = {} - rv['commit'], rv['timestamp'], rv['date'] = glog.strip().split(None, 2) - version = '.post'.join(desc.strip().split('-')[:2]).lstrip('vV') - rv['version'] = version - return rv - - -def getversioncfg(): - if PY3: - from configparser import RawConfigParser - else: - from ConfigParser import RawConfigParser - vd0 = dict(version=FALLBACK_VERSION, commit='', date='', timestamp=0) - # first fetch data from gitarchivecfgfile, ignore if it is unexpanded - g = vd0.copy() - cp0 = RawConfigParser(vd0) - cp0.read(gitarchivecfgfile) - if len(cp0.get('DEFAULT', 'commit')) > 20: - g = cp0.defaults() - mx = re.search(r'\btag: [vV]?(\d[^,]*)', g.pop('refnames')) - if mx: - g['version'] = mx.group(1) - # then try to obtain version data from git. - gitdir = os.path.join(MYDIR, '.git') - if os.path.exists(gitdir) or 'GIT_DIR' in os.environ: - try: - g = gitinfo() - except OSError: - pass - # finally, check and update the active version file - - cp = RawConfigParser() - cp.read(versioncfgfile) - d = cp.defaults() - rewrite = not d or (g['commit'] and ( - g['version'] != d.get('version') or g['commit'] != d.get('commit'))) - if rewrite: - cp.set('DEFAULT', 'version', g['version']) - cp.set('DEFAULT', 'commit', g['commit']) - cp.set('DEFAULT', 'date', g['date']) - cp.set('DEFAULT', 'timestamp', g['timestamp']) - with open(versioncfgfile, 'w') as fp: - cp.write(fp) - return cp - -versiondata = getversioncfg() # Helper functions ----------------------------------------------------------- + def get_compiler_type(): - """find compiler used for building extensions. - """ - cc_arg = [a for a in sys.argv if a.startswith('--compiler=')] + """find compiler used for building extensions.""" + cc_arg = [a for a in sys.argv if a.startswith("--compiler=")] if cc_arg: - compiler_type = cc_arg[-1].split('=', 1)[1] + compiler_type = cc_arg[-1].split("=", 1)[1] else: from distutils.ccompiler import new_compiler + compiler_type = new_compiler().compiler_type return compiler_type def get_gsl_config(): - '''Return dictionary with paths to GSL library. - ''' - gslcfgpaths = [os.path.join(p, 'gsl-config') - for p in ([MYDIR] + os.environ['PATH'].split(os.pathsep))] + """Return dictionary with paths to GSL library.""" + gslcfgpaths = [os.path.join(p, "gsl-config") for p in ([MYDIR] + os.environ["PATH"].split(os.pathsep))] gslcfgpaths = [p for p in gslcfgpaths if os.path.isfile(p)] - rv = {'include_dirs': [], 'library_dirs': []} + rv = {"include_dirs": [], "library_dirs": []} if not gslcfgpaths: wmsg = "Cannot find gsl-config in {!r} nor in system PATH." warnings.warn(wmsg.format(MYDIR)) @@ -112,41 +49,43 @@ def get_gsl_config(): gslcfg = gslcfgpaths[0] with open(gslcfg) as fp: txt = fp.read() - mprefix = re.search('(?m)^prefix=(.+)', txt) - minclude = re.search(r'(?m)^[^#]*\s-I(\S+)', txt) - mlibpath = re.search(r'(?m)^[^#]*\s-L(\S+)', txt) + mprefix = re.search("(?m)^prefix=(.+)", txt) + minclude = re.search(r"(?m)^[^#]*\s-I(\S+)", txt) + mlibpath = re.search(r"(?m)^[^#]*\s-L(\S+)", txt) if not mprefix: emsg = "Cannot find 'prefix=' line in {}." raise RuntimeError(emsg.format(gslcfg)) p = mprefix.group(1) - inc = minclude.group(1) if minclude else (p + '/include') - lib = mlibpath.group(1) if mlibpath else (p + '/lib') - rv['include_dirs'] += [inc] - rv['library_dirs'] += [lib] + inc = minclude.group(1) if minclude else (p + "/include") + lib = mlibpath.group(1) if mlibpath else (p + "/lib") + rv["include_dirs"] += [inc] + rv["library_dirs"] += [lib] return rv + def get_gsl_config_win(): - '''Return dictionary with paths to GSL library, windwows version. - This version is installed with conda. - ''' - conda_prefix = os.environ['CONDA_PREFIX'] - inc = os.path.join(conda_prefix, 'Library', 'include') - lib = os.path.join(conda_prefix, 'Library', 'lib') - rv = {'include_dirs': [], 'library_dirs': []} - rv['include_dirs'] += [inc] - rv['library_dirs'] += [lib] + """Return dictionary with paths to GSL library, windwows version. + This version is installed with conda. + """ + conda_prefix = os.environ["CONDA_PREFIX"] + inc = os.path.join(conda_prefix, "Library", "include") + lib = os.path.join(conda_prefix, "Library", "lib") + rv = {"include_dirs": [], "library_dirs": []} + rv["include_dirs"] += [inc] + rv["library_dirs"] += [lib] return rv + # ---------------------------------------------------------------------------- # compile and link options define_macros = [] os_name = os.name -if os_name == 'nt': +if os_name == "nt": gcfg = get_gsl_config_win() else: gcfg = get_gsl_config() -include_dirs = [MYDIR] + gcfg['include_dirs'] +include_dirs = [MYDIR] + gcfg["include_dirs"] library_dirs = [] libraries = [] extra_objects = [] @@ -155,102 +94,39 @@ def get_gsl_config_win(): compiler_type = get_compiler_type() if compiler_type in ("unix", "cygwin", "mingw32"): - extra_compile_args = ['-std=c++11', '-Wall', '-Wno-write-strings', - '-O3', '-funroll-loops', '-ffast-math'] - extra_objects += ((p + '/libgsl.a') for p in gcfg['library_dirs']) + extra_compile_args = ["-std=c++11", "-Wall", "-Wno-write-strings", "-O3", "-funroll-loops", "-ffast-math"] + extra_objects += ((p + "/libgsl.a") for p in gcfg["library_dirs"]) elif compiler_type == "msvc": - define_macros += [('_USE_MATH_DEFINES', None)] - extra_compile_args = ['/EHs'] - libraries += ['gsl'] - library_dirs += gcfg['library_dirs'] + define_macros += [("_USE_MATH_DEFINES", None)] + extra_compile_args = ["/EHs"] + libraries += ["gsl"] + library_dirs += gcfg["library_dirs"] # add optimization flags for other compilers if needed +# define extension arguments here +ext_kws = { + "include_dirs": include_dirs, + "libraries": libraries, + "library_dirs": library_dirs, + "define_macros": define_macros, + "extra_compile_args": extra_compile_args, + "extra_link_args": extra_link_args, + "extra_objects": extra_objects, +} -# define extension here -pdffit2module = Extension('diffpy.pdffit2.pdffit2', [ - 'pdffit2module/bindings.cc', - 'pdffit2module/misc.cc', - 'pdffit2module/pdffit2module.cc', - 'pdffit2module/pyexceptions.cc', - 'libpdffit2/Atom.cc', - 'libpdffit2/LocalPeriodicTable.cc', - 'libpdffit2/OutputStreams.cc', - 'libpdffit2/PeriodicTable.cc', - 'libpdffit2/PointsInSphere.cc', - 'libpdffit2/StringUtils.cc', - 'libpdffit2/fit.cc', - 'libpdffit2/gaussj.cc', - 'libpdffit2/metric.cc', - 'libpdffit2/nrutil.cc', - 'libpdffit2/output.cc', - 'libpdffit2/parser.cc', - 'libpdffit2/pdf.cc', - 'libpdffit2/pdffit.cc', - 'libpdffit2/pdflsmin.cc', - 'libpdffit2/scatlen.cc', - 'libpdffit2/stru.cc', - ], - include_dirs = include_dirs, - libraries = libraries, - library_dirs = library_dirs, - define_macros = define_macros, - extra_compile_args = extra_compile_args, - extra_link_args = extra_link_args, - extra_objects = extra_objects, -) +# define extension here +def create_extensions(): + ext = Extension("diffpy.pdffit2.pdffit2", glob.glob("src/extensions/**/*.cc"), **ext_kws) + return [ext] -with open(os.path.join(MYDIR, 'README.rst')) as fp: - long_description = fp.read() -# define distribution setup_args = dict( - name = 'diffpy.pdffit2', - version = versiondata.get('DEFAULT', 'version'), - packages = find_packages(), - test_suite = 'diffpy.pdffit2.tests', - ext_modules = [pdffit2module], - include_package_data = True, - install_requires = [ - 'six', - 'diffpy.structure>=3', - ], - zip_safe = False, - - author = 'Simon J.L. Billinge', - author_email = 'sb2896@columbia.edu', - maintainer = 'Pavol Juhas', - maintainer_email = 'pavol.juhas@gmail.com', - url = 'https://github.com/diffpy/diffpy.pdffit2', - description = 'PDFfit2 - real space structure refinement program.', - long_description = long_description, - long_description_content_type = 'text/x-rst', - license = 'BSD', - keywords = 'PDF structure refinement', - classifiers = [ - # List of possible values at - # http://pypi.python.org/pypi?:action=list_classifiers - 'Development Status :: 5 - Production/Stable', - 'Environment :: Console', - 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: BSD License', - 'Operating System :: MacOS', - 'Operating System :: Microsoft :: Windows', - 'Operating System :: POSIX', - 'Programming Language :: C++', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: 3.12', - 'Topic :: Scientific/Engineering :: Chemistry', - 'Topic :: Scientific/Engineering :: Physics', - ], + ext_modules=[], ) -if __name__ == '__main__': +if __name__ == "__main__": + setup_args["ext_modules"] = create_extensions() setup(**setup_args) # End of file diff --git a/src/diffpy/__init__.py b/src/diffpy/__init__.py new file mode 100644 index 00000000..e1ae0400 --- /dev/null +++ b/src/diffpy/__init__.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +############################################################################## +# +# (c) 2008 trustees of the Michigan State University. +# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. +# +# File coded by: Billinge Group members and community contributors. +# +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.pdffit2/graphs/contributors +# +# See LICENSE.rst for license information. +# +############################################################################## + +"""diffpy - tools for structure analysis by diffraction. + +Blank namespace package for module diffpy.""" + + +from pkgutil import extend_path + +__path__ = extend_path(__path__, __name__) + +# End of file diff --git a/src/diffpy/pdffit2/__init__.py b/src/diffpy/pdffit2/__init__.py new file mode 100644 index 00000000..fe3fbce3 --- /dev/null +++ b/src/diffpy/pdffit2/__init__.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +############################################################################## +# +# (c) 2006 trustees of the Michigan State University. +# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. +# +# File coded by: Billinge Group members and community contributors. +# +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.pdffit2/graphs/contributors +# +# See LICENSE.rst for license information. +# +############################################################################## + +"""PDFfit2 - real space structure refinement program.""" + +# package version +from diffpy.pdffit2.output import redirect_stdout +from diffpy.pdffit2.version import __version__, __date__ +from diffpy.pdffit2.pdffit import PdfFit +from diffpy.pdffit2.pdffit2 import is_element + +# silence the pyflakes syntax checker +assert __version__ or True +assert __date__ or True +assert all((PdfFit, redirect_stdout, is_element)) + +# End of file diff --git a/diffpy/pdffit2/ipy_ext.py b/src/diffpy/pdffit2/ipy_ext.py similarity index 85% rename from diffpy/pdffit2/ipy_ext.py rename to src/diffpy/pdffit2/ipy_ext.py index 13b41214..4546967e 100644 --- a/diffpy/pdffit2/ipy_ext.py +++ b/src/diffpy/pdffit2/ipy_ext.py @@ -9,9 +9,10 @@ def load_ipython_extension(ipython): from diffpy.pdffit2 import PdfFit + pf = PdfFit() pdf = EasyPDFPlotting(pf) - print(' Type help(pdffit) or help(topic) for information.\n') + print(" Type help(pdffit) or help(topic) for information.\n") ns = dict(pdffit=PdfFit, pdf=pdf) pf._exportAll(ns) ipython.user_ns.update(ns) @@ -19,8 +20,7 @@ def load_ipython_extension(ipython): class EasyPDFPlotting(object): - """Convenience functions for accessing and plotting PDFfit2 data. - """ + """Convenience functions for accessing and plotting PDFfit2 data.""" def __init__(self, pdffit_instance): self._pdffit = pdffit_instance @@ -53,8 +53,10 @@ def showfit(self, offset=None): No return value. """ - from matplotlib.pyplot import gca from math import floor + + from matplotlib.pyplot import gca + cr = self.r cGobs = self.Gobs cGcalc = self.Gcalc @@ -62,29 +64,32 @@ def showfit(self, offset=None): if offset is None: offset = floor(min([min(cGobs), min(cGcalc)]) - max(cGdiff)) ax = gca() - ax.plot(cr, cGobs, 'r.', cr, cGcalc, 'b-', cr, cGdiff + offset, 'g-') + ax.plot(cr, cGobs, "r.", cr, cGcalc, "b-", cr, cGdiff + offset, "g-") xl = ax.xaxis.get_label().get_text() yl = ax.yaxis.get_label().get_text() if xl == "": - ax.set_xlabel('r (A)') + ax.set_xlabel("r (A)") if yl == "": - ax.set_ylabel('G (A**-2)') + ax.set_ylabel("G (A**-2)") return def showRw(self): "Plot cumulative Rw." from matplotlib.pyplot import gca + cRw = self._asarray(self._pdffit.getcrw()) ax = gca() ax.plot(self.r, cRw) - ax.set_title('Cumulative Rw = %.4f' % cRw[-1]) - ax.set_xlabel('r') - ax.set_ylabel('Rw') + ax.set_title("Cumulative Rw = %.4f" % cRw[-1]) + ax.set_xlabel("r") + ax.set_ylabel("Rw") return @staticmethod def _asarray(x, dtype=None): import numpy + return numpy.asarray(x, dtype=dtype) + # End of class EasyPDFPlotting diff --git a/diffpy/pdffit2/output.py b/src/diffpy/pdffit2/output.py similarity index 99% rename from diffpy/pdffit2/output.py rename to src/diffpy/pdffit2/output.py index 71bcfe76..6d1247cf 100644 --- a/diffpy/pdffit2/output.py +++ b/src/diffpy/pdffit2/output.py @@ -21,6 +21,7 @@ # create module variable stdout from sys import stdout as stdout + # silence pyflakes checker assert stdout @@ -30,9 +31,11 @@ def redirect_stdout(dst): The dst value is stored in module variable stdout. """ from diffpy.pdffit2.pdffit2 import redirect_stdout + redirect_stdout(dst) global stdout stdout = dst return + # End of file diff --git a/diffpy/pdffit2/pdffit.py b/src/diffpy/pdffit2/pdffit.py similarity index 94% rename from diffpy/pdffit2/pdffit.py rename to src/diffpy/pdffit2/pdffit.py index a3bc2d17..255e8b0f 100644 --- a/diffpy/pdffit2/pdffit.py +++ b/src/diffpy/pdffit2/pdffit.py @@ -26,11 +26,11 @@ # Note that "import diffpy.pdffit2.output as output" would # crash with AttributeError when executed during imports of # parent packages. -from diffpy.pdffit2 import pdffit2 -from diffpy.pdffit2 import output +from diffpy.pdffit2 import output, pdffit2 # helper routines + def _format_value_std(value, stdev): """Convert value to a string with standard deviation in brackets. @@ -39,9 +39,9 @@ def _format_value_std(value, stdev): Return string. """ - if stdev > abs(value)*1e-8: + if stdev > abs(value) * 1e-8: s = "%g (%g)" % (value, stdev) - elif str(stdev) == 'nan': + elif str(stdev) == "nan": s = "%g (NaN)" % value else: s = "%g" % value @@ -63,7 +63,7 @@ def _format_bond_length(dij, ddij, ij1, symij): s0 = "%s (#%i)" % (symij[0], ij1[0]) s1 = "%s (#%i)" % (symij[1], ij1[1]) leader0 = " " + s0.ljust(w_smbidx) + " - " + s1 + " " - leader1 = leader0.ljust(w_equals) + '= ' + leader1 = leader0.ljust(w_equals) + "= " s = leader1 + _format_value_std(dij, ddij) + " A" return s @@ -111,14 +111,14 @@ class PdfFit(object): # constants and enumerators from pdffit.h: # selection of all atoms - selalias = { 'ALL' : -1 } + selalias = {"ALL": -1} # constraint type identifiers - FCON = { 'USER' : 0, 'IDENT' : 1, 'FCOMP' : 2, 'FSQR' : 3 } + FCON = {"USER": 0, "IDENT": 1, "FCOMP": 2, "FSQR": 3} # scattering type identifiers - Sctp = { 'X' : 0, 'N' : 1 } + Sctp = {"X": 0, "N": 1} def _exportAll(self, namespace): - """ _exportAll(self, namespace) --> Export all 'public' class methods + """_exportAll(self, namespace) --> Export all 'public' class methods into namespace. This function allows for a module-level PdfFit object which doesn't have @@ -129,27 +129,33 @@ def _exportAll(self, namespace): # string aliases (var = "var") for a in itertools.chain(self.selalias, self.FCON, self.Sctp): exec("%s = %r" % (a, a), namespace) - public = [ a for a in dir(self) if "__" not in a and a not in - ["_handle", "_exportAll", "selalias", "FCON", "Sctp" ] ] + public = [ + a + for a in dir(self) + if "__" not in a and a not in ["_handle", "_exportAll", "selalias", "FCON", "Sctp"] + ] for funcname in public: namespace[funcname] = getattr(self, funcname) return def intro(): - """Show introductory message. - """ + """Show introductory message.""" import re - from diffpy.pdffit2 import __version__, __date__ + + from diffpy.pdffit2 import __date__, __version__ + date = __date__[:10] - d = {'version' : __version__, 'date' : date, - 'year' : date[:4] or '2019'} + d = {"version": __version__, "date": date, "year": date[:4] or "2019"} msg = __intro_message__ % d - filler = lambda mx : (mx.group(0).rstrip(' *').ljust(77) + '*') - msg_ljust = re.sub('(?m)^(.{1,77}|.{79}.*)$', filler, msg) + + def filler(mx): + return mx.group(0).rstrip(" *").ljust(77) + "*" + + msg_ljust = re.sub("(?m)^(.{1,77}|.{79}.*)$", filler, msg) print(msg_ljust, file=output.stdout) return - intro = staticmethod(intro) + intro = staticmethod(intro) def add_structure(self, stru): """add_structure(stru) --> Add new structure to PdfFit instance. @@ -160,11 +166,10 @@ def add_structure(self, stru): Raises pdffit2.structureError when stru contains unknown atom species. """ - s = stru.writeStr('pdffit') + s = stru.writeStr("pdffit") self.read_struct_string(s) return - def read_struct(self, struct): """read_struct(struct) --> Read structure from file into memory. @@ -180,7 +185,6 @@ def read_struct(self, struct): self.stru_files.append(struct) return - def read_struct_string(self, struct, name=""): """read_struct_string(struct, name = "") --> Read structure from a string into memory. @@ -197,7 +201,6 @@ def read_struct_string(self, struct, name=""): self.stru_files.append(name) return - def read_data(self, data, stype, qmax, qdamp): """read_data(data, stype, qmax, qdamp) --> Read pdf data from file into memory. @@ -214,7 +217,6 @@ def read_data(self, data, stype, qmax, qdamp): self.data_files.append(data) return - def read_data_string(self, data, stype, qmax, qdamp, name=""): """read_data_string(data, stype, qmax, qdamp, name = "") --> Read pdf data from a string into memory. @@ -226,15 +228,12 @@ def read_data_string(self, data, stype, qmax, qdamp, name=""): qdamp -- instrumental Q-resolution factor name -- tag with which to label data """ - pdffit2.read_data_string(self._handle, data, six.b(stype), qmax, - qdamp, name) + pdffit2.read_data_string(self._handle, data, six.b(stype), qmax, qdamp, name) name = data self.data_files.append(name) return - - def read_data_lists(self, stype, qmax, qdamp, r_data, Gr_data, - dGr_data = None, name = "list"): + def read_data_lists(self, stype, qmax, qdamp, r_data, Gr_data, dGr_data=None, name="list"): """read_data_lists(stype, qmax, qdamp, r_data, Gr_data, dGr_data = None, name = "list") --> Read pdf data into memory from lists. @@ -250,12 +249,10 @@ def read_data_lists(self, stype, qmax, qdamp, r_data, Gr_data, Raises: ValueError when the data lists are of different length """ - pdffit2.read_data_arrays(self._handle, six.b(stype), qmax, qdamp, - r_data, Gr_data, dGr_data, name) + pdffit2.read_data_arrays(self._handle, six.b(stype), qmax, qdamp, r_data, Gr_data, dGr_data, name) self.data_files.append(name) return - def pdfrange(self, iset, rmin, rmax): """pdfrange(iset, rmin, rmax) --> Set the range of the fit. @@ -268,15 +265,13 @@ def pdfrange(self, iset, rmin, rmax): pdffit2.pdfrange(self._handle, iset, rmin, rmax) return - def reset(self): """reset() --> Clear all stored fit, structure, and parameter data.""" self.stru_files = [] self.data_files = [] - pdffit2.reset(self._handle); + pdffit2.reset(self._handle) return - def alloc(self, stype, qmax, qdamp, rmin, rmax, bin): """alloc(stype, qmax, qdamp, rmin, rmax, bin) --> Allocate space for a PDF calculation. @@ -295,11 +290,9 @@ def alloc(self, stype, qmax, qdamp, rmin, rmax, bin): ValueError for bad input values pdffit.unassignedError when no structure has been loaded """ - pdffit2.alloc(self._handle, six.b(stype), qmax, qdamp, rmin, - rmax, bin) + pdffit2.alloc(self._handle, six.b(stype), qmax, qdamp, rmin, rmax, bin) return - def calc(self): """calc() --> Calculate the PDF of the imported structure. @@ -315,7 +308,6 @@ def calc(self): pdffit2.calc(self._handle) return - def refine(self, toler=0.00000001): """refine(toler = 0.00000001) --> Fit the theory to the imported data. @@ -335,7 +327,6 @@ def refine(self, toler=0.00000001): step += 1 return - def refine_step(self, toler=0.00000001): """refine_step(toler = 0.00000001) --> Run a single step of the fit. @@ -353,7 +344,6 @@ def refine_step(self, toler=0.00000001): self.finished = pdffit2.refine_step(self._handle, toler) return self.finished - def save_pdf(self, iset, fname): """save_pdf(iset, fname) --> Save calculated or fitted PDF to file. @@ -366,7 +356,6 @@ def save_pdf(self, iset, fname): pdffit2.save_pdf(self._handle, iset, fname) return - def save_pdf_string(self, iset): """save_pdf_string(iset) --> Save calculated or fitted PDF to string. @@ -380,7 +369,6 @@ def save_pdf_string(self, iset): pdffilestring = pdffit2.save_pdf(self._handle, iset, "") return pdffilestring - def save_dif(self, iset, fname): """save_dif(iset, fname) --> Save data and fitted PDF difference to file. @@ -394,7 +382,6 @@ def save_dif(self, iset, fname): pdffit2.save_dif(self._handle, iset, fname) return - def save_dif_string(self, iset): """save_dif_string(iset) --> Save data and fitted PDF difference to string. @@ -409,7 +396,6 @@ def save_dif_string(self, iset): diffilestring = pdffit2.save_dif(self._handle, iset, "") return diffilestring - def save_res(self, fname): """save_res(fname) --> Save fit-specific data to file. @@ -420,7 +406,6 @@ def save_res(self, fname): pdffit2.save_res(self._handle, fname) return - def save_res_string(self): """save_res_string() --> Save fit-specific data to a string. @@ -432,7 +417,6 @@ def save_res_string(self): resfilestring = pdffit2.save_res(self._handle, "") return resfilestring - def get_structure(self, ip): """get_structure(ip) --> Get a copy of specified phase data. @@ -442,12 +426,12 @@ def get_structure(self, ip): Raise pdffit2.unassignedError if phase ip is undefined. """ from diffpy.structure import PDFFitStructure + s = self.save_struct_string(ip) stru = PDFFitStructure() - stru.readStr(s, 'pdffit') + stru.readStr(s, "pdffit") return stru - def save_struct(self, ip, fname): """save_struct(ip, fname) --> Save structure resulting from fit to file. @@ -461,7 +445,6 @@ def save_struct(self, ip, fname): pdffit2.save_struct(self._handle, ip, fname) return - def save_struct_string(self, ip): """save_struct(ip) --> Save structure resulting from fit to string. @@ -475,7 +458,6 @@ def save_struct_string(self, ip): structfilestring = pdffit2.save_struct(self._handle, ip, "") return structfilestring - def show_struct(self, ip): """show_struct(ip) --> Print structure resulting from fit. @@ -486,7 +468,6 @@ def show_struct(self, ip): pdffit2.show_struct(self._handle, ip) return - def constrain(self, var, par, fcon=None): """constrain(var, par[, fcon]) --> Constrain a variable to a parameter. @@ -520,7 +501,6 @@ def constrain(self, var, par, fcon=None): pdffit2.constrain_int(self._handle, var_ref, varnc, par) return - def setpar(self, par, val): """setpar(par, val) --> Set value of constrained parameter. @@ -540,7 +520,6 @@ def setpar(self, par, val): pdffit2.setpar_RV(self._handle, par, var_ref) return - def setvar(self, var, val): """setvar(var, val) --> Set the value of a variable. @@ -552,7 +531,6 @@ def setvar(self, var, val): pdffit2.setvar(self._handle, var_ref, val) return - def getvar(self, var): """getvar(var) --> Get stored value of a variable. @@ -564,7 +542,6 @@ def getvar(self, var): retval = pdffit2.getvar(self._handle, var_ref) return retval - def getrw(self): """getrw() --> Get normalized total error of the fit rw. @@ -575,7 +552,6 @@ def getrw(self): rw = pdffit2.getrw(self._handle) return rw - def getcrw(self): """getcrw() --> Get cumulative Rw for the current dataset. @@ -591,7 +567,6 @@ def getcrw(self): crw = pdffit2.getcrw(self._handle) return crw - def getR(self): """getR() --> Get r-points used in the fit. @@ -606,7 +581,6 @@ def getR(self): R = pdffit2.getR(self._handle) return R - def getpdf_fit(self): """getpdf_fit() --> Get fitted PDF. @@ -620,7 +594,6 @@ def getpdf_fit(self): pdfdata = pdffit2.getpdf_fit(self._handle) return pdfdata - def getpdf_obs(self): """getpdf_obs() --> Get observed PDF. @@ -635,7 +608,6 @@ def getpdf_obs(self): pdfdata = pdffit2.getpdf_obs(self._handle) return pdfdata - def getpdf_diff(self): """Obtain difference between observed and fitted PDF. @@ -650,7 +622,6 @@ def getpdf_diff(self): Gdiff = pdffit2.getpdf_diff(self._handle) return Gdiff - def get_atoms(self, ip=None): """get_atoms() --> Get element symbols of all atoms in the structure. @@ -663,11 +634,12 @@ def get_atoms(self, ip=None): Returns: List of atom names in structure. """ - if ip is None: rv = pdffit2.get_atoms(self._handle) - else: rv = pdffit2.get_atoms(self._handle, ip) + if ip is None: + rv = pdffit2.get_atoms(self._handle) + else: + rv = pdffit2.get_atoms(self._handle, ip) return rv - def get_atom_types(self, ip=None): """get_atom_types() --> Ordered unique element symbols in the structure. @@ -681,11 +653,12 @@ def get_atom_types(self, ip=None): Returns: List of unique atom symbols as they occur in structure. """ - if ip is None: rv = pdffit2.get_atom_types(self._handle) - else: rv = pdffit2.get_atom_types(self._handle, ip) + if ip is None: + rv = pdffit2.get_atom_types(self._handle) + else: + rv = pdffit2.get_atom_types(self._handle, ip) return rv - def getpar(self, par): """getpar(par) --> Get value of parameter. @@ -693,7 +666,6 @@ def getpar(self, par): """ return pdffit2.getpar(self._handle, par) - def fixpar(self, par): """fixpar(par) --> Fix a parameter. @@ -707,7 +679,6 @@ def fixpar(self, par): pdffit2.fixpar(self._handle, par) return - def freepar(self, par): """freepar(par) --> Free a parameter. @@ -721,7 +692,6 @@ def freepar(self, par): pdffit2.freepar(self._handle, par) return - def setphase(self, ip): """setphase(ip) --> Switch to phase ip. @@ -735,7 +705,6 @@ def setphase(self, ip): pdffit2.setphase(self._handle, ip) return - def setdata(self, iset): """setdata(iset) --> Set the data set in focus. @@ -746,7 +715,6 @@ def setdata(self, iset): pdffit2.setdata(self._handle, iset) return - def psel(self, ip): """psel(ip) --> Include phase ip in calculation of total PDF @@ -759,7 +727,6 @@ def psel(self, ip): pdffit2.psel(self._handle, ip) return - def pdesel(self, ip): """pdesel(ip) --> Exclude phase ip from calculation of total PDF. @@ -772,7 +739,6 @@ def pdesel(self, ip): pdffit2.pdesel(self._handle, ip) return - def selectAtomType(self, ip, ijchar, symbol, flag): """Configure partial PDF - mark the specified atom type in phase ip as included or excluded as a first or second in pair for distance @@ -790,7 +756,6 @@ def selectAtomType(self, ip, ijchar, symbol, flag): pdffit2.selectAtomType(self._handle, ip, six.b(ijchar), symbol, flag) return - def selectAtomIndex(self, ip, ijchar, aidx, flag): """Configure partial PDF - mark the atom of given index in phase ip as included or excluded as a first or second in pair for distance @@ -808,7 +773,6 @@ def selectAtomIndex(self, ip, ijchar, aidx, flag): pdffit2.selectAtomIndex(self._handle, ip, six.b(ijchar), aidx, flag) return - def selectAll(self, ip, ijchar): """Configure partial PDF - include all atoms of phase ip as first or second element in pair for distance evaluation. @@ -823,7 +787,6 @@ def selectAll(self, ip, ijchar): pdffit2.selectAll(self._handle, ip, six.b(ijchar)) return - def selectNone(self, ip, ijchar): """Configure partial PDF - exclude all atoms of phase ip from first or second element of pair distance evaluation. @@ -838,7 +801,6 @@ def selectNone(self, ip, ijchar): pdffit2.selectNone(self._handle, ip, six.b(ijchar)) return - def bang(self, i, j, k): """bang(i, j, k) --> Show bond angle defined by atoms i, j, k. @@ -850,14 +812,18 @@ def bang(self, i, j, k): angle, stdev = pdffit2.bond_angle(self._handle, i, j, k) # indices should be already checked here by bond_angle atom_symbols = self.get_atoms() - leader = " %s (#%i) - %s (#%i) - %s (#%i) = " % \ - (atom_symbols[i-1], i, atom_symbols[j-1], j, - atom_symbols[k-1], k) + leader = " %s (#%i) - %s (#%i) - %s (#%i) = " % ( + atom_symbols[i - 1], + i, + atom_symbols[j - 1], + j, + atom_symbols[k - 1], + k, + ) s = leader + _format_value_std(angle, stdev) + " degrees" print(s, file=output.stdout) return - def bond_angle(self, i, j, k): """bond_angle(i, j, k) --> bond angle defined by atoms i, j, k. Angle is calculated using the shortest ji and jk lengths with @@ -873,7 +839,6 @@ def bond_angle(self, i, j, k): rv = pdffit2.bond_angle(self._handle, i, j, k) return rv - def blen(self, *args): """blen(i, j) --> Show bond length defined by atoms i and j. @@ -897,42 +862,42 @@ def blen(self, *args): pdffit.unassignedError when no structure has been loaded """ # first form - if len(args)==2: + if len(args) == 2: dij, ddij = self.bond_length_atoms(*args[0:2]) atom_symbols = self.get_atoms() ij = (args[0], args[1]) # indices were already checked in bond_length_atoms call assert (0 <= min(ij) - 1) and (max(ij) - 1 < len(atom_symbols)) - symij = ( atom_symbols[ij[0] - 1].upper(), - atom_symbols[ij[1] - 1].upper() ) + symij = (atom_symbols[ij[0] - 1].upper(), atom_symbols[ij[1] - 1].upper()) print(_format_bond_length(dij, ddij, ij, symij), file=output.stdout) # second form - elif len(args)==4: + elif len(args) == 4: a1, a2, lb, ub = args try: atom_types = self.get_atom_types() - if isinstance(a1, numbers.Integral): a1 = atom_types[a1 - 1] - if isinstance(a2, numbers.Integral): a2 = atom_types[a2 - 1] + if isinstance(a1, numbers.Integral): + a1 = atom_types[a1 - 1] + if isinstance(a2, numbers.Integral): + a2 = atom_types[a2 - 1] except IndexError: # index of non-existant atom type return # arguments are OK here, get bond length dictionary bld = pdffit2.bond_length_types(self._handle, a1, a2, lb, ub) - s = "(%s,%s) bond lengths in [%gA,%gA] for current phase :" % \ - (a1, a2, lb, ub) + s = "(%s,%s) bond lengths in [%gA,%gA] for current phase :" % (a1, a2, lb, ub) print(s, file=output.stdout) atom_symbols = self.get_atoms() - npts = len(bld['dij']) + npts = len(bld["dij"]) for idx in range(npts): - dij = bld['dij'][idx] - ddij = bld['ddij'][idx] - ij0 = bld['ij0'][idx] - ij1 = bld['ij1'][idx] + dij = bld["dij"][idx] + ddij = bld["ddij"][idx] + ij0 = bld["ij0"][idx] + ij1 = bld["ij1"][idx] symij = (atom_symbols[ij0[0]], atom_symbols[ij0[1]]) s = _format_bond_length(dij, ddij, ij1, symij) print(s, file=output.stdout) print(file=output.stdout) - if not bld['dij']: + if not bld["dij"]: print(" *** No pairs found ***", file=output.stdout) else: emsg = "blen() takes 2 or 4 arguments (%i given)" % len(args) @@ -940,7 +905,6 @@ def blen(self, *args): # done return - def bond_length_atoms(self, i, j): """bond_length_atoms(i, j) --> shortest distance between atoms i, j. Periodic boundary conditions are applied to find the shortest bond. @@ -956,7 +920,6 @@ def bond_length_atoms(self, i, j): rv = pdffit2.bond_length_atoms(self._handle, i, j) return rv - def bond_length_types(self, a1, a2, lb, ub): """bond_length_types(a1, a2, lb, ub) --> get all a1-a2 distances. @@ -978,7 +941,6 @@ def bond_length_types(self, a1, a2, lb, ub): rv = pdffit2.bond_length_types(self._handle, a1, a2, lb, ub) return rv - def show_scat(self, stype): """show_scat(stype) --> Print scattering length for all atoms in the current phase. @@ -990,7 +952,6 @@ def show_scat(self, stype): print(self.get_scat_string(stype), file=output.stdout) return - def get_scat_string(self, stype): """get_scat_string(stype) --> Get string with scattering factors of all atoms in the current phase. @@ -1004,7 +965,6 @@ def get_scat_string(self, stype): """ return pdffit2.get_scat_string(self._handle, six.b(stype)) - def get_scat(self, stype, element): """get_scat(stype, element) --> Get active scattering factor for given element. If scattering factor has been changed using @@ -1022,7 +982,6 @@ def get_scat(self, stype, element): rv = pdffit2.get_scat(self._handle, six.b(stype), element) return rv - def set_scat(self, stype, element, value): """set_scat(stype, element, value) --> Set custom scattering factor for given element. The new scattering factor applies only for the @@ -1043,7 +1002,6 @@ def set_scat(self, stype, element, value): pdffit2.set_scat(self._handle, six.b(stype), element, value) return - def reset_scat(self, element): """reset_scat(stype, element) --> Reset scattering factors for given element to their standard values. The reset_scat applies @@ -1057,7 +1015,6 @@ def reset_scat(self, element): pdffit2.reset_scat(self._handle, element) return - def num_atoms(self): """num_atoms() --> Get number of atoms in current phase. @@ -1065,7 +1022,6 @@ def num_atoms(self): """ return pdffit2.num_atoms(self._handle) - def num_phases(self): """num_phases() --> Number of phases loaded in PdfFit instance. @@ -1076,7 +1032,6 @@ def num_phases(self): n = pdffit2.num_phases(self._handle) return n - def num_datasets(self): """num_datasets() --> Number of datasets loaded in PdfFit instance. @@ -1087,7 +1042,6 @@ def num_datasets(self): n = pdffit2.num_datasets(self._handle) return n - def phase_fractions(self): """phase_fractions() --> relative phase fractions for current dataset. Convert phase scale factors to relative phase fractions given the @@ -1119,30 +1073,30 @@ def lat(n): 5 <==> 'beta' 6 <==> 'gamma' """ - LatParams = { 'a':1, 'b':2, 'c':3, 'alpha':4, 'beta':5, 'gamma':6 } + LatParams = {"a": 1, "b": 2, "c": 3, "alpha": 4, "beta": 5, "gamma": 6} if isinstance(n, six.string_types): n = LatParams[n] return "lat(%i)" % n - lat = staticmethod(lat) + lat = staticmethod(lat) def x(i): """x(i) --> Get reference to x-value of atom i.""" return "x(%i)" % i - x = staticmethod(x) + x = staticmethod(x) def y(i): """y(i) --> Get reference to y-value of atom i.""" return "y(%i)" % i - y = staticmethod(y) + y = staticmethod(y) def z(i): """z(i) --> Get reference to z-value of atom i.""" return "z(%i)" % i - z = staticmethod(z) + z = staticmethod(z) def u11(i): """u11(i) --> Get reference to U(1,1) for atom i. @@ -1150,8 +1104,8 @@ def u11(i): U is the anisotropic thermal factor tensor. """ return "u11(%i)" % i - u11 = staticmethod(u11) + u11 = staticmethod(u11) def u22(i): """u22(i) --> Get reference to U(2,2) for atom i. @@ -1159,8 +1113,8 @@ def u22(i): U is the anisotropic thermal factor tensor. """ return "u22(%i)" % i - u22 = staticmethod(u22) + u22 = staticmethod(u22) def u33(i): """u33(i) --> Get reference to U(3,3) for atom i. @@ -1168,8 +1122,8 @@ def u33(i): U is the anisotropic thermal factor tensor. """ return "u33(%i)" % i - u33 = staticmethod(u33) + u33 = staticmethod(u33) def u12(i): """u12(i) --> Get reference to U(1,2) for atom i. @@ -1177,8 +1131,8 @@ def u12(i): U is the anisotropic thermal factor tensor. """ return "u12(%i)" % i - u12 = staticmethod(u12) + u12 = staticmethod(u12) def u13(i): """u13(i) --> Get reference to U(1,3) for atom i. @@ -1186,8 +1140,8 @@ def u13(i): U is the anisotropic thermal factor tensor. """ return "u13(%i)" % i - u13 = staticmethod(u13) + u13 = staticmethod(u13) def u23(i): """u23(i) --> Get reference to U(2,3) for atom i. @@ -1195,14 +1149,14 @@ def u23(i): U is the anisotropic thermal factor tensor. """ return "u23(%i)" % i - u23 = staticmethod(u23) + u23 = staticmethod(u23) def occ(i): """occ(i) --> Get reference to occupancy of atom i.""" return "occ(%i)" % i - occ = staticmethod(occ) + occ = staticmethod(occ) def pscale(): """pscale() --> Get reference to pscale. @@ -1211,8 +1165,8 @@ def pscale(): represents. """ return "pscale" - pscale = staticmethod(pscale) + pscale = staticmethod(pscale) def sratio(): """sratio() --> Get reference to sigma ratio. @@ -1221,15 +1175,14 @@ def sratio(): distances below rcut. """ return "sratio" - sratio = staticmethod(sratio) + sratio = staticmethod(sratio) def delta1(): - """delta1() --> Get reference to 1/R peak sharpening factor. - """ + """delta1() --> Get reference to 1/R peak sharpening factor.""" return "delta1" - delta1 = staticmethod(delta1) + delta1 = staticmethod(delta1) def delta2(): """delta2() --> Reference to (1/R^2) sharpening factor. @@ -1237,8 +1190,8 @@ def delta2(): The (1/R^2) peak sharpening factor. """ return "delta2" - delta2 = staticmethod(delta2) + delta2 = staticmethod(delta2) def dscale(): """dscale() --> Get reference to dscale. @@ -1246,8 +1199,8 @@ def dscale(): The data scale factor. """ return "dscale" - dscale = staticmethod(dscale) + dscale = staticmethod(dscale) def qdamp(): """qdamp() --> Get reference to qdamp. @@ -1255,8 +1208,8 @@ def qdamp(): Qdamp controls PDF damping due to instrument Q-resolution. """ return "qdamp" - qdamp = staticmethod(qdamp) + qdamp = staticmethod(qdamp) def qbroad(): """qbroad() --> Get reference to qbroad. @@ -1264,8 +1217,8 @@ def qbroad(): Quadratic peak broadening factor. """ return "qbroad" - qbroad = staticmethod(qbroad) + qbroad = staticmethod(qbroad) def spdiameter(): """spdiameter() --> Get reference to spdiameter (phase property). @@ -1274,8 +1227,8 @@ def spdiameter(): Spherical envelope is not applied when spdiameter equals 0. """ return "spdiameter" - spdiameter = staticmethod(spdiameter) + spdiameter = staticmethod(spdiameter) def stepcut(): """stepcut() --> Get reference to stepcut (phase property). @@ -1287,8 +1240,8 @@ def stepcut(): Step cutoff is not applied when stepcut equals 0. """ return "stepcut" - stepcut = staticmethod(stepcut) + stepcut = staticmethod(stepcut) def rcut(): """rcut() --> Get reference to rcut. @@ -1297,8 +1250,8 @@ def rcut(): the sigma ratio (sratio), applies. rcut cannot be refined. """ return "rcut" - rcut = staticmethod(rcut) + rcut = staticmethod(rcut) # End refinable variables. @@ -1311,7 +1264,6 @@ def __init__(self): self.intro() return - def __getRef(self, var_string): """Return the actual reference to the variable in the var_string. @@ -1328,7 +1280,7 @@ def __getRef(self, var_string): method_string, arg_string = var_string.split("(") method_string = method_string.strip() arg_int = int(arg_string.strip(")").strip()) - except ValueError: #There is no arg_string + except ValueError: # There is no arg_string method_string = var_string.strip() f = getattr(pdffit2, method_string) diff --git a/diffpy/pdffit2/tests/ExceptionsTest.py b/src/diffpy/pdffit2/tests/ExceptionsTest.py similarity index 76% rename from diffpy/pdffit2/tests/ExceptionsTest.py rename to src/diffpy/pdffit2/tests/ExceptionsTest.py index a1b800a0..5dee1b75 100644 --- a/diffpy/pdffit2/tests/ExceptionsTest.py +++ b/src/diffpy/pdffit2/tests/ExceptionsTest.py @@ -16,13 +16,11 @@ import unittest -from diffpy.pdffit2 import PdfFit -from diffpy.pdffit2 import pdffit2 +from diffpy.pdffit2 import PdfFit, pdffit2 from diffpy.pdffit2.tests.pdffit2testutils import datafile class read_structExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -35,17 +33,15 @@ def test_IOError(self): def test_structureError(self): """raise pdffit2.structureError when structure is malformed""" - self.assertRaises(pdffit2.structureError, self.P.read_struct, - datafile("badNi.stru")) + self.assertRaises(pdffit2.structureError, self.P.read_struct, datafile("badNi.stru")) def test_structureErrorZeroVolume(self): """raise pdffit2.structureError when unit cell volume is negative""" - #I don't know how to test for this, but it's in the library code - self.assertRaises(pdffit2.structureError, - self.P.read_struct, datafile("badNiZeroVolume.stru")) + # I don't know how to test for this, but it's in the library code + self.assertRaises(pdffit2.structureError, self.P.read_struct, datafile("badNiZeroVolume.stru")) -class read_dataExceptions(unittest.TestCase): +class read_dataExceptions(unittest.TestCase): def setUp(self): self.P = PdfFit() @@ -54,16 +50,14 @@ def tearDown(self): def test_IOError(self): """raise IOError when data file does not exist""" - self.assertRaises(IOError, self.P.read_data, "Nofile.dat", - 'X', 25.0, 0.5) + self.assertRaises(IOError, self.P.read_data, "Nofile.dat", "X", 25.0, 0.5) def test_dataError(self): """raise pdffit2.dataError when data has improper spacing""" - self.assertRaises(pdffit2.dataError, self.P.read_data, - datafile("badNi.dat"), 'X', 25.0, 0.5) + self.assertRaises(pdffit2.dataError, self.P.read_data, datafile("badNi.dat"), "X", 25.0, 0.5) -class read_data_listsExceptions(unittest.TestCase): +class read_data_listsExceptions(unittest.TestCase): def setUp(self): self.P = PdfFit() self.r_data = [0.1, 0.2] @@ -76,28 +70,31 @@ def tearDown(self): def test_ValueError1(self): """raise ValueError when lists are of different length""" - self.assertRaises(ValueError, self.P.read_data_lists, 'X', self.qmax, - self.qdamp, self.r_data, self.Gr_data) + self.assertRaises( + ValueError, self.P.read_data_lists, "X", self.qmax, self.qdamp, self.r_data, self.Gr_data + ) def test_ValueError2(self): """raise ValueError when qmax < 0""" - self.assertRaises(ValueError, self.P.read_data_lists, 'X', -self.qmax, - self.qdamp, self.r_data, self.Gr_data) + self.assertRaises( + ValueError, self.P.read_data_lists, "X", -self.qmax, self.qdamp, self.r_data, self.Gr_data + ) def test_ValueError3(self): """raise ValueError when qdamp < 0""" - self.assertRaises(ValueError, self.P.read_data_lists, 'X', self.qmax, - -self.qdamp, self.r_data, self.Gr_data) + self.assertRaises( + ValueError, self.P.read_data_lists, "X", self.qmax, -self.qdamp, self.r_data, self.Gr_data + ) def test_dataError(self): """raise pdffit2.dataError when data has improper spacing""" r_data = [0.1, 0.52, 0.2] - self.assertRaises(pdffit2.dataError, self.P.read_data_lists, 'X', self.qmax, - self.qdamp, r_data, self.Gr_data) + self.assertRaises( + pdffit2.dataError, self.P.read_data_lists, "X", self.qmax, self.qdamp, r_data, self.Gr_data + ) class pdfrangeExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.iset = 1 @@ -109,24 +106,20 @@ def tearDown(self): def test_ValueError1(self): """raise ValueError when iset does not exist""" - self.assertRaises(ValueError, self.P.pdfrange, self.iset, self.rmin, - self.rmax) + self.assertRaises(ValueError, self.P.pdfrange, self.iset, self.rmin, self.rmax) def test_ValueError2(self): """raise ValueError when rmax < rmin""" - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.5) - self.assertRaises(ValueError, self.P.pdfrange, self.iset, self.rmax, - self.rmin) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.5) + self.assertRaises(ValueError, self.P.pdfrange, self.iset, self.rmax, self.rmin) def test_ValueError3(self): """raise ValueError when range outside of data""" - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.5) - self.assertRaises(ValueError, self.P.pdfrange, self.iset, -self.rmin, - self.rmax) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.5) + self.assertRaises(ValueError, self.P.pdfrange, self.iset, -self.rmin, self.rmax) class allocExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.qmax = 25 @@ -141,48 +134,40 @@ def tearDown(self): def test_ValueError1(self): """raise ValueError when qmax < 0""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.alloc, 'X', -self.qmax, self.qdamp, - self.rmin, self.rmax, self.bin) + self.assertRaises(ValueError, self.P.alloc, "X", -self.qmax, self.qdamp, self.rmin, self.rmax, self.bin) def test_ValueError2(self): """raise ValueError when qdamp < 0""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.alloc, 'X', self.qmax, -self.qdamp, - self.rmin, self.rmax, self.bin) + self.assertRaises(ValueError, self.P.alloc, "X", self.qmax, -self.qdamp, self.rmin, self.rmax, self.bin) def test_ValueError3(self): """raise ValueError when rmin < 0""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.alloc, 'X', self.qmax, self.qdamp, - -self.rmin, self.rmax, self.bin) + self.assertRaises(ValueError, self.P.alloc, "X", self.qmax, self.qdamp, -self.rmin, self.rmax, self.bin) def test_ValueError4(self): """raise ValueError when rmax < 0""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.alloc, 'X', self.qmax, self.qdamp, - self.rmin, -self.rmax, self.bin) + self.assertRaises(ValueError, self.P.alloc, "X", self.qmax, self.qdamp, self.rmin, -self.rmax, self.bin) def test_ValueError5(self): """raise ValueError when bin < 0""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.alloc, 'X', self.qmax, self.qdamp, - self.rmin, self.rmax, -self.bin) + self.assertRaises(ValueError, self.P.alloc, "X", self.qmax, self.qdamp, self.rmin, self.rmax, -self.bin) def test_ValueError6(self): """raise ValueError when rmax < rmin""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.alloc, 'X', self.qmax, self.qdamp, - self.rmax, self.rmin, self.bin) + self.assertRaises(ValueError, self.P.alloc, "X", self.qmax, self.qdamp, self.rmax, self.rmin, self.bin) def test_ValueError7(self): """raise ValueError when qdamp < 0""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.alloc, 'X', self.qmax, self.qdamp, - self.rmin, self.rmax, -self.bin) + self.assertRaises(ValueError, self.P.alloc, "X", self.qmax, self.qdamp, self.rmin, self.rmax, -self.bin) class calcExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.P.read_struct(datafile("Ni.stru")) @@ -194,6 +179,7 @@ def test_unassignedError(self): """raise pdffit2.unassignedError when no space has been allocated""" self.assertRaises(pdffit2.unassignedError, self.P.calc) + # PJ 2006-03-06 # # test_calculationError raised exception, because for Qmax=0.5, rmax would @@ -207,8 +193,8 @@ def test_unassignedError(self): # self.assertRaises(pdffit2.calculationError, self.P.calc) -#class refineExceptions(unittest.TestCase): - #I'm not sure how to test these +# class refineExceptions(unittest.TestCase): +# I'm not sure how to test these # def setUp(self): # self.P = PdfFit() @@ -222,8 +208,8 @@ def test_unassignedError(self): # #self.assertRaises(pdffit2.constraintError, self.P.calc) -#class refine_stepExceptions(unittest.TestCase): - #I'm not sure how to test these +# class refine_stepExceptions(unittest.TestCase): +# I'm not sure how to test these # def setUp(self): # self.P = PdfFit() @@ -238,7 +224,6 @@ def test_unassignedError(self): class save_pdfExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.strufile = "temp.pdf" @@ -249,19 +234,16 @@ def tearDown(self): def test_IOError(self): """raise IOError when structure cannot be saved""" self.P.read_struct(datafile("Ni.stru")) - self.P.alloc('X', 30.0, 0.05, 2, 10, 100) + self.P.alloc("X", 30.0, 0.05, 2, 10, 100) self.P.calc() - self.assertRaises(IOError, self.P.save_pdf, 1, - "nodir183160/"+self.strufile) + self.assertRaises(IOError, self.P.save_pdf, 1, "nodir183160/" + self.strufile) def test_unassignedError(self): """raise pdffit2.unassignedError when structure is undefined""" - self.assertRaises(pdffit2.unassignedError, self.P.save_pdf, 1, - self.strufile) + self.assertRaises(pdffit2.unassignedError, self.P.save_pdf, 1, self.strufile) class save_difExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.strufile = "temp.dif" @@ -272,20 +254,17 @@ def tearDown(self): def test_IOError(self): """raise IOError when dif cannot be saved""" self.P.read_struct(datafile("Ni.stru")) - self.P.alloc('X', 30.0, 0.05, 2, 10, 100) + self.P.alloc("X", 30.0, 0.05, 2, 10, 100) self.P.calc() - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.5) - self.assertRaises(IOError, self.P.save_dif, 1, - "nodir183160/"+self.strufile) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.5) + self.assertRaises(IOError, self.P.save_dif, 1, "nodir183160/" + self.strufile) def test_unassignedError(self): """raise pdffit2.unassignedError when structure is undefined""" - self.assertRaises(pdffit2.unassignedError, self.P.save_dif, 1, - self.strufile) + self.assertRaises(pdffit2.unassignedError, self.P.save_dif, 1, self.strufile) class save_resExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.resfile = "temp.res" @@ -296,22 +275,20 @@ def tearDown(self): def test_IOError(self): """raise IOError when residual file cannot be saved""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 30.0, 0.0) + self.P.read_data(datafile("Ni.dat"), "X", 30.0, 0.0) self.P.constrain(self.P.lat(1), 1) self.P.setpar(1, 3.0) - self.P.pdfrange(1,2.0,10.0) + self.P.pdfrange(1, 2.0, 10.0) self.P.refine_step() - self.assertRaises(IOError, self.P.save_res, - "nodir183160/"+self.resfile) + self.assertRaises(IOError, self.P.save_res, "nodir183160/" + self.resfile) def test_unassignedError(self): """raise pdffit2.unassignedError when structure is undefined""" - self.assertRaises(pdffit2.unassignedError, self.P.save_res, - self.resfile) + self.assertRaises(pdffit2.unassignedError, self.P.save_res, self.resfile) class save_structExceptions(unittest.TestCase): - #Same code as show_struct + # Same code as show_struct def setUp(self): self.P = PdfFit() @@ -323,17 +300,14 @@ def tearDown(self): def test_IOError(self): """raise IOError when structure cannot be saved""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(IOError, self.P.save_struct, 1, - "nodir183160/"+self.strufile) + self.assertRaises(IOError, self.P.save_struct, 1, "nodir183160/" + self.strufile) def test_unassignedError(self): """raise pdffit2.unassignedError when structure is undefined""" - self.assertRaises(pdffit2.unassignedError, self.P.save_struct, 1, - self.strufile) + self.assertRaises(pdffit2.unassignedError, self.P.save_struct, 1, self.strufile) class constrainExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.par = 1 @@ -346,8 +320,8 @@ def tearDown(self): def test_constraintError(self): """raise constraintError when constraint is bad""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.P.constrain('x(1)', 'junk+@1') + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.P.constrain("x(1)", "junk+@1") self.P.setpar(1, 0.01) self.assertRaises(pdffit2.constraintError, self.P.calc) self.assertRaises(pdffit2.constraintError, self.P.refine) @@ -355,33 +329,26 @@ def test_constraintError(self): def test_unassignedError(self): """raise pdffit2.unassignedError when variable is undefined""" - self.assertRaises(pdffit2.unassignedError, self.P.constrain, self.P.x(1), - self.par) + self.assertRaises(pdffit2.unassignedError, self.P.constrain, self.P.x(1), self.par) return def test_ValueError(self): """raise ValueError when a variable index does not exist""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.constrain, self.P.x(6), - self.par) + self.assertRaises(ValueError, self.P.constrain, self.P.x(6), self.par) return def test_constrainNonRefVar(self): "raise constraintError when attempting to constrain non-refinables" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.assertRaises(pdffit2.constraintError, - self.P.constrain, 'rcut', '@7') - self.assertRaises(pdffit2.constraintError, - self.P.constrain, 'rcut', 13) - self.assertRaises(pdffit2.constraintError, - self.P.constrain, 'stepcut', '@17') + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.assertRaises(pdffit2.constraintError, self.P.constrain, "rcut", "@7") + self.assertRaises(pdffit2.constraintError, self.P.constrain, "rcut", 13) + self.assertRaises(pdffit2.constraintError, self.P.constrain, "stepcut", "@17") return - class setvarExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.val = 3.0 @@ -391,18 +358,15 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when variable is undefined""" - self.assertRaises(pdffit2.unassignedError, self.P.setvar, self.P.lat(1), - self.val) + self.assertRaises(pdffit2.unassignedError, self.P.setvar, self.P.lat(1), self.val) def test_ValueError(self): """raise ValueError when a variable index does not exist""" self.P.read_struct(datafile("Ni.stru")) - self.assertRaises(ValueError, self.P.setvar, self.P.lat(7), - self.val) + self.assertRaises(ValueError, self.P.setvar, self.P.lat(7), self.val) class getvarExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -411,8 +375,7 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when variable is undefined""" - self.assertRaises(pdffit2.unassignedError, self.P.getvar, - self.P.pscale()) + self.assertRaises(pdffit2.unassignedError, self.P.getvar, self.P.pscale()) def test_ValueError(self): """raise ValueError when a variable index does not exist""" @@ -421,7 +384,6 @@ def test_ValueError(self): class getRExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -434,7 +396,6 @@ def test_unassignedError(self): class getpdf_fitExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -447,7 +408,6 @@ def test_unassignedError(self): class getpdf_obsExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -460,7 +420,6 @@ def test_unassignedError(self): class getpdf_diffExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -473,7 +432,6 @@ def test_unassignedError(self): class get_atomsExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -486,7 +444,6 @@ def test_unassignedError(self): class getparExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -505,7 +462,6 @@ def test_unassignedError2(self): class pselExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.ip = 1 @@ -523,7 +479,6 @@ def test_unassignedError2(self): class pdeselExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.ip = 1 @@ -542,7 +497,6 @@ def test_unassignedError2(self): class selectAtomTypeExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.iset = 1 @@ -553,32 +507,28 @@ def tearDown(self): def test_unassignedError1(self): """raise pdffit2.unassignedError when set does not exist""" - self.assertRaises(pdffit2.unassignedError, self.P.selectAtomType, - self.iset, 'i', 'Ni', True) + self.assertRaises(pdffit2.unassignedError, self.P.selectAtomType, self.iset, "i", "Ni", True) def test_unassignedError2(self): """raise pdffit2.unassignedError when set does not exist""" self.P.read_struct(datafile("Ni.stru")) # selectAtomType should pass with one phase defined - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.P.selectAtomType(self.iset, 'i', 'Ni', True) - self.P.selectAtomType(self.iset, 'j', 'Ni', False) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.P.selectAtomType(self.iset, "i", "Ni", True) + self.P.selectAtomType(self.iset, "j", "Ni", False) # but fail for phase 2 which is not present - self.assertRaises(pdffit2.unassignedError, self.P.selectAtomType, - 2, 'i', 'Ca', True) + self.assertRaises(pdffit2.unassignedError, self.P.selectAtomType, 2, "i", "Ca", True) def test_ijcharValueError(self): """raise ValueError when ijchar is neither 'i' nor 'j'""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.P.selectAtomType(self.iset, 'i', 'Ni', True) - self.P.selectAtomType(self.iset, 'j', 'Ni', True) - self.assertRaises(ValueError, self.P.selectAtomType, - self.iset, 'k', 'Ni', True) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.P.selectAtomType(self.iset, "i", "Ni", True) + self.P.selectAtomType(self.iset, "j", "Ni", True) + self.assertRaises(ValueError, self.P.selectAtomType, self.iset, "k", "Ni", True) class selectAtomIndexExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.iset = 1 @@ -589,30 +539,26 @@ def tearDown(self): def test_unassignedError1(self): """raise pdffit2.unassignedError when set does not exist""" - self.assertRaises(pdffit2.unassignedError, self.P.selectAtomIndex, - self.iset, 'i', self.i, True) + self.assertRaises(pdffit2.unassignedError, self.P.selectAtomIndex, self.iset, "i", self.i, True) def test_unassignedError2(self): """raise pdffit2.unassignedError when set does not exist""" self.P.read_struct(datafile("Ni.stru")) # pass for phase 1 - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.P.selectAtomIndex(self.iset, 'i', 1, True) - self.P.selectAtomIndex(self.iset, 'i', 2, False) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.P.selectAtomIndex(self.iset, "i", 1, True) + self.P.selectAtomIndex(self.iset, "i", 2, False) # fail for phase 2 - self.assertRaises(pdffit2.unassignedError, self.P.selectAtomIndex, - 2, 'i', 1, True) + self.assertRaises(pdffit2.unassignedError, self.P.selectAtomIndex, 2, "i", 1, True) def test_ValueError(self): """raise ValueError when selected atom does not exist""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.assertRaises(ValueError, self.P.selectAtomIndex, - self.iset, 'i', 6, True) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.assertRaises(ValueError, self.P.selectAtomIndex, self.iset, "i", 6, True) class selectAllExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.iset = 1 @@ -623,26 +569,23 @@ def tearDown(self): def test_unassignedError1(self): """raise pdffit2.unassignedError when set does not exist""" - self.assertRaises(pdffit2.unassignedError, self.P.selectAll, - self.iset, 'i') + self.assertRaises(pdffit2.unassignedError, self.P.selectAll, self.iset, "i") def test_unassignedError2(self): """raise pdffit2.unassignedError when set does not exist""" self.P.read_struct(datafile("Ni.stru")) # fail when there is no dataset - self.assertRaises(pdffit2.unassignedError, self.P.selectAll, - self.iset, 'i') + self.assertRaises(pdffit2.unassignedError, self.P.selectAll, self.iset, "i") # pass with dataset - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.P.selectAll(self.iset, 'i') - self.P.selectAll(self.iset, 'j') + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.P.selectAll(self.iset, "i") + self.P.selectAll(self.iset, "j") # fail for phase 2 - self.assertRaises(pdffit2.unassignedError, self.P.selectAll, 2, 'i') - self.assertRaises(pdffit2.unassignedError, self.P.selectAll, 2, 'j') + self.assertRaises(pdffit2.unassignedError, self.P.selectAll, 2, "i") + self.assertRaises(pdffit2.unassignedError, self.P.selectAll, 2, "j") class selectNoneExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.iset = 1 @@ -653,26 +596,23 @@ def tearDown(self): def test_unassignedError1(self): """raise pdffit2.unassignedError when set does not exist""" - self.assertRaises(pdffit2.unassignedError, self.P.selectNone, - self.iset, 'i') + self.assertRaises(pdffit2.unassignedError, self.P.selectNone, self.iset, "i") def test_unassignedError2(self): """raise pdffit2.unassignedError when set does not exist""" self.P.read_struct(datafile("Ni.stru")) # fail when there is no dataset - self.assertRaises(pdffit2.unassignedError, self.P.selectNone, - self.iset, 'i') + self.assertRaises(pdffit2.unassignedError, self.P.selectNone, self.iset, "i") # pass with dataset - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.P.selectNone(self.iset, 'i') - self.P.selectNone(self.iset, 'j') + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.P.selectNone(self.iset, "i") + self.P.selectNone(self.iset, "j") # fail for phase 2 - self.assertRaises(pdffit2.unassignedError, self.P.selectNone, 2, 'i') - self.assertRaises(pdffit2.unassignedError, self.P.selectNone, 2, 'j') + self.assertRaises(pdffit2.unassignedError, self.P.selectNone, 2, "i") + self.assertRaises(pdffit2.unassignedError, self.P.selectNone, 2, "j") class bangExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.a1 = 1 @@ -684,31 +624,26 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when phase does not exist""" - self.assertRaises(pdffit2.unassignedError, self.P.bang, self.a1, - self.a2, self.a3) + self.assertRaises(pdffit2.unassignedError, self.P.bang, self.a1, self.a2, self.a3) def test_ValueError1(self): """raise ValueError when selected atom(s) does not exist""" - self.P.read_struct(datafile('Ni.stru')) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) - self.assertRaises(ValueError, self.P.bang, 0, - self.a2, self.a3) + self.P.read_struct(datafile("Ni.stru")) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.assertRaises(ValueError, self.P.bang, 0, self.a2, self.a3) def test_ValueError2(self): """raise ValueError when selected atom(s) does not exist""" - self.P.read_struct(datafile('Ni.stru')) - self.assertRaises(ValueError, self.P.bang, self.a1, - -1, self.a3) + self.P.read_struct(datafile("Ni.stru")) + self.assertRaises(ValueError, self.P.bang, self.a1, -1, self.a3) def test_ValueError3(self): """raise ValueError when selected atom(s) does not exist""" - self.P.read_struct(datafile('Ni.stru')) - self.assertRaises(ValueError, self.P.bang, self.a1, - self.a2, 6) + self.P.read_struct(datafile("Ni.stru")) + self.assertRaises(ValueError, self.P.bang, self.a1, self.a2, 6) class blenExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() self.a1 = 1 @@ -719,27 +654,25 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when no data exists""" - self.assertRaises(pdffit2.unassignedError, self.P.blen, self.a1, - self.a2) + self.assertRaises(pdffit2.unassignedError, self.P.blen, self.a1, self.a2) def test_ValueError1(self): """raise ValueError when selected atom(s) does not exist""" - self.P.read_struct(datafile('Ni.stru')) + self.P.read_struct(datafile("Ni.stru")) self.assertRaises(ValueError, self.P.blen, 0, self.a2) def test_ValueError2(self): """raise ValueError when selected atom(s) does not exist""" - self.P.read_struct(datafile('Ni.stru')) + self.P.read_struct(datafile("Ni.stru")) self.assertRaises(ValueError, self.P.blen, self.a1, 6) def test_ValueError3(self): """raise ValueError when selected atom(s) does not exist""" - self.P.read_struct(datafile('Ni.stru')) + self.P.read_struct(datafile("Ni.stru")) self.assertRaises(ValueError, self.P.blen, 0, 6) class show_scatExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -748,11 +681,11 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when phase does not exist""" - self.assertRaises(pdffit2.unassignedError, self.P.show_scat, 'X') + self.assertRaises(pdffit2.unassignedError, self.P.show_scat, "X") -#class set_scatExceptions(unittest.TestCase): - #I'm not sure how to use this function +# class set_scatExceptions(unittest.TestCase): +# I'm not sure how to use this function # def setUp(self): # self.P = PdfFit() @@ -771,7 +704,6 @@ def test_unassignedError(self): class num_atomsExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -782,8 +714,8 @@ def test_unassignedError(self): """raise pdffit2.unassignedError when no atoms exist""" self.assertRaises(pdffit2.unassignedError, self.P.num_atoms) -class fixparExceptions(unittest.TestCase): +class fixparExceptions(unittest.TestCase): def setUp(self): self.P = PdfFit() @@ -793,12 +725,11 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when parameter does not exist""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) self.assertRaises(pdffit2.unassignedError, self.P.fixpar, 1) class freeparExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -808,12 +739,11 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when parameter does not exist""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) self.assertRaises(pdffit2.unassignedError, self.P.freepar, 1) class setphaseExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -823,12 +753,11 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when phase does not exist""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) self.assertRaises(pdffit2.unassignedError, self.P.setphase, 2) class setdataExceptions(unittest.TestCase): - def setUp(self): self.P = PdfFit() @@ -838,11 +767,11 @@ def tearDown(self): def test_unassignedError(self): """raise pdffit2.unassignedError when data set does not exist""" self.P.read_struct(datafile("Ni.stru")) - self.P.read_data(datafile("Ni.dat"), 'X', 25.0, 0.0) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) self.assertRaises(pdffit2.unassignedError, self.P.setdata, 2) -class getcrwExceptions(unittest.TestCase): +class getcrwExceptions(unittest.TestCase): def setUp(self): self.P = PdfFit() @@ -854,13 +783,12 @@ def test_unassignedError(self): self.assertRaises(pdffit2.unassignedError, self.P.getcrw) - -#main -if __name__ == '__main__': - #suite = unittest.makeSuite(num_atomsExceptions) - #unittest.TextTestRunner(verbosity=3).run(suite) - #testcase = calcExceptions('test_unassignedError') - #unittest.TextTestRunner(verbosity=3).run(testcase) +# main +if __name__ == "__main__": + # suite = unittest.makeSuite(num_atomsExceptions) + # unittest.TextTestRunner(verbosity=3).run(suite) + # testcase = calcExceptions('test_unassignedError') + # unittest.TextTestRunner(verbosity=3).run(testcase) unittest.main() # End of file diff --git a/src/diffpy/pdffit2/tests/TestPdfFit.py b/src/diffpy/pdffit2/tests/TestPdfFit.py new file mode 100644 index 00000000..70712356 --- /dev/null +++ b/src/diffpy/pdffit2/tests/TestPdfFit.py @@ -0,0 +1,761 @@ +#!/usr/bin/env python + +"""Unit tests for PdfFit.py +""" + +import unittest + +from diffpy.pdffit2 import PdfFit, pdffit2 +from diffpy.pdffit2.tests.pdffit2testutils import capture_output, datafile +from diffpy.structure import loadStructure + +# ---------------------------------------------------------------------------- + + +class TestPdfFit(unittest.TestCase): + places = 6 + + def setUp(self): + self.P = PdfFit() + return + + def tearDown(self): + del self.P + return + + def test__exportAll(self): + "check PdfFit._exportAll()" + ns = {} + self.P._exportAll(ns) + self.assertEqual("ALL", ns["ALL"]) + self.assertEqual("FSQR", ns["FSQR"]) + self.assertEqual("N", ns["N"]) + self.assertIs("N", ns["N"]) + self.assertIs(self.P.lat, ns["lat"]) + self.assertEqual(self.P.reset, ns["reset"]) + return + + # def test_intro(self): + # """check PdfFit.intro() + # """ + # return + + def test_add_structure(self): + """check PdfFit.add_structure()""" + ni = loadStructure(datafile("Ni.stru")) + self.P.add_structure(ni) + self.assertEqual(4, self.P.num_atoms()) + return + + # def test_read_struct(self): + # """check PdfFit.read_struct() + # """ + # return + # + # def test_read_struct_string(self): + # """check PdfFit.read_struct_string() + # """ + # return + # + # def test_read_data(self): + # """check PdfFit.read_data() + # """ + # return + + def test_read_data_string(self): + """check PdfFit.read_data_string()""" + pf = self.P + with open(datafile("300K.gr")) as fp: + s = fp.read() + self.assertEqual([], pf.data_files) + pf.read_data_string(s, "N", 32, 0.03, "lmo") + self.assertEqual(1, len(pf.data_files)) + gobs = pf.getpdf_obs() + self.assertEqual(2000, len(gobs)) + self.assertEqual(0.384, gobs[-1]) + self.assertEqual(0.03, pf.getvar("qdamp")) + return + + # def test_read_data_lists(self): + # """check PdfFit.read_data_lists() + # """ + # return + # + # def test_pdfrange(self): + # """check PdfFit.pdfrange() + # """ + # return + # + # def test_reset(self): + # """check PdfFit.reset() + # """ + # return + + def test_alloc(self): + """check PdfFit.alloc()""" + # alloc and read_struct can be called in any order. + self.P.alloc("X", 25, 0.0, 0.01, 10, 1000) + # without a structure calculated PDF is all zero + self.P.calc() + Gzero = self.P.getpdf_fit() + self.assertEqual(1000 * [0.0], Gzero) + self.P.read_struct(datafile("Ni.stru")) + self.P.calc() + # check r-values + r = self.P.getR() + self.assertEqual(1000, len(r)) + for i in range(1000): + self.assertAlmostEqual(0.01 * (i + 1), r[i], self.places) + Gfit_alloc_read = self.P.getpdf_fit() + # now try the other order + self.P.reset() + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 25, 0.0, 0.01, 10, 1000) + self.P.calc() + Gfit_read_alloc = self.P.getpdf_fit() + # and they should be the same + self.assertEqual(Gfit_read_alloc, Gfit_alloc_read) + return + + # def test_calc(self): + # """check PdfFit.calc() + # """ + # return + # + # def test_refine(self): + # """check PdfFit.refine() + # """ + # return + # + # def test_refine_step(self): + # """check PdfFit.refine_step() + # """ + # return + # + # def test_save_pdf(self): + # """check PdfFit.save_pdf() + # """ + # return + # + # def test_save_pdf_string(self): + # """check PdfFit.save_pdf_string() + # """ + # return + # + # def test_save_dif(self): + # """check PdfFit.save_dif() + # """ + # return + # + # def test_save_dif_string(self): + # """check PdfFit.save_dif_string() + # """ + # return + # + # def test_save_res(self): + # """check PdfFit.save_res() + # """ + # return + # + # def test_save_res_string(self): + # """check PdfFit.save_res_string() + # """ + # return + + def test_get_structure(self): + """check PdfFit.get_structure()""" + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + stru1 = self.P.get_structure(1) + self.assertEqual(4, len(stru1)) + self.assertEqual("Ni", stru1[0].element) + stru2 = self.P.get_structure(2) + self.assertEqual(56, len(stru2)) + self.assertEqual("Ti", stru2[-1].element) + return + + # def test_save_struct(self): + # """check PdfFit.save_struct() + # """ + # return + # + # def test_save_struct_string(self): + # """check PdfFit.save_struct_string() + # """ + # return + # + # def test_show_struct(self): + # """check PdfFit.show_struct() + # """ + # return + # + # def test_constrain(self): + # """check PdfFit.constrain() + # """ + # return + + def test_setpar(self): + """check PdfFit.setpar()""" + pf = self.P + pf.read_struct(datafile("Ni.stru")) + pf.setpar(1, "lat(1)") + self.assertEqual(3.52, pf.getpar(1)) + pf.setpar(1, 4.0) + self.assertEqual(4, pf.getpar(1)) + pf.setpar(1, pf.lat("a")) + self.assertEqual(3.52, pf.getpar(1)) + return + + def test_setvar(self): + """check PdfFit.setvar()""" + pf = self.P + pf.read_struct(datafile("Ni.stru")) + pf.setvar(pf.delta1, 1.2) + self.assertEqual(1.2, pf.getvar(pf.delta1)) + pf.setvar("delta1", 1.7) + self.assertEqual(1.7, pf.getvar("delta1")) + return + + # def test_getvar(self): + # """check PdfFit.getvar() + # """ + # return + # + # def test_getrw(self): + # """check PdfFit.getrw() + # """ + # return + # + # def test_getR(self): + # """check PdfFit.getR() + # """ + # return + # + # def test_getpdf_fit(self): + # """check PdfFit.getpdf_fit() + # """ + # return + # + # def test_getpdf_obs(self): + # """check PdfFit.getpdf_obs() + # """ + # return + # + # def test_getpdf_diff(self): + # """check PdfFit.getpdf_diff() + # """ + # return + + def test_get_atoms(self): + """check PdfFit.get_atoms()""" + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.setphase(1) + a1 = self.P.get_atoms() + a2 = self.P.get_atoms(2) + self.assertEqual(4 * ["NI"], a1) + self.assertEqual(8 * ["PB"] + 24 * ["O"] + 8 * ["SC"] + 8 * ["W"] + 8 * ["TI"], a2) + return + + def test_get_atom_types(self): + """check PdfFit.get_atom_types()""" + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.setphase(1) + atp1 = self.P.get_atom_types() + atp2 = self.P.get_atom_types(2) + self.assertEqual(["NI"], atp1) + self.assertEqual(["PB", "O", "SC", "W", "TI"], atp2) + return + + def test_num_phases(self): + """check PdfFit.num_phases()""" + self.assertEqual(0, self.P.num_phases()) + self.P.read_struct(datafile("Ni.stru")) + self.assertEqual(1, self.P.num_phases()) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.assertEqual(2, self.P.num_phases()) + self.P.reset() + self.assertEqual(0, self.P.num_phases()) + return + + def test_num_datasets(self): + """check PdfFit.num_datasets()""" + self.assertEqual(0, self.P.num_datasets()) + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.5) + self.assertEqual(1, self.P.num_datasets()) + # failed data should not increase num_datasets + try: + self.P.read_data(datafile("badNi.dat")) + except (RuntimeError, TypeError, NameError, ValueError, IOError): + pass + self.assertEqual(1, self.P.num_datasets()) + # alloc should increase number of datasets + # alloc requires a loaded structure + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 30.0, 0.05, 2, 10, 100) + self.assertEqual(2, self.P.num_datasets()) + self.P.reset() + self.assertEqual(0, self.P.num_datasets()) + return + + def test_getcrw(self): + """check PdfFit.getcrw()""" + import numpy + + self.assertEqual(0, self.P.num_datasets()) + # Setting qmax=0 so that partial crw are not disturbed by + # termination ripples. + self.P.read_data(datafile("Ni.dat"), "X", 0.0, 0.0) + # crw is empty before data refinement + self.assertEqual([], self.P.getcrw()) + self.P.read_struct(datafile("Ni.stru")) + self.P.pdfrange(1, 2, 19) + self.P.refine() + crw19 = numpy.array(self.P.getcrw()) + self.assertTrue(numpy.all(crw19 >= 0.0)) + # check that crw19 is non decreasing + self.assertTrue(numpy.all(numpy.diff(crw19) >= 0.0)) + # check that crw19 and getrw give the same value + rw19 = crw19[-1] + self.assertAlmostEqual(self.P.getrw(), rw19, self.places) + # renormalize cumulative Rw and compare with Rw at r=15 + Gobs19 = numpy.array(self.P.getpdf_obs()) + Gnorm19 = numpy.sqrt(numpy.sum(Gobs19**2)) + r = numpy.array(self.P.getR()) + idx = numpy.nonzero(r <= 15)[0] + Gnorm15 = numpy.sqrt(numpy.sum(Gobs19[idx] ** 2)) + i15 = idx[-1] + rw15 = crw19[i15] * Gnorm19 / Gnorm15 + self.P.pdfrange(1, 2, r[i15] + 1e-5) + self.P.refine() + self.assertAlmostEqual(self.P.getrw(), rw15, self.places) + return + + def test_getcrw_two_datasets(self): + """check that getcrw() and getrw() are consistent for two datasets.""" + self.P.read_data(datafile("Ni.dat"), "X", 25.0, 0.0) + self.P.pdfrange(1, 2, 8) + self.P.read_data(datafile("300K.gr"), "N", 32.0, 0.0) + self.P.pdfrange(2, 1, 11) + self.P.read_struct(datafile("Ni.stru")) + # mess lattice parameters to have comparable Rw contributions + self.P.setvar("lat(1)", 3) + self.P.setvar("lat(2)", 3) + self.P.setvar("lat(3)", 3) + self.P.refine() + rwtot = self.P.getrw() + self.assertTrue(rwtot > 0.0) + self.P.setdata(1) + rw1 = self.P.getcrw()[-1] + self.P.setdata(2) + rw2 = self.P.getcrw()[-1] + self.assertAlmostEqual(rwtot**2, rw1**2 + rw2**2, self.places) + return + + # def test_getpar(self): + # """check PdfFit.getpar() + # """ + # return + + def test_fixpar(self): + """check PdfFit.fixpar()""" + self.P.fixpar("all") + self.assertRaises(TypeError, self.P.fixpar, "x") + return + + def test_freepar(self): + """check PdfFit.freepar()""" + self.P.freepar("all") + self.assertRaises(TypeError, self.P.freepar, "x") + return + + # def test_setphase(self): + # """check PdfFit.setphase() + # """ + # return + # + # def test_setdata(self): + # """check PdfFit.setdata() + # """ + # return + # + def test_psel(self): + """check PdfFit.psel()""" + + def doalloc(): + self.P.alloc("X", 30.0, 0.05, 2, 10, 100) + return + + self.assertRaises(pdffit2.unassignedError, self.P.psel, 0) + self.assertRaises(pdffit2.unassignedError, self.P.psel, 1) + self.P.read_struct(datafile("Ni.stru")) + doalloc() + self.P.calc() + G1 = self.P.getpdf_fit() + self.P.reset() + self.P.read_struct(datafile("PbScW25TiO3.stru")) + doalloc() + self.P.calc() + G2 = self.P.getpdf_fit() + self.P.reset() + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + doalloc() + self.P.pdesel("ALL") + self.P.psel(1) + self.P.calc() + self.assertEqual(G1, self.P.getpdf_fit()) + self.P.pdesel("ALL") + self.P.psel(2) + self.P.calc() + self.assertEqual(G2, self.P.getpdf_fit()) + self.P.psel("ALL") + self.P.calc() + Gall = self.P.getpdf_fit() + dGmax = max([abs(g1 + g2 - gall) for g1, g2, gall in zip(G1, G2, Gall)]) + self.assertAlmostEqual(0, dGmax, self.places) + self.assertRaises(pdffit2.unassignedError, self.P.psel, 10) + self.assertRaises(pdffit2.unassignedError, self.P.psel, 0) + self.assertRaises(pdffit2.unassignedError, self.P.psel, -100) + return + + def test_pdesel(self): + """check PdfFit.pdesel()""" + + def doalloc(): + self.P.alloc("X", 30.0, 0.05, 2, 10, 100) + return + + self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 0) + self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 1) + self.P.read_struct(datafile("Ni.stru")) + doalloc() + self.P.calc() + G1 = self.P.getpdf_fit() + self.P.reset() + self.P.read_struct(datafile("PbScW25TiO3.stru")) + doalloc() + self.P.calc() + G2 = self.P.getpdf_fit() + self.P.reset() + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + doalloc() + self.P.psel("ALL") + self.P.pdesel(2) + self.P.calc() + self.assertEqual(G1, self.P.getpdf_fit()) + self.P.psel("ALL") + self.P.pdesel(1) + self.P.calc() + self.assertEqual(G2, self.P.getpdf_fit()) + self.P.pdesel("ALL") + self.P.calc() + G0 = self.P.getpdf_fit() + self.assertEqual([0.0] * len(G0), G0) + self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 10) + self.assertRaises(pdffit2.unassignedError, self.P.pdesel, 0) + self.assertRaises(pdffit2.unassignedError, self.P.pdesel, -100) + return + + # + # def test_selectAtomType(self): + # """check PdfFit.selectAtomType() + # """ + # return + # + # def test_selectAtomIndex(self): + # """check PdfFit.selectAtomIndex() + # """ + # return + # + # def test_selectAll(self): + # """check PdfFit.selectAll() + # """ + # return + # + # def test_selectNone(self): + # """check PdfFit.selectNone() + # """ + # return + + def test_bond_angle(self): + """check PdfFit.bond_angle()""" + self.P.read_struct(datafile("Ni.stru")) + a, e = self.P.bond_angle(1, 2, 3) + self.assertAlmostEqual(60.0, a, self.places) + self.assertRaises(ValueError, self.P.bond_angle, 0, 1, 2) + self.assertRaises(ValueError, self.P.bond_angle, 1, 2, 7) + return + + def test_bang(self): + "check PdfFit.bang() function" + self.P.read_struct(datafile("Ni.stru")) + out = capture_output(self.P.bang, 1, 2, 3).strip() + self.assertTrue(out.endswith("60 degrees")) + self.assertTrue(out.startswith("NI (#1) - NI (#2) - NI (#3)")) + return + + def test_bond_length_atoms(self): + """check PdfFit.bond_length_atoms()""" + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + dij, ddij = self.P.bond_length_atoms(1, 5) + self.assertAlmostEqual(4.03635, dij, self.places) + self.P.setphase(1) + self.assertRaises(ValueError, self.P.bond_length_atoms, 1, 5) + return + + def test_bond_length_types(self): + """check PdfFit.bond_length_types()""" + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + dPbO = self.P.bond_length_types("Pb", "O", 0.1, 3.0) + # check if keys are present + self.assertTrue("dij" in dPbO) + self.assertTrue("ddij" in dPbO) + self.assertTrue("ij0" in dPbO) + self.assertTrue("ij1" in dPbO) + # check if they have the same length + npts = len(dPbO["dij"]) + self.assertEqual(npts, len(dPbO["ddij"])) + self.assertEqual(npts, len(dPbO["ij0"])) + self.assertEqual(npts, len(dPbO["ij1"])) + # 8 Pb atoms have coordination 12 in perovskite structure + self.assertEqual(8 * 12, len(dPbO["dij"])) + self.P.setphase(1) + dfcc = self.P.bond_length_types("ALL", "ALL", 0.1, 2.6) + # 4 Ni atoms with coordination 12 + self.assertEqual(4 * 12, len(dfcc["dij"])) + # invalid element + self.assertRaises(ValueError, self.P.bond_length_types, "Ni", "Nix", 0.1, 5.0) + # check indices ij0 + allij0 = sum(dfcc["ij0"], tuple()) + self.assertEqual(0, min(allij0)) + self.assertEqual(3, max(allij0)) + # check indices ij1 + allij1 = sum(dfcc["ij1"], tuple()) + self.assertEqual(1, min(allij1)) + self.assertEqual(4, max(allij1)) + # check index values + ij0check = [(i1 - 1, j1 - 1) for i1, j1 in dfcc["ij1"]] + self.assertEqual(ij0check, dfcc["ij0"]) + # test valid element which is not present in the structure + dnone = self.P.bond_length_types("Ni", "Au", 0.1, 5.0) + self.assertEqual(0, len(dnone["dij"])) + self.assertEqual(0, len(dnone["ddij"])) + self.assertEqual(0, len(dnone["ij0"])) + self.assertEqual(0, len(dnone["ij1"])) + return + + def test_blen(self): + """check PdfFit.blen()""" + self.P.read_struct(datafile("PbScW25TiO3.stru")) + blen = self.P.blen + o = capture_output(blen, 1, 5).strip() + self.assertTrue(o.endswith("4.03635 A")) + self.assertTrue("PB (#1)" in o) + self.assertTrue("PB (#5)" in o) + self.assertRaises(ValueError, blen, 1, 99) + self.assertRaises(ValueError, blen, 0, 1) + o1 = capture_output(blen, 1, 1, 0.1, 1) + self.assertTrue("No pairs found" in o1) + o2 = capture_output(blen, 1, 50, 0.1, 1) + self.assertEqual("", o2) + o3 = capture_output(blen, "Sc", "O", 0.5, 2.3).strip() + self.assertEqual(1 + 48, len(o3.split("\n"))) + self.assertEqual(6, o3.count("SC (#33)")) + self.assertEqual(2, o3.count("O (#9)")) + self.assertRaises(TypeError, blen, "Sc", "O", 0.5) + return + + # def test_show_scat(self): + # """check PdfFit.show_scat() + # """ + # return + # + # def test_get_scat_string(self): + # """check PdfFit.get_scat_string() + # """ + # return + + def test_get_scat(self): + """check PdfFit.get_scat()""" + # x-ray scattering factors + fPb = self.P.get_scat("X", "Pb") + self.assertEqual(82.0, fPb) + fTi = self.P.get_scat("X", "tI") + self.assertEqual(22.0, fTi) + # neutron scattering lengths + bPb = self.P.get_scat("N", "PB") + self.assertAlmostEqual(9.401, bPb, 3) + bTi = self.P.get_scat("N", "ti") + self.assertAlmostEqual(-3.370, bTi, 3) + # exceptions + self.assertRaises(ValueError, self.P.get_scat, "N", "zz") + self.assertRaises(ValueError, self.P.get_scat, "Z", "Ti") + return + + def test_set_scat(self): + """check PdfFit.set_scat()""" + # raises exception when no phase exists + self.assertRaises(pdffit2.unassignedError, self.P.set_scat, "N", "Ti", -11) + # check if it is local to phase + fPb = self.P.get_scat("X", "Pb") + bPb = self.P.get_scat("N", "Pb") + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.set_scat("X", "Pb", 142) + self.assertEqual(142, self.P.get_scat("X", "Pb")) + self.assertEqual(bPb, self.P.get_scat("N", "Pb")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.assertEqual(fPb, self.P.get_scat("X", "Pb")) + self.P.setphase(1) + self.assertEqual(142, self.P.get_scat("X", "Pb")) + self.P.setphase(2) + self.assertEqual(fPb, self.P.get_scat("X", "Pb")) + # check exception for invalid inputs + self.assertRaises(ValueError, self.P.set_scat, "Z", "C", 123) + self.assertRaises(ValueError, self.P.set_scat, "X", "ZZ", 123) + return + + def test_reset_scat(self): + """check PdfFit.reset_scat()""" + # raises exception when no phase exists + self.assertRaises(pdffit2.unassignedError, self.P.reset_scat, "Ti") + # check if it is local to phase + fPb = self.P.get_scat("X", "Pb") + bPb = self.P.get_scat("N", "Pb") + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.set_scat("X", "Pb", 142) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.set_scat("N", "Pb", -17) + self.P.setphase(1) + self.assertNotEqual(fPb, self.P.get_scat("X", "Pb")) + self.P.reset_scat("Pb") + self.assertEqual(fPb, self.P.get_scat("X", "Pb")) + self.P.setphase(2) + self.assertNotEqual(bPb, self.P.get_scat("N", "Pb")) + self.P.reset_scat("Pb") + self.assertEqual(bPb, self.P.get_scat("N", "Pb")) + # check exception for invalid inputs + self.assertRaises(ValueError, self.P.reset_scat, "Zz") + return + + def test_num_atoms(self): + """check PdfFit.num_atoms()""" + self.P.read_struct(datafile("Ni.stru")) + self.assertEqual(4, self.P.num_atoms()) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.assertEqual(56, self.P.num_atoms()) + self.P.setphase(1) + self.assertEqual(4, self.P.num_atoms()) + self.P.setphase(2) + self.assertEqual(56, self.P.num_atoms()) + return + + def test_lat(self): + """check PdfFit.lat()""" + pf = self.P + pf.read_struct(datafile("Ni.stru")) + for i in ("a", "b", "c", 1, 2, 3): + self.assertEqual(3.52, pf.getvar(pf.lat(i))) + for i in ("alpha", "beta", "gamma", 4, 5, 6): + self.assertEqual(90, pf.getvar(pf.lat(i))) + return + + def test_xyz(self): + """check PdfFit.x() PdfFit.y(), PdfFit.z()""" + pf = self.P + pf.read_struct(datafile("Ni.stru")) + self.assertEqual(0.5, pf.getvar(pf.x(3))) + self.assertEqual(0, pf.getvar(pf.y(3))) + self.assertEqual(0.5, pf.getvar(pf.z(3))) + return + + def test_uij(self): + """check PdfFit.uij()""" + ni = loadStructure(datafile("Ni.stru")) + ni[2].anisotropy = True + ni[2].U11, ni[2].U22, ni[2].U33 = 1, 2, 3 + ni[2].U12, ni[2].U13, ni[2].U23 = 4, 5, 6 + pf = self.P + pf.add_structure(ni) + self.assertEqual(1, pf.getvar(pf.u11(3))) + self.assertEqual(2, pf.getvar(pf.u22(3))) + self.assertEqual(3, pf.getvar(pf.u33(3))) + self.assertEqual(4, pf.getvar(pf.u12(3))) + self.assertEqual(5, pf.getvar(pf.u13(3))) + self.assertEqual(6, pf.getvar(pf.u23(3))) + return + + def test_occ(self): + """check PdfFit.occ()""" + pf = self.P + pf.read_struct(datafile("Ni.stru")) + for i in range(1, 5): + self.assertEqual(1, pf.getvar(pf.occ(i))) + return + + +# def test_pscale(self): +# """check PdfFit.pscale() +# """ +# return +# +# def test_pscale(self): +# """check PdfFit.pscale() +# """ +# return +# +# def test_sratio(self): +# """check PdfFit.sratio() +# """ +# return +# +# def test_delta1(self): +# """check PdfFit.delta1() +# """ +# return +# +# def test_delta2(self): +# """check PdfFit.delta2() +# """ +# return +# +# def test_dscale(self): +# """check PdfFit.dscale() +# """ +# return +# +# def test_qdamp(self): +# """check PdfFit.qdamp() +# """ +# return +# +# def test_qbroad(self): +# """check PdfFit.qbroad() +# """ +# return +# +# def test_rcut(self): +# """check PdfFit.rcut() +# """ +# return +# +# def test___init__(self): +# """check PdfFit.__init__() +# """ +# return +# +# def test__PdfFit__getRef(self): +# """check PdfFit._PdfFit__getRef() +# """ +# return + +# End of class TestPdfFit + +if __name__ == "__main__": + unittest.main() + +# End of file diff --git a/src/diffpy/pdffit2/tests/TestPhaseFractions.py b/src/diffpy/pdffit2/tests/TestPhaseFractions.py new file mode 100644 index 00000000..afc57c06 --- /dev/null +++ b/src/diffpy/pdffit2/tests/TestPhaseFractions.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python + +"""Unit tests for phase fraction calculations. +""" + +import unittest + +from diffpy.pdffit2 import PdfFit +from diffpy.pdffit2.tests.pdffit2testutils import datafile + + +############################################################################## +class TestPhaseFractions(unittest.TestCase): + places = 4 + + def setUp(self): + self.P = PdfFit() + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.alloc("N", 0.0, 0.05, 0.1, 10, 200) + return + + def tearDown(self): + del self.P + return + + def test_xray_fractions(self): + """test_xray_fractions -- check phase fractions in x-ray dataset.""" + self.P.setdata(1) + ph = self.P.phase_fractions() + bb1 = 28**2 + bb2 = ((8 * 82 + 24 * 8 + 4 * 21 + 2 * 74 + 2 * 22) / 40.0) ** 2 + self.assertAlmostEqual(1.0, sum(ph["atom"]), self.places) + self.assertAlmostEqual(1.0, sum(ph["cell"]), self.places) + self.assertAlmostEqual(1.0, sum(ph["mass"]), self.places) + self.assertAlmostEqual(bb2 / bb1, ph["atom"][0] / ph["atom"][1], self.places) + self.assertAlmostEqual(bb2 / bb1 * 40.0 / 4.0, ph["cell"][0] / ph["cell"][1], self.places) + mavg1 = 58.69 + mavg2 = (8 * 207.19 + 24 * 15.994 + 4 * 44.956 + 2 * 183.85 + 2 * 47.90) / 40.0 + self.assertAlmostEqual(bb2 / bb1 * mavg1 / mavg2, ph["mass"][0] / ph["mass"][1], self.places) + self.assertEqual(0.0, sum(ph["stdatom"])) + self.assertEqual(0.0, sum(ph["stdcell"])) + self.assertEqual(0.0, sum(ph["stdmass"])) + self.P.setphase(1) + self.P.setvar("pscale", 2.0) + ph2 = self.P.phase_fractions() + self.assertAlmostEqual(1.0, sum(ph2["atom"]), self.places) + self.assertAlmostEqual(1.0, sum(ph2["cell"]), self.places) + self.assertAlmostEqual(1.0, sum(ph2["mass"]), self.places) + self.assertAlmostEqual(2.0, ph2["atom"][0] / ph2["atom"][1] / (ph["atom"][0] / ph["atom"][1]), self.places) + self.assertAlmostEqual(2.0, ph2["cell"][0] / ph2["cell"][1] / (ph["cell"][0] / ph["cell"][1]), self.places) + self.assertAlmostEqual(2.0, ph2["mass"][0] / ph2["mass"][1] / (ph["mass"][0] / ph["mass"][1]), self.places) + return + + def test_neutron_fractions(self): + """test_neutron_fractions -- check phase fractions in neutron dataset.""" + self.P.setdata(2) + ph = self.P.phase_fractions() + bb1 = 10.31**2 + bPb = 9.4012 + bO = 5.8054 + bSc = 12.11 + bW = 4.75518 + bTi = -3.37013 + bb2 = ((8 * bPb + 24 * bO + 4 * bSc + 2 * bW + 2 * bTi) / 40.0) ** 2 + self.assertAlmostEqual(1.0, sum(ph["atom"]), self.places) + self.assertAlmostEqual(1.0, sum(ph["cell"]), self.places) + self.assertAlmostEqual(1.0, sum(ph["mass"]), self.places) + self.assertAlmostEqual(bb2 / bb1, ph["atom"][0] / ph["atom"][1], self.places) + self.assertAlmostEqual(bb2 / bb1 * 40.0 / 4.0, ph["cell"][0] / ph["cell"][1], self.places) + mavg1 = 58.69 + mavg2 = (8 * 207.19 + 24 * 15.994 + 4 * 44.956 + 2 * 183.85 + 2 * 47.90) / 40.0 + self.assertAlmostEqual(bb2 / bb1 * mavg1 / mavg2, ph["mass"][0] / ph["mass"][1], self.places) + self.assertEqual(0.0, sum(ph["stdatom"])) + self.assertEqual(0.0, sum(ph["stdcell"])) + self.assertEqual(0.0, sum(ph["stdmass"])) + self.P.setphase(1) + self.P.setvar("pscale", 2.0) + ph2 = self.P.phase_fractions() + self.assertAlmostEqual(1.0, sum(ph2["atom"]), self.places) + self.assertAlmostEqual(1.0, sum(ph2["cell"]), self.places) + self.assertAlmostEqual(1.0, sum(ph2["mass"]), self.places) + self.assertAlmostEqual(2.0, ph2["atom"][0] / ph2["atom"][1] / (ph["atom"][0] / ph["atom"][1]), self.places) + self.assertAlmostEqual(2.0, ph2["cell"][0] / ph2["cell"][1] / (ph["cell"][0] / ph["cell"][1]), self.places) + self.assertAlmostEqual(2.0, ph2["mass"][0] / ph2["mass"][1] / (ph["mass"][0] / ph["mass"][1]), self.places) + return + + +# End of class TestSphereEnvelope + +if __name__ == "__main__": + unittest.main() + +# End of file diff --git a/diffpy/pdffit2/tests/TestShapeFactors.py b/src/diffpy/pdffit2/tests/TestShapeFactors.py similarity index 54% rename from diffpy/pdffit2/tests/TestShapeFactors.py rename to src/diffpy/pdffit2/tests/TestShapeFactors.py index 26e5bb46..1eaa9711 100644 --- a/diffpy/pdffit2/tests/TestShapeFactors.py +++ b/src/diffpy/pdffit2/tests/TestShapeFactors.py @@ -5,10 +5,10 @@ import unittest + import numpy -from diffpy.pdffit2 import PdfFit -from diffpy.pdffit2 import pdffit2 +from diffpy.pdffit2 import PdfFit, pdffit2 from diffpy.pdffit2.tests.pdffit2testutils import datafile @@ -21,7 +21,7 @@ def spherefactor(r, d): Return numpy array of shape correction envelope. """ r1 = numpy.array(r) - fsph = 1.0 - 1.5*r1/d + 0.5*(r1/d)**3 + fsph = 1.0 - 1.5 * r1 / d + 0.5 * (r1 / d) ** 3 fsph[r1 > d] = 0.0 return fsph @@ -39,33 +39,29 @@ def tearDown(self): self.P = None return - def test_calculation(self): - """check calculation of sphere envelope factor - """ - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) + """check calculation of sphere envelope factor""" + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) self.P.calc() d = 8.0 r = numpy.array(self.P.getR()) G0 = numpy.array(self.P.getpdf_fit()) - self.P.setvar('spdiameter', d) + self.P.setvar("spdiameter", d) self.P.calc() G1 = numpy.array(self.P.getpdf_fit()) - dG = (G0*spherefactor(r, d) - G1) - msd = numpy.dot(dG, dG)/len(r) + dG = G0 * spherefactor(r, d) - G1 + msd = numpy.dot(dG, dG) / len(r) self.assertAlmostEqual(0.0, numpy.sqrt(msd), self.places) return - def test_refinement(self): - """check refinement of sphere envelope factor - """ + """check refinement of sphere envelope factor""" dcheck = 8.0 dstart = 12.0 - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.setvar('spdiameter', dcheck) + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.setvar("spdiameter", dcheck) self.P.calc() r = numpy.array(self.P.getR()) Gd8 = numpy.array(self.P.getpdf_fit()) @@ -73,65 +69,61 @@ def test_refinement(self): Gd8noise[::2] += 0.01 Gd8noise[1::2] -= 0.01 self.P.reset() - self.P.read_struct(datafile('Ni.stru')) - self.P.read_data_lists('X', 0.0, 0.05, list(r), list(Gd8noise)) - self.P.constrain('spdiameter', '@8') + self.P.read_struct(datafile("Ni.stru")) + self.P.read_data_lists("X", 0.0, 0.05, list(r), list(Gd8noise)) + self.P.constrain("spdiameter", "@8") self.P.setpar(8, dstart) self.P.refine() - dfinal = self.P.getvar('spdiameter') + dfinal = self.P.getvar("spdiameter") self.assertAlmostEqual(dcheck, dfinal, 3) return - def test_twophase_calculation(self): - """check PDF calculation for 2 phases with different spdiameters - """ + """check PDF calculation for 2 phases with different spdiameters""" d1 = 6 d2 = 9 - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.setvar('spdiameter', d1) + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.setvar("spdiameter", d1) self.P.calc() G1 = numpy.array(self.P.getpdf_fit()) self.P.reset() - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.setvar('spdiameter', d2) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.setvar("spdiameter", d2) self.P.calc() G2 = numpy.array(self.P.getpdf_fit()) self.P.reset() - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) self.P.setphase(1) - self.P.setvar('spdiameter', d1) + self.P.setvar("spdiameter", d1) self.P.setphase(2) - self.P.setvar('spdiameter', d2) + self.P.setvar("spdiameter", d2) self.P.calc() Gtot = numpy.array(self.P.getpdf_fit()) - dG = (G1 + G2 - Gtot) + dG = G1 + G2 - Gtot r = numpy.array(self.P.getR()) - msd = numpy.dot(dG, dG)/len(r) + msd = numpy.dot(dG, dG) / len(r) self.assertAlmostEqual(0.0, numpy.sqrt(msd), self.places) return - def test_twophase_refinement(self): - """check PDF refinement of 2 phases that have different spdiameter. - """ + """check PDF refinement of 2 phases that have different spdiameter.""" dcheck1 = 8.0 dstart1 = 8.2 dcheck2 = 6.0 dstart2 = 5.5 - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.setvar('spdiameter', dcheck1) + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.setvar("spdiameter", dcheck1) self.P.calc() G1 = numpy.array(self.P.getpdf_fit()) self.P.reset() - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.setvar('spdiameter', dcheck2) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.setvar("spdiameter", dcheck2) self.P.calc() G2 = numpy.array(self.P.getpdf_fit()) r = numpy.array(self.P.getR()) @@ -139,48 +131,46 @@ def test_twophase_refinement(self): Gnoise[::2] += 0.01 Gnoise[1::2] -= 0.01 self.P.reset() - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.read_data_lists('X', 0.0, 0.05, list(r), list(Gnoise)) + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.read_data_lists("X", 0.0, 0.05, list(r), list(Gnoise)) self.P.setphase(1) - self.P.constrain('spdiameter', '@11') + self.P.constrain("spdiameter", "@11") self.P.setphase(2) - self.P.constrain('spdiameter', '@12') + self.P.constrain("spdiameter", "@12") self.P.setpar(11, dstart1) self.P.setpar(12, dstart2) self.P.refine() - dfinal2 = self.P.getvar('spdiameter') + dfinal2 = self.P.getvar("spdiameter") self.P.setphase(1) - dfinal1 = self.P.getvar('spdiameter') + dfinal1 = self.P.getvar("spdiameter") self.assertAlmostEqual(dcheck1, dfinal1, 3) self.assertAlmostEqual(dcheck2, dfinal2, 3) return - def test_spdiameter_io(self): - """Check reading and writing of spdiameter from structure file. - """ + """Check reading and writing of spdiameter from structure file.""" import re - self.P.read_struct(datafile('Ni.stru')) - self.assertEqual(0.0, self.P.getvar('spdiameter')) + + self.P.read_struct(datafile("Ni.stru")) + self.assertEqual(0.0, self.P.getvar("spdiameter")) # engine should not write shape factor when not defined spdnone = self.P.save_struct_string(1) - self.assertTrue(not re.search('(?m)^shape +sphere,', spdnone)) - self.P.setvar('spdiameter', 7) + self.assertTrue(not re.search("(?m)^shape +sphere,", spdnone)) + self.P.setvar("spdiameter", 7) spd7 = self.P.save_struct_string(1) # spd7 should contain shape factor data - self.assertTrue(re.search('(?m)^shape +sphere,', spd7)) + self.assertTrue(re.search("(?m)^shape +sphere,", spd7)) self.P.reset() self.P.read_struct_string(spd7) - self.assertEqual(7.0, self.P.getvar('spdiameter')) + self.assertEqual(7.0, self.P.getvar("spdiameter")) # try to read without comma - spd14 = re.sub('(?m)^shape +sphere.*$', 'shape sphere 14.00', spd7) + spd14 = re.sub("(?m)^shape +sphere.*$", "shape sphere 14.00", spd7) self.P.read_struct_string(spd14) - self.assertEqual(14.0, self.P.getvar('spdiameter')) + self.assertEqual(14.0, self.P.getvar("spdiameter")) # try to read invalid shape data - sinvalid = re.sub('(?m)^shape .*', 'shape invalid, 1', spd7) - self.assertRaises(pdffit2.structureError, - self.P.read_struct_string, sinvalid) + sinvalid = re.sub("(?m)^shape .*", "shape invalid, 1", spd7) + self.assertRaises(pdffit2.structureError, self.P.read_struct_string, sinvalid) return @@ -200,91 +190,85 @@ def tearDown(self): self.P = None return - def test_stepcut_calculation(self): - """check calculation of sphere envelope factor - """ - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) + """check calculation of sphere envelope factor""" + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) self.P.calc() stepcut = 8.0 r = numpy.array(self.P.getR()) G0 = numpy.array(self.P.getpdf_fit()) G0[r > stepcut] = 0.0 - self.P.setvar('stepcut', stepcut) + self.P.setvar("stepcut", stepcut) self.P.calc() G1 = numpy.array(self.P.getpdf_fit()) - dG = (G0 - G1) - msd = numpy.dot(dG, dG)/len(r) + dG = G0 - G1 + msd = numpy.dot(dG, dG) / len(r) self.assertAlmostEqual(0.0, numpy.sqrt(msd), self.places) return - def test_twophase_stepcut_calculation(self): - """check PDF calculation for 2 phases with different spdiameters - """ + """check PDF calculation for 2 phases with different spdiameters""" d1 = 6 d2 = 9 - self.P.read_struct(datafile('Ni.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.setvar('stepcut', d1) + self.P.read_struct(datafile("Ni.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.setvar("stepcut", d1) self.P.calc() G1 = numpy.array(self.P.getpdf_fit()) self.P.reset() - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) - self.P.setvar('stepcut', d2) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) + self.P.setvar("stepcut", d2) self.P.calc() G2 = numpy.array(self.P.getpdf_fit()) self.P.reset() - self.P.read_struct(datafile('Ni.stru')) - self.P.read_struct(datafile('PbScW25TiO3.stru')) - self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200) + self.P.read_struct(datafile("Ni.stru")) + self.P.read_struct(datafile("PbScW25TiO3.stru")) + self.P.alloc("X", 0.0, 0.05, 0.1, 10, 200) self.P.setphase(1) - self.P.setvar('stepcut', d1) + self.P.setvar("stepcut", d1) self.P.setphase(2) - self.P.setvar('stepcut', d2) + self.P.setvar("stepcut", d2) self.P.calc() Gtot = numpy.array(self.P.getpdf_fit()) - dG = (G1 + G2 - Gtot) + dG = G1 + G2 - Gtot r = numpy.array(self.P.getR()) - msd = numpy.dot(dG, dG)/len(r) + msd = numpy.dot(dG, dG) / len(r) self.assertAlmostEqual(0.0, numpy.sqrt(msd), self.places) # G after step should be zero self.assertTrue(numpy.all(0 == Gtot[r > max(d1, d2)])) return - def test_stepcut_io(self): - """Check reading and writing of stepcut from structure file. - """ + """Check reading and writing of stepcut from structure file.""" import re - self.P.read_struct(datafile('Ni.stru')) - self.assertEqual(0.0, self.P.getvar('stepcut')) + + self.P.read_struct(datafile("Ni.stru")) + self.assertEqual(0.0, self.P.getvar("stepcut")) # engine should not write shape factor when not defined sscnone = self.P.save_struct_string(1) - self.assertTrue(not re.search('(?m)^shape +stepcut,', sscnone)) - self.P.setvar('stepcut', 7) + self.assertTrue(not re.search("(?m)^shape +stepcut,", sscnone)) + self.P.setvar("stepcut", 7) ssc7 = self.P.save_struct_string(1) # ssc7 should contain shape factor data - self.assertTrue(re.search('(?m)^shape +stepcut,', ssc7)) + self.assertTrue(re.search("(?m)^shape +stepcut,", ssc7)) self.P.reset() self.P.read_struct_string(ssc7) - self.assertEqual(7.0, self.P.getvar('stepcut')) + self.assertEqual(7.0, self.P.getvar("stepcut")) # try to read without comma - ssc14 = re.sub('(?m)^shape +stepcut.*$', 'shape stepcut 14.00', ssc7) + ssc14 = re.sub("(?m)^shape +stepcut.*$", "shape stepcut 14.00", ssc7) self.P.read_struct_string(ssc14) - self.assertEqual(14.0, self.P.getvar('stepcut')) + self.assertEqual(14.0, self.P.getvar("stepcut")) # try to read invalid shape data - sinvalid = re.sub('(?m)^shape .*', 'shape invalid, 1', ssc7) - self.assertRaises(pdffit2.structureError, - self.P.read_struct_string, sinvalid) + sinvalid = re.sub("(?m)^shape .*", "shape invalid, 1", ssc7) + self.assertRaises(pdffit2.structureError, self.P.read_struct_string, sinvalid) return # End of class TestStepCutEnvelope -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() # End of file diff --git a/diffpy/pdffit2/tests/__init__.py b/src/diffpy/pdffit2/tests/__init__.py similarity index 66% rename from diffpy/pdffit2/tests/__init__.py rename to src/diffpy/pdffit2/tests/__init__.py index 4a21417c..4ffdb21c 100644 --- a/diffpy/pdffit2/tests/__init__.py +++ b/src/diffpy/pdffit2/tests/__init__.py @@ -1,15 +1,17 @@ #!/usr/bin/env python ############################################################################## # -# diffpy.pdffit2 by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2012 Trustees of the Columbia University -# in the City of New York. All rights reserved. +# (c) 2012 Trustees of the Columbia University in the City of New York. +# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. # -# File coded by: Pavol Juhas +# File coded by: Billinge Group members and community contributors. # -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE.txt for license information. +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.pdffit2/graphs/contributors +# +# See LICENSE.rst for license information. # ############################################################################## @@ -18,8 +20,9 @@ import unittest -def testsuite(pattern=''): - '''Create a unit tests suite for the diffpy.pdffit2 package. + +def testsuite(pattern=""): + """Create a unit tests suite for the diffpy.pdffit2 package. Parameters ---------- @@ -32,30 +35,31 @@ def testsuite(pattern=''): ------- suite : `unittest.TestSuite` The TestSuite object containing the matching tests. - ''' + """ import re - from os.path import dirname from itertools import chain + from os.path import dirname + from pkg_resources import resource_filename + loader = unittest.defaultTestLoader - thisdir = resource_filename(__name__, '') - depth = __name__.count('.') + 1 + thisdir = resource_filename(__name__, "") + depth = __name__.count(".") + 1 topdir = thisdir for i in range(depth): topdir = dirname(topdir) - suite_all = loader.discover(thisdir, pattern='*Test*.py', - top_level_dir=topdir) + suite_all = loader.discover(thisdir, pattern="*Test*.py", top_level_dir=topdir) # always filter the suite by pattern to test-cover the selection code. suite = unittest.TestSuite() rx = re.compile(pattern) tsuites = list(chain.from_iterable(suite_all)) tsok = all(isinstance(ts, unittest.TestSuite) for ts in tsuites) - if not tsok: # pragma: no cover + if not tsok: # pragma: no cover return suite_all tcases = chain.from_iterable(tsuites) for tc in tcases: - tcwords = tc.id().split('.') - shortname = '.'.join(tcwords[-3:]) + tcwords = tc.id().split(".") + shortname = ".".join(tcwords[-3:]) if rx.search(shortname): suite.addTest(tc) # verify all tests are found for an empty pattern. @@ -64,12 +68,12 @@ def testsuite(pattern=''): def test(): - '''Execute all unit tests for the diffpy.pdffit2 package. + """Execute all unit tests for the diffpy.pdffit2 package. Returns ------- result : `unittest.TestResult` - ''' + """ suite = testsuite() runner = unittest.TextTestRunner() result = runner.run(suite) @@ -77,17 +81,18 @@ def test(): def testdeps(): - '''Execute all unit tests for diffpy.pdffit2 and its dependencies. + """Execute all unit tests for diffpy.pdffit2 and its dependencies. Returns ------- result : `unittest.TestResult` - ''' + """ from importlib import import_module - modulenames = ''' + + modulenames = """ diffpy.pdffit2.tests diffpy.structure.tests - '''.split() + """.split() suite = unittest.TestSuite() for mname in modulenames: mod = import_module(mname) diff --git a/src/diffpy/pdffit2/tests/conftest.py b/src/diffpy/pdffit2/tests/conftest.py new file mode 100644 index 00000000..e3b63139 --- /dev/null +++ b/src/diffpy/pdffit2/tests/conftest.py @@ -0,0 +1,19 @@ +import json +from pathlib import Path + +import pytest + + +@pytest.fixture +def user_filesystem(tmp_path): + base_dir = Path(tmp_path) + home_dir = base_dir / "home_dir" + home_dir.mkdir(parents=True, exist_ok=True) + cwd_dir = base_dir / "cwd_dir" + cwd_dir.mkdir(parents=True, exist_ok=True) + + home_config_data = {"username": "home_username", "email": "home@email.com"} + with open(home_dir / "diffpyconfig.json", "w") as f: + json.dump(home_config_data, f) + + yield tmp_path diff --git a/diffpy/pdffit2/tests/debug.py b/src/diffpy/pdffit2/tests/debug.py similarity index 53% rename from diffpy/pdffit2/tests/debug.py rename to src/diffpy/pdffit2/tests/debug.py index be6e48e4..3e30239f 100644 --- a/diffpy/pdffit2/tests/debug.py +++ b/src/diffpy/pdffit2/tests/debug.py @@ -1,20 +1,19 @@ #!/usr/bin/env python ############################################################################## # -# diffpy.pdffit2 Complex Modeling Initiative -# (c) 2016 Brookhaven Science Associates, -# Brookhaven National Laboratory. -# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. # -# File coded by: Pavol Juhas +# File coded by: Billinge Group members and community contributors. # -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE.txt for license information. +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.pdffit2/graphs/contributors +# +# See LICENSE.rst for license information. # ############################################################################## - -"""\ +""" Convenience module for debugging the unit tests using python -m diffpy.pdffit2.tests.debug @@ -23,10 +22,12 @@ """ -if __name__ == '__main__': +if __name__ == "__main__": import sys + from diffpy.pdffit2.tests import testsuite - pattern = sys.argv[1] if len(sys.argv) > 1 else '' + + pattern = sys.argv[1] if len(sys.argv) > 1 else "" suite = testsuite(pattern) suite.debug() diff --git a/diffpy/pdffit2/tests/pdffit2testutils.py b/src/diffpy/pdffit2/tests/pdffit2testutils.py similarity index 85% rename from diffpy/pdffit2/tests/pdffit2testutils.py rename to src/diffpy/pdffit2/tests/pdffit2testutils.py index 18dabf11..ce61aa16 100644 --- a/diffpy/pdffit2/tests/pdffit2testutils.py +++ b/src/diffpy/pdffit2/tests/pdffit2testutils.py @@ -19,26 +19,27 @@ import os.path + import six + import diffpy.pdffit2 # silence the C++ engine output -diffpy.pdffit2.redirect_stdout(open(os.path.devnull, 'w')) +diffpy.pdffit2.redirect_stdout(open(os.path.devnull, "w")) # path variables -thisfile = locals().get('__file__', 'file.py') +thisfile = locals().get("__file__", "file.py") tests_dir = os.path.dirname(os.path.abspath(thisfile)) -testdata_dir = os.path.join(tests_dir, 'testdata') +testdata_dir = os.path.join(tests_dir, "testdata") + def datafile(filename): - """prepend testdata_dir to filename. - """ + """prepend testdata_dir to filename.""" return os.path.join(testdata_dir, filename) def capture_output(f, *args, **kwargs): - """Capture output from pdffit2 engine produced in function call. - """ + """Capture output from pdffit2 engine produced in function call.""" savestdout = diffpy.pdffit2.output.stdout fp = six.StringIO() diffpy.pdffit2.redirect_stdout(fp) @@ -48,4 +49,5 @@ def capture_output(f, *args, **kwargs): diffpy.pdffit2.redirect_stdout(savestdout) return fp.getvalue() + # End of file diff --git a/src/diffpy/pdffit2/tests/run.py b/src/diffpy/pdffit2/tests/run.py new file mode 100644 index 00000000..d5c4ea41 --- /dev/null +++ b/src/diffpy/pdffit2/tests/run.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +############################################################################## +# +# (c) 2012 Trustees of the Columbia University in the City of New York. +# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. +# +# File coded by: Billinge Group members and community contributors. +# +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.pdffit2/graphs/contributors +# +# See LICENSE.rst for license information. +# +############################################################################## + +"""Convenience module for executing all unit tests with +python -m diffpy.pdffit2.tests.run +""" + + +if __name__ == "__main__": + import sys + + # show warnings by default + if not sys.warnoptions: + import os + import warnings + + warnings.simplefilter("default") + # also affect subprocesses + os.environ["PYTHONWARNINGS"] = "default" + from diffpy.pdffit2.tests import test + + # produce zero exit code for a successful test + sys.exit(not test().wasSuccessful()) + + +# Consider upgrading to pytest +# import sys +# +# import pytest +# +# if __name__ == "__main__": +# # show output results from every test function +# args = ["-v"] +# # show the message output for skipped and expected failure tests +# if len(sys.argv) > 1: +# args.extend(sys.argv[1:]) +# print("pytest arguments: {}".format(args)) +# # call pytest and exit with the return code from pytest +# exit_res = pytest.main(args) +# sys.exit(exit_res) + +# End of file diff --git a/diffpy/pdffit2/tests/rundeps.py b/src/diffpy/pdffit2/tests/rundeps.py similarity index 96% rename from diffpy/pdffit2/tests/rundeps.py rename to src/diffpy/pdffit2/tests/rundeps.py index 9e3c5ee9..038475ae 100644 --- a/diffpy/pdffit2/tests/rundeps.py +++ b/src/diffpy/pdffit2/tests/rundeps.py @@ -19,9 +19,11 @@ """ -if __name__ == '__main__': +if __name__ == "__main__": import sys + from diffpy.pdffit2.tests import testdeps + # produce zero exit code for a successful test sys.exit(not testdeps().wasSuccessful()) diff --git a/diffpy/pdffit2/tests/testdata/300K.gr b/src/diffpy/pdffit2/tests/testdata/300K.gr similarity index 99% rename from diffpy/pdffit2/tests/testdata/300K.gr rename to src/diffpy/pdffit2/tests/testdata/300K.gr index 7a6c0968..15578911 100644 --- a/diffpy/pdffit2/tests/testdata/300K.gr +++ b/src/diffpy/pdffit2/tests/testdata/300K.gr @@ -1,5 +1,5 @@ History written: Fri Apr 30 13:05:36 2004 -produced by +produced by ##### Run Information runCorrection=T prep=gsas machine=npdf run=300K background=npdf_00907 @@ -27,12 +27,12 @@ density= effDensity=3.4138 ##### Banks=6 deltaQ=0.01 matchRef=0 matchScal=T matchOffset=T bank angle blendQmin blendQmax (0.0 means no info) - 1 90.0 1.62 29.42 - 2 -90.0 1.62 29.42 - 3 119.0 1.97 35.85 - 4 -119.0 1.97 35.85 - 5 148.0 2.20 40.00 - 6 -148.0 2.20 40.00 + 1 90.0 1.62 29.42 + 2 -90.0 1.62 29.42 + 3 119.0 1.97 35.85 + 4 -119.0 1.97 35.85 + 5 148.0 2.20 40.00 + 6 -148.0 2.20 40.00 ##### Program Specific Information ## Ft calcError=1 (1 for true, 0 for false) diff --git a/diffpy/pdffit2/tests/testdata/Ni.dat b/src/diffpy/pdffit2/tests/testdata/Ni.dat similarity index 100% rename from diffpy/pdffit2/tests/testdata/Ni.dat rename to src/diffpy/pdffit2/tests/testdata/Ni.dat diff --git a/examples/Ni.stru b/src/diffpy/pdffit2/tests/testdata/Ni.stru similarity index 100% rename from examples/Ni.stru rename to src/diffpy/pdffit2/tests/testdata/Ni.stru diff --git a/diffpy/pdffit2/tests/testdata/PbScW25TiO3.stru b/src/diffpy/pdffit2/tests/testdata/PbScW25TiO3.stru similarity index 100% rename from diffpy/pdffit2/tests/testdata/PbScW25TiO3.stru rename to src/diffpy/pdffit2/tests/testdata/PbScW25TiO3.stru diff --git a/diffpy/pdffit2/tests/testdata/badNi.dat b/src/diffpy/pdffit2/tests/testdata/badNi.dat similarity index 100% rename from diffpy/pdffit2/tests/testdata/badNi.dat rename to src/diffpy/pdffit2/tests/testdata/badNi.dat diff --git a/diffpy/pdffit2/tests/testdata/badNi.stru b/src/diffpy/pdffit2/tests/testdata/badNi.stru similarity index 100% rename from diffpy/pdffit2/tests/testdata/badNi.stru rename to src/diffpy/pdffit2/tests/testdata/badNi.stru diff --git a/diffpy/pdffit2/tests/testdata/badNiZeroVolume.stru b/src/diffpy/pdffit2/tests/testdata/badNiZeroVolume.stru similarity index 100% rename from diffpy/pdffit2/tests/testdata/badNiZeroVolume.stru rename to src/diffpy/pdffit2/tests/testdata/badNiZeroVolume.stru diff --git a/diffpy/pdffit2/tests/testdata/noLattice.stru b/src/diffpy/pdffit2/tests/testdata/noLattice.stru similarity index 100% rename from diffpy/pdffit2/tests/testdata/noLattice.stru rename to src/diffpy/pdffit2/tests/testdata/noLattice.stru diff --git a/src/diffpy/pdffit2/version.py b/src/diffpy/pdffit2/version.py new file mode 100644 index 00000000..60d34a97 --- /dev/null +++ b/src/diffpy/pdffit2/version.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +############################################################################## +# +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. +# +# File coded by: Billinge Group members and community contributors. +# +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.pdffit2/graphs/contributors +# +# See LICENSE.rst for license information. +# +############################################################################## + +"""Definition of __version__.""" + +# We do not use the other three variables, but can be added back if needed. +__all__ = ["__date__", "__git_commit__", "__timestamp__", "__version__"] + +# obtain version information +from importlib.metadata import version + +__version__ = version("diffpy.pdffit2") +__date__ = __all__[0] +__git_commit__ = __all__[1] +__timestamp__ = __all__[2] + +# End of file diff --git a/libpdffit2/Atom.cc b/src/extensions/libpdffit2/Atom.cc similarity index 100% rename from libpdffit2/Atom.cc rename to src/extensions/libpdffit2/Atom.cc diff --git a/libpdffit2/Atom.h b/src/extensions/libpdffit2/Atom.h similarity index 100% rename from libpdffit2/Atom.h rename to src/extensions/libpdffit2/Atom.h diff --git a/libpdffit2/AtomType.h b/src/extensions/libpdffit2/AtomType.h similarity index 100% rename from libpdffit2/AtomType.h rename to src/extensions/libpdffit2/AtomType.h diff --git a/libpdffit2/LocalPeriodicTable.cc b/src/extensions/libpdffit2/LocalPeriodicTable.cc similarity index 100% rename from libpdffit2/LocalPeriodicTable.cc rename to src/extensions/libpdffit2/LocalPeriodicTable.cc diff --git a/libpdffit2/LocalPeriodicTable.h b/src/extensions/libpdffit2/LocalPeriodicTable.h similarity index 100% rename from libpdffit2/LocalPeriodicTable.h rename to src/extensions/libpdffit2/LocalPeriodicTable.h diff --git a/libpdffit2/MathUtils.h b/src/extensions/libpdffit2/MathUtils.h similarity index 100% rename from libpdffit2/MathUtils.h rename to src/extensions/libpdffit2/MathUtils.h diff --git a/libpdffit2/OutputStreams.cc b/src/extensions/libpdffit2/OutputStreams.cc similarity index 100% rename from libpdffit2/OutputStreams.cc rename to src/extensions/libpdffit2/OutputStreams.cc diff --git a/libpdffit2/OutputStreams.h b/src/extensions/libpdffit2/OutputStreams.h similarity index 100% rename from libpdffit2/OutputStreams.h rename to src/extensions/libpdffit2/OutputStreams.h diff --git a/libpdffit2/PairDistance.h b/src/extensions/libpdffit2/PairDistance.h similarity index 100% rename from libpdffit2/PairDistance.h rename to src/extensions/libpdffit2/PairDistance.h diff --git a/libpdffit2/PeriodicTable.cc b/src/extensions/libpdffit2/PeriodicTable.cc similarity index 100% rename from libpdffit2/PeriodicTable.cc rename to src/extensions/libpdffit2/PeriodicTable.cc diff --git a/libpdffit2/PeriodicTable.h b/src/extensions/libpdffit2/PeriodicTable.h similarity index 100% rename from libpdffit2/PeriodicTable.h rename to src/extensions/libpdffit2/PeriodicTable.h diff --git a/libpdffit2/PointsInSphere.cc b/src/extensions/libpdffit2/PointsInSphere.cc similarity index 100% rename from libpdffit2/PointsInSphere.cc rename to src/extensions/libpdffit2/PointsInSphere.cc diff --git a/libpdffit2/PointsInSphere.h b/src/extensions/libpdffit2/PointsInSphere.h similarity index 100% rename from libpdffit2/PointsInSphere.h rename to src/extensions/libpdffit2/PointsInSphere.h diff --git a/libpdffit2/ShapeFactors.h b/src/extensions/libpdffit2/ShapeFactors.h similarity index 100% rename from libpdffit2/ShapeFactors.h rename to src/extensions/libpdffit2/ShapeFactors.h diff --git a/libpdffit2/StringUtils.cc b/src/extensions/libpdffit2/StringUtils.cc similarity index 100% rename from libpdffit2/StringUtils.cc rename to src/extensions/libpdffit2/StringUtils.cc diff --git a/libpdffit2/StringUtils.h b/src/extensions/libpdffit2/StringUtils.h similarity index 100% rename from libpdffit2/StringUtils.h rename to src/extensions/libpdffit2/StringUtils.h diff --git a/libpdffit2/exceptions.h b/src/extensions/libpdffit2/exceptions.h similarity index 100% rename from libpdffit2/exceptions.h rename to src/extensions/libpdffit2/exceptions.h diff --git a/libpdffit2/fit.cc b/src/extensions/libpdffit2/fit.cc similarity index 100% rename from libpdffit2/fit.cc rename to src/extensions/libpdffit2/fit.cc diff --git a/libpdffit2/gaussj.cc b/src/extensions/libpdffit2/gaussj.cc similarity index 100% rename from libpdffit2/gaussj.cc rename to src/extensions/libpdffit2/gaussj.cc diff --git a/libpdffit2/matrix.h b/src/extensions/libpdffit2/matrix.h similarity index 100% rename from libpdffit2/matrix.h rename to src/extensions/libpdffit2/matrix.h diff --git a/libpdffit2/metric.cc b/src/extensions/libpdffit2/metric.cc similarity index 100% rename from libpdffit2/metric.cc rename to src/extensions/libpdffit2/metric.cc diff --git a/libpdffit2/nrutil.cc b/src/extensions/libpdffit2/nrutil.cc similarity index 100% rename from libpdffit2/nrutil.cc rename to src/extensions/libpdffit2/nrutil.cc diff --git a/libpdffit2/nrutil.h b/src/extensions/libpdffit2/nrutil.h similarity index 100% rename from libpdffit2/nrutil.h rename to src/extensions/libpdffit2/nrutil.h diff --git a/libpdffit2/output.cc b/src/extensions/libpdffit2/output.cc similarity index 100% rename from libpdffit2/output.cc rename to src/extensions/libpdffit2/output.cc diff --git a/libpdffit2/parser.cc b/src/extensions/libpdffit2/parser.cc similarity index 100% rename from libpdffit2/parser.cc rename to src/extensions/libpdffit2/parser.cc diff --git a/libpdffit2/pdf.cc b/src/extensions/libpdffit2/pdf.cc similarity index 100% rename from libpdffit2/pdf.cc rename to src/extensions/libpdffit2/pdf.cc diff --git a/libpdffit2/pdffit.cc b/src/extensions/libpdffit2/pdffit.cc similarity index 100% rename from libpdffit2/pdffit.cc rename to src/extensions/libpdffit2/pdffit.cc diff --git a/libpdffit2/pdffit.h b/src/extensions/libpdffit2/pdffit.h similarity index 100% rename from libpdffit2/pdffit.h rename to src/extensions/libpdffit2/pdffit.h diff --git a/libpdffit2/pdflsmin.cc b/src/extensions/libpdffit2/pdflsmin.cc similarity index 100% rename from libpdffit2/pdflsmin.cc rename to src/extensions/libpdffit2/pdflsmin.cc diff --git a/libpdffit2/scatlen.cc b/src/extensions/libpdffit2/scatlen.cc similarity index 100% rename from libpdffit2/scatlen.cc rename to src/extensions/libpdffit2/scatlen.cc diff --git a/libpdffit2/stru.cc b/src/extensions/libpdffit2/stru.cc similarity index 100% rename from libpdffit2/stru.cc rename to src/extensions/libpdffit2/stru.cc diff --git a/libpdffit2/support_msvc9.h b/src/extensions/libpdffit2/support_msvc9.h similarity index 100% rename from libpdffit2/support_msvc9.h rename to src/extensions/libpdffit2/support_msvc9.h diff --git a/libpdffit2/tests/Makefile b/src/extensions/libpdffit2/tests/Makefile similarity index 100% rename from libpdffit2/tests/Makefile rename to src/extensions/libpdffit2/tests/Makefile diff --git a/libpdffit2/tests/TestPointsInSphere.cc b/src/extensions/libpdffit2/tests/TestPointsInSphere.cc similarity index 100% rename from libpdffit2/tests/TestPointsInSphere.cc rename to src/extensions/libpdffit2/tests/TestPointsInSphere.cc diff --git a/libpdffit2/tests/alltests.cc b/src/extensions/libpdffit2/tests/alltests.cc similarity index 100% rename from libpdffit2/tests/alltests.cc rename to src/extensions/libpdffit2/tests/alltests.cc diff --git a/pdffit2module/PyFileStreambuf.h b/src/extensions/pdffit2module/PyFileStreambuf.h similarity index 100% rename from pdffit2module/PyFileStreambuf.h rename to src/extensions/pdffit2module/PyFileStreambuf.h diff --git a/pdffit2module/bindings.cc b/src/extensions/pdffit2module/bindings.cc similarity index 100% rename from pdffit2module/bindings.cc rename to src/extensions/pdffit2module/bindings.cc diff --git a/pdffit2module/bindings.h b/src/extensions/pdffit2module/bindings.h similarity index 100% rename from pdffit2module/bindings.h rename to src/extensions/pdffit2module/bindings.h diff --git a/pdffit2module/misc.cc b/src/extensions/pdffit2module/misc.cc similarity index 99% rename from pdffit2module/misc.cc rename to src/extensions/pdffit2module/misc.cc index 80198049..17e0833d 100644 --- a/pdffit2module/misc.cc +++ b/src/extensions/pdffit2module/misc.cc @@ -30,9 +30,9 @@ #include "misc.h" #include "pyexceptions.h" #include "PyFileStreambuf.h" -#include "libpdffit2/StringUtils.h" -#include "libpdffit2/LocalPeriodicTable.h" -#include "libpdffit2/pdffit.h" +#include "../libpdffit2/StringUtils.h" +#include "../libpdffit2/LocalPeriodicTable.h" +#include "../libpdffit2/pdffit.h" // ostream buffer used for engine output redirection PyFileStreambuf* py_stdout_streambuf = NULL; diff --git a/pdffit2module/misc.h b/src/extensions/pdffit2module/misc.h similarity index 100% rename from pdffit2module/misc.h rename to src/extensions/pdffit2module/misc.h diff --git a/pdffit2module/pdffit2module.cc b/src/extensions/pdffit2module/pdffit2module.cc similarity index 99% rename from pdffit2module/pdffit2module.cc rename to src/extensions/pdffit2module/pdffit2module.cc index acf89fa3..efde9511 100644 --- a/pdffit2module/pdffit2module.cc +++ b/src/extensions/pdffit2module/pdffit2module.cc @@ -23,7 +23,7 @@ #include "pyexceptions.h" #include "bindings.h" -#include "libpdffit2/pdffit.h" +#include "../libpdffit2/pdffit.h" using namespace std; diff --git a/pdffit2module/pyexceptions.cc b/src/extensions/pdffit2module/pyexceptions.cc similarity index 100% rename from pdffit2module/pyexceptions.cc rename to src/extensions/pdffit2module/pyexceptions.cc diff --git a/pdffit2module/pyexceptions.h b/src/extensions/pdffit2module/pyexceptions.h similarity index 100% rename from pdffit2module/pyexceptions.h rename to src/extensions/pdffit2module/pyexceptions.h