diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 3d4b61e4de..5998d60cf0 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -4,6 +4,16 @@ For reviewing PRs: * Use meaningful variable names, e.g. `measurement` not `msm`, avoid abbreviations. * Flag overly complex or long/functions: break up in smaller functions * On Windows it is necessary to explicitly export all functions from the library which should be externally accessible. To do this, include the macro `GTSAM_EXPORT` in your class or function definition. +* When adding or modifying public classes/methods, always review and follow `Using-GTSAM-EXPORT.md` before finalizing changes, including template specialization/export rules. * If we add a C++ function to a `.i` file to expose it to the wrapper, we must ensure that the parameter names match exactly between the declaration in the header file and the declaration in the `.i`. Similarly, if we change any parameter names in a wrapped function in a header file, or change any parameter names in a `.i` file, we must change the corresponding function in the other file to reflect those changes. * Classes are Uppercase, methods and functions lowerMixedCase. +* Public fields in structs keep plain names (no trailing underscore). * Apart from those naming conventions, we adopt Google C++ style. +* Notebooks in `*/doc/*.ipynb` and `*/examples/*.ipynb` should follow the standard preamble: + 1) title/introduction markdown cell, + 2) copyright markdown cell tagged `remove-cell`, + 3) Colab badge markdown cell, + 4) Colab install code cell tagged `remove-cell`, + 5) imports/setup code cell. + Use the same `remove-cell` tagging convention as existing notebooks so docs build and Colab behavior stay consistent. +* After any code change, always run relevant tests via `make -j6 testXXX.run` in the build folder $WORKSPACE/build. If in VS code, ask for escalated permissions if needed. diff --git a/.github/scripts/compare_time_sfmbal_benchmarks.py b/.github/scripts/compare_time_sfmbal_benchmarks.py new file mode 100644 index 0000000000..251d7719bd --- /dev/null +++ b/.github/scripts/compare_time_sfmbal_benchmarks.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +"""Compare timeSFMBAL benchmark JSON files and render a PR-friendly markdown body.""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path +from typing import Dict + + +def _load_result(path: Path) -> Dict[str, float]: + with path.open("r", encoding="utf-8") as f: + payload = json.load(f) + if not isinstance(payload, list): + raise ValueError(f"{path} is not a JSON array") + + metrics: Dict[str, float] = {} + for item in payload: + if not isinstance(item, dict): + continue + name = item.get("name") + value = item.get("value") + if not isinstance(name, str): + continue + if not isinstance(value, (int, float)): + continue + metrics[name] = float(value) + return metrics + + +def _collect_results(folder: Path) -> Dict[str, Dict[str, float]]: + if not folder.exists(): + return {} + + results: Dict[str, Dict[str, float]] = {} + for path in sorted(folder.glob("*.json")): + runner_id = path.stem + results[runner_id] = _load_result(path) + return results + + +def _fmt_seconds(value: float | None) -> str: + if value is None: + return "N/A" + return f"{value:.6f}" + + +def _fmt_delta(head: float | None, base: float | None) -> str: + if head is None or base is None: + return "N/A" + delta = head - base + return f"{delta:+.6f}" + + +def _fmt_percent(head: float | None, base: float | None) -> str: + if head is None or base is None or base == 0.0: + return "N/A" + pct = (head - base) / base * 100.0 + return f"{pct:+.2f}%" + + +def render_markdown( + head_results: Dict[str, Dict[str, float]], + base_results: Dict[str, Dict[str, float]], + head_sha: str, + base_sha: str, +) -> str: + lines = ["", "## timeSFMBAL benchmark", ""] + lines.append(f"- Head: `{head_sha}`") + if base_sha: + lines.append(f"- Base: `{base_sha}`") + lines.append("") + + if not head_results: + lines.append("No head benchmark results were found.") + return "\n".join(lines) + "\n" + + lines.append( + "| Runner | Metric | Base (s) | Head (s) | Delta (s) | Change |" + ) + lines.append("| --- | --- | ---: | ---: | ---: | ---: |") + + missing_base_runners = [] + for runner_id in sorted(head_results): + head_metrics = head_results[runner_id] + base_metrics = base_results.get(runner_id, {}) + if not base_metrics: + missing_base_runners.append(runner_id) + + metric_names = sorted(set(head_metrics) | set(base_metrics)) + for metric_name in metric_names: + head_value = head_metrics.get(metric_name) + base_value = base_metrics.get(metric_name) + lines.append( + "| " + + f"{runner_id} | `{metric_name}` | {_fmt_seconds(base_value)} | " + + f"{_fmt_seconds(head_value)} | {_fmt_delta(head_value, base_value)} | " + + f"{_fmt_percent(head_value, base_value)} |" + ) + + if missing_base_runners: + lines.append("") + lines.append( + "Missing base benchmark cache for: " + + ", ".join(f"`{runner}`" for runner in missing_base_runners) + + "." + ) + + return "\n".join(lines) + "\n" + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Compare per-runner timeSFMBAL benchmark JSON files." + ) + parser.add_argument("--head-dir", required=True, help="Directory with head JSON files") + parser.add_argument("--base-dir", required=True, help="Directory with base JSON files") + parser.add_argument("--head-sha", required=True, help="Head commit SHA") + parser.add_argument("--base-sha", default="", help="Base commit SHA") + parser.add_argument("--output", required=True, help="Output markdown file") + args = parser.parse_args() + + head_dir = Path(args.head_dir) + base_dir = Path(args.base_dir) + output = Path(args.output) + + head_results = _collect_results(head_dir) + base_results = _collect_results(base_dir) + markdown = render_markdown(head_results, base_results, args.head_sha, args.base_sha) + + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text(markdown, encoding="utf-8") + print(markdown, end="") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/.github/scripts/python.sh b/.github/scripts/python.sh index 60e35fc3f8..7454956904 100644 --- a/.github/scripts/python.sh +++ b/.github/scripts/python.sh @@ -24,6 +24,7 @@ if [ -z ${PYTHON_VERSION+x} ]; then fi export PYTHON="python${PYTHON_VERSION}" +NO_BOOST_BUILD=OFF function install_dependencies() { @@ -43,12 +44,18 @@ function install_dependencies() function build() { - export CMAKE_GENERATOR=Ninja BUILD_PYBIND="ON" + USE_BOOST_FEATURES="ON" + ENABLE_BOOST_SERIALIZATION="ON" + + if [ "${NO_BOOST_BUILD}" == "ON" ]; then + USE_BOOST_FEATURES="OFF" + ENABLE_BOOST_SERIALIZATION="OFF" + fi # Add Boost hints on Windows BOOST_CMAKE_ARGS="" - if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" || "$OSTYPE" == "cygwin" ]]; then + if [ "${NO_BOOST_BUILD}" != "ON" ] && [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" || "$OSTYPE" == "cygwin" ]]; then if [ -n "${BOOST_ROOT}" ]; then BOOST_ROOT_UNIX=$(echo "$BOOST_ROOT" | sed 's/\\/\//g') BOOST_CMAKE_ARGS="-DBOOST_ROOT=${BOOST_ROOT_UNIX} -DBOOST_INCLUDEDIR=${BOOST_ROOT_UNIX}/include -DBOOST_LIBRARYDIR=${BOOST_ROOT_UNIX}/lib" @@ -56,7 +63,7 @@ function build() fi cmake $GITHUB_WORKSPACE \ - -B build \ + -B build -G Ninja \ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \ -DGTSAM_BUILD_TESTS=OFF \ -DGTSAM_BUILD_UNSTABLE=${GTSAM_BUILD_UNSTABLE:-ON} \ @@ -68,20 +75,28 @@ function build() -DGTSAM_UNSTABLE_BUILD_PYTHON=${GTSAM_BUILD_UNSTABLE:-ON} \ -DGTSAM_PYTHON_VERSION=$PYTHON_VERSION \ -DPYTHON_EXECUTABLE:FILEPATH=$(which $PYTHON) \ - -DGTSAM_USE_BOOST_FEATURES=ON \ - -DGTSAM_ENABLE_BOOST_SERIALIZATION=ON \ + -DGTSAM_USE_BOOST_FEATURES=${USE_BOOST_FEATURES} \ + -DGTSAM_ENABLE_BOOST_SERIALIZATION=${ENABLE_BOOST_SERIALIZATION} \ -DGTSAM_ALLOW_DEPRECATED_SINCE_V43=OFF \ -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/gtsam_install \ $BOOST_CMAKE_ARGS - # Set to 2 cores so that Actions does not error out during resource provisioning. - cmake --build build -j2 - - cmake --build build --target python-install + if [ "${NO_BOOST_BUILD}" == "ON" ]; then + # Build only wrapper targets for the no-Boost verification lane. + cmake --build build -j2 --target gtsam_py gtsam_unstable_py + else + # Set to 2 cores so that Actions does not error out during resource provisioning. + cmake --build build -j2 + cmake --build build --target python-install + fi } function test() { + if [ "${NO_BOOST_BUILD}" == "ON" ]; then + export PYTHONPATH="$GITHUB_WORKSPACE/build/python:$PYTHONPATH" + fi + cd $GITHUB_WORKSPACE/python/gtsam/tests $PYTHON -m unittest discover -v cd $GITHUB_WORKSPACE @@ -94,8 +109,30 @@ function test() # cmake --build build --target python-test-unstable } +# Parse optional flags. +if [ $# -lt 1 ]; then + echo "Usage: $0 {-d|-b|-t} [--no-boost]" + exit 2 +fi + +ACTION="$1" +shift + +while [ $# -gt 0 ]; do + case "$1" in + --no-boost) + NO_BOOST_BUILD=ON + ;; + *) + echo "Unknown option: $1" + exit 2 + ;; + esac + shift +done + # select between build or test -case $1 in +case $ACTION in -d) install_dependencies ;; diff --git a/.github/scripts/python_wheels/cibw_before_all.sh b/.github/scripts/python_wheels/cibw_before_all.sh index e68422351e..4bab03d59a 100644 --- a/.github/scripts/python_wheels/cibw_before_all.sh +++ b/.github/scripts/python_wheels/cibw_before_all.sh @@ -8,7 +8,6 @@ set -x PYTHON_VERSION="$1" PROJECT_DIR="$2" -ARCH=$(uname -m) export PYTHON="python${PYTHON_VERSION}" @@ -33,11 +32,26 @@ BOOST_PREFIX="$HOME/opt/boost" ./bootstrap.sh --prefix=${BOOST_PREFIX} if [ "$(uname)" == "Linux" ]; then - ./b2 install --prefix=${BOOST_PREFIX} --with=all -d0 + ./b2 install --prefix=${BOOST_PREFIX} -d0 --with-graph \ + --with-move --with-optional --with-program_options --with-random \ + --with-serialization --with-smart_ptr --with-timer --with-chrono elif [ "$(uname)" == "Darwin" ]; then - ./b2 install --prefix=${BOOST_PREFIX} --with=all -d0 \ + ./b2 install --prefix=${BOOST_PREFIX} -d0 --with-graph \ + --with-move --with-optional --with-program_options --with-random \ + --with-serialization --with-smart_ptr --with-timer --with-chrono \ + architecture=arm \ cxxflags="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \ linkflags="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" + ./b2 install --prefix=${BOOST_PREFIX}/x86 -d0 --with-graph \ + --with-move --with-optional --with-program_options --with-random \ + --with-serialization --with-smart_ptr --with-timer --with-chrono \ + architecture=x86 \ + cxxflags="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \ + linkflags="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" + for dylib in ${BOOST_PREFIX}/lib/*.dylib; do + lipo -create -output $dylib $dylib ${BOOST_PREFIX}/x86/lib/$(basename $dylib) + done + rm -r ${BOOST_PREFIX}/x86 fi cd .. @@ -67,6 +81,7 @@ rm -rf CMakeCache.txt CMakeFiles cmake $PROJECT_DIR \ -B build \ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \ + -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ -DGTSAM_BUILD_TESTS=OFF \ -DGTSAM_BUILD_UNSTABLE=${GTSAM_BUILD_UNSTABLE:-ON} \ -DGTSAM_USE_QUATERNIONS=OFF \ diff --git a/.github/scripts/unix.sh b/.github/scripts/unix.sh index f6b4114a4f..596c618b57 100755 --- a/.github/scripts/unix.sh +++ b/.github/scripts/unix.sh @@ -17,9 +17,8 @@ function configure() # GTSAM_BUILD_WITH_MARCH_NATIVE=OFF: to avoid crashes in builder VMs # CMAKE_CXX_FLAGS="-w": Suppress warnings to avoid IO latency in CI logs - export CMAKE_GENERATOR=Ninja cmake $GITHUB_WORKSPACE \ - -B build \ + -B build -G Ninja \ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:-Debug} \ -DCMAKE_CXX_FLAGS="-w" \ -DGTSAM_BUILD_TESTS=${GTSAM_BUILD_TESTS:-OFF} \ diff --git a/.github/workflows/build-cibw.yml b/.github/workflows/build-cibw.yml index 9a7af07b74..dd24d395f1 100644 --- a/.github/workflows/build-cibw.yml +++ b/.github/workflows/build-cibw.yml @@ -1,7 +1,7 @@ # This workflow builds the Python wheels using cibuildwheel and uploads them to TestPyPI. # It can be triggered on push to the develop branch or manually via Github Actions. -name: Build Wheels for Develop +name: Build Python Wheels for Develop on: push: @@ -32,11 +32,6 @@ jobs: matrix: include: # Linux x86_64 - - os: ubuntu-latest - python_version: "3.10" - cibw_python_version: 310 - platform_id: manylinux_x86_64 - manylinux_image: manylinux2014 - os: ubuntu-latest python_version: "3.11" cibw_python_version: 311 @@ -52,13 +47,13 @@ jobs: cibw_python_version: 313 platform_id: manylinux_x86_64 manylinux_image: manylinux2014 + - os: ubuntu-latest + python_version: "3.14" + cibw_python_version: 314 + platform_id: manylinux_x86_64 + manylinux_image: manylinux2014 # Linux aarch64 - - os: ubuntu-24.04-arm - python_version: "3.10" - cibw_python_version: 310 - platform_id: manylinux_aarch64 - manylinux_image: manylinux2014 - os: ubuntu-24.04-arm python_version: "3.11" cibw_python_version: 311 @@ -74,42 +69,29 @@ jobs: cibw_python_version: 313 platform_id: manylinux_aarch64 manylinux_image: manylinux2014 - - # MacOS x86_64 - - os: macos-15-intel - python_version: "3.10" - cibw_python_version: 310 - platform_id: macosx_x86_64 - - os: macos-15-intel - python_version: "3.11" - cibw_python_version: 311 - platform_id: macosx_x86_64 - - os: macos-15-intel - python_version: "3.12" - cibw_python_version: 312 - platform_id: macosx_x86_64 - - os: macos-15-intel - python_version: "3.13" - cibw_python_version: 313 - platform_id: macosx_x86_64 + - os: ubuntu-24.04-arm + python_version: "3.14" + cibw_python_version: 314 + platform_id: manylinux_aarch64 + manylinux_image: manylinux2014 # MacOS arm64 - - os: macos-latest - python_version: "3.10" - cibw_python_version: 310 - platform_id: macosx_arm64 - os: macos-latest python_version: "3.11" cibw_python_version: 311 - platform_id: macosx_arm64 + platform_id: macosx_universal2 - os: macos-latest python_version: "3.12" cibw_python_version: 312 - platform_id: macosx_arm64 + platform_id: macosx_universal2 - os: macos-latest python_version: "3.13" cibw_python_version: 313 - platform_id: macosx_arm64 + platform_id: macosx_universal2 + - os: macos-latest + python_version: "3.14" + cibw_python_version: 314 + platform_id: macosx_universal2 steps: - name: Checkout @@ -131,9 +113,10 @@ jobs: run: | python3 -m pip install -r python/dev_requirements.txt if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get install -y wget libicu-dev python3-pip python3-setuptools libboost-all-dev ninja-build + sudo apt update + sudo apt-get install -y libicu-dev python3-pip python3-setuptools libboost-all-dev elif [ "$RUNNER_OS" == "macOS" ]; then - brew install wget icu4c boost ninja python-setuptools + brew install boost python-setuptools else echo "$RUNNER_OS not supported" exit 1 @@ -146,7 +129,7 @@ jobs: # the wheels to ensure platform compatibility. - name: Run CMake run: | - cmake . -B build -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=${{ matrix.python_version }} + cmake -B build -G Ninja -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=${{ matrix.python_version }} # If on macOS, we previously installed boost using homebrew for the first build. # We need to uninstall it before building the wheels with cibuildwheel, which will @@ -163,6 +146,7 @@ jobs: CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_image }} CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.manylinux_image }} CIBW_ARCHS: all + CIBW_ARCHS_MACOS: universal2 CIBW_ENVIRONMENT_PASS_LINUX: DEVELOP TIMESTAMP # Set the minimum required MacOS version for the wheels. @@ -181,6 +165,17 @@ jobs: run: bash .github/scripts/python_wheels/build_wheels.sh + - name: Test wheel + run: | + python3 -m pip install wheelhouse/*.whl + python3 -c "import platform; print(platform.machine()); import gtsam" + if [ "$RUNNER_OS" == "macOS" ]; then + # Uninstall numpy and reinstall wheel to get x86 numpy for smoke test + arch -x86_64 python3 -m pip uninstall -y numpy + arch -x86_64 python3 -m pip install wheelhouse/*.whl + arch -x86_64 python3 -c "import platform; print(platform.machine()); import gtsam;" + fi + - name: Store artifacts uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 9129989806..329d8b12d9 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -3,10 +3,9 @@ name: Linux CI on: pull_request: paths-ignore: - - "**.md" - - "**.ipynb" - - "myst.yml" - + - '**.md' + - '**.ipynb' + - 'myst.yml' # Cancels any in-progress workflow runs for the same PR when a new push is made, # allowing the runner to become available more quickly for the latest changes. @@ -31,8 +30,8 @@ jobs: # Github Actions requires a single row to be added to the build matrix. # See https://help.github.com/en/articles/workflow-syntax-for-github-actions. name: [ - # "Bracket" the versions from GCC [9-14] and Clang [11-16] - ubuntu-22.04-gcc-9, + # "Bracket" the versions from GCC [11-14] and Clang [11-16] + ubuntu-22.04-gcc-11, ubuntu-22.04-clang-11, ubuntu-24.04-gcc-14, ubuntu-24.04-clang-16, @@ -43,10 +42,10 @@ jobs: build_type: [Debug, Release] build_unstable: [ON] include: - - name: ubuntu-22.04-gcc-9 + - name: ubuntu-22.04-gcc-11 os: ubuntu-22.04 compiler: gcc - version: "9" + version: "11" - name: ubuntu-22.04-clang-11 os: ubuntu-22.04 diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index dccb00f4bb..af5fc080d6 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -6,6 +6,7 @@ on: - '**.md' - '**.ipynb' - 'myst.yml' + # Cancels any in-progress workflow runs for the same PR when a new push is made, # allowing the runner to become available more quickly for the latest changes. concurrency: @@ -30,39 +31,33 @@ jobs: # Github Actions requires a single row to be added to the build matrix. # See https://help.github.com/en/articles/workflow-syntax-for-github-actions. name: [ - macos-14-xcode-15.4, macos-15-xcode-16, - macos-14-xcode-15.4-boost, - macos-14-xcode-15.4-geographiclib, + macos-15-xcode-16-boost, + macos-15-xcode-16-geographiclib, ] build_type: [Debug, Release] build_unstable: [ON] include: - - name: macos-14-xcode-15.4 - os: macos-14 - compiler: xcode - version: "15.4" - - name: macos-15-xcode-16 os: macos-15 compiler: xcode version: "16" - - name: macos-14-xcode-15.4-boost - os: macos-14 + - name: macos-15-xcode-16-boost + os: macos-15 compiler: xcode - version: "15.4" + version: "16" - - name: macos-14-xcode-15.4-geographiclib - os: macos-14 + - name: macos-15-xcode-16-geographiclib + os: macos-15 compiler: xcode - version: "15.4" + version: "16" exclude: - - name: macos-14-xcode-15.4-boost + - name: macos-15-xcode-16-boost build_type: Debug - - name: macos-14-xcode-15.4-geographiclib + - name: macos-15-xcode-16-geographiclib build_type: Debug steps: @@ -84,10 +79,8 @@ jobs: # (optional) Show outdated without failing the job brew outdated || true - - name: Install Dependencies + - name: Set up compilers run: | - brew upgrade cmake --quiet || brew install cmake --quiet - brew upgrade ninja --quiet || brew install ninja --quiet sudo xcode-select -switch /Applications/Xcode.app echo "CC=clang" >> $GITHUB_ENV echo "CXX=clang++" >> $GITHUB_ENV diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index 4c632c6bcc..21cb569503 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -4,13 +4,6 @@ name: Python CI # instead of under 'pull_request:'. Otherwise, the check is still required but # never runs, and a maintainer must bypass the check in order to merge the PR. on: - push: - branches: - - develop - paths-ignore: - - '**.md' - - '**.ipynb' - - 'myst.yml' pull_request: paths-ignore: - '**.md' @@ -24,7 +17,7 @@ concurrency: cancel-in-progress: true jobs: - # Check paths to changed files to see if any are non-ignored. + # Check paths of changed files to see if any are non-ignored. check-paths: runs-on: ubuntu-latest outputs: @@ -67,37 +60,37 @@ jobs: # See https://help.github.com/en/articles/workflow-syntax-for-github-actions. name: [ - ubuntu-22.04-gcc-9, + ubuntu-22.04-gcc-11, + ubuntu-22.04-gcc-11-noboost, ubuntu-22.04-clang-11, - macos-14-xcode-15.4, macos-15-xcode-16, - windows-2022-msbuild, + windows-2022-msvc, ] build_type: [Release] python_version: [3] include: - - name: ubuntu-22.04-gcc-9 + - name: ubuntu-22.04-gcc-11 os: ubuntu-22.04 compiler: gcc - version: "9" + version: "11" + + - name: ubuntu-22.04-gcc-11-noboost + os: ubuntu-22.04 + compiler: gcc + version: "11" - name: ubuntu-22.04-clang-11 os: ubuntu-22.04 compiler: clang version: "11" - - name: macos-14-xcode-15.4 - os: macos-14 - compiler: xcode - version: "15.4" - - name: macos-15-xcode-16 os: macos-15 compiler: xcode version: "16" - - name: windows-2022-msbuild + - name: windows-2022-msvc os: windows-2022 platform: 64 @@ -120,7 +113,11 @@ jobs: fi sudo apt-get -y update - sudo apt-get -y install cmake build-essential pkg-config libpython3-dev python3-numpy libboost-all-dev ninja-build + if [ "${{ matrix.name }}" = "ubuntu-22.04-gcc-11-noboost" ]; then + sudo apt-get -y install build-essential pkg-config libpython3-dev python3-numpy + else + sudo apt-get -y install build-essential pkg-config libpython3-dev python3-numpy libboost-all-dev + fi if [ "${{ matrix.compiler }}" = "gcc" ]; then sudo apt-get install -y g++-${{ matrix.version }} g++-${{ matrix.version }}-multilib @@ -136,21 +133,13 @@ jobs: if: runner.os == 'macOS' run: | brew update - # Avoid reinstalling cmake when a pinned/local tap version is preinstalled on the runner. - if brew list cmake >/dev/null 2>&1; then - echo "cmake already installed" - cmake --version - else - brew install cmake - fi - # Install ninja and boost only if missing - brew list ninja >/dev/null 2>&1 || brew install ninja + # Install boost only if missing brew list boost >/dev/null 2>&1 || brew install boost sudo xcode-select -switch /Applications/Xcode.app echo "CC=clang" >> $GITHUB_ENV echo "CXX=clang++" >> $GITHUB_ENV - - name: Setup msbuild (Windows) + - name: Setup MSVC (Windows) if: runner.os == 'Windows' uses: ilammy/msvc-dev-cmd@v1 with: @@ -168,14 +157,6 @@ jobs: with: python-version: ${{ matrix.python_version }} - - name: Install ninja (Windows) - if: runner.os == 'Windows' - shell: bash - run: | - choco install ninja - ninja --version - where ninja - - name: Install Boost (Windows) if: runner.os == 'Windows' shell: powershell @@ -227,10 +208,24 @@ jobs: - name: Build shell: bash + if: matrix.name != 'ubuntu-22.04-gcc-11-noboost' run: | bash .github/scripts/python.sh -b + - name: Build (No Boost Wrapper Check) + if: matrix.name == 'ubuntu-22.04-gcc-11-noboost' + shell: bash + run: | + bash .github/scripts/python.sh -b --no-boost + - name: Test shell: bash + if: matrix.name != 'ubuntu-22.04-gcc-11-noboost' run: | bash .github/scripts/python.sh -t + + - name: Test (No Boost Wrapper Check) + if: matrix.name == 'ubuntu-22.04-gcc-11-noboost' + shell: bash + run: | + bash .github/scripts/python.sh -t --no-boost diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 6a4408ce7a..381f4164ea 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -4,10 +4,10 @@ on: pull_request: paths-ignore: - '**.md' - - '**.ipynb' + - '**.ipynb' - 'myst.yml' push: - # Runs on pushes targeting the develop branch + # Run on pushes to develop branch to cache compilations branches: [develop] # Cancels any in-progress workflow runs for the same PR when a new push is made, @@ -55,7 +55,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup msbuild + - name: Setup MSVC uses: ilammy/msvc-dev-cmd@v1 with: arch: x${{ matrix.platform }} @@ -65,18 +65,6 @@ jobs: shell: cmd run: cl - - name: Install Dependencies - shell: powershell - run: | - iwr -useb get.scoop.sh -outfile 'install_scoop.ps1' - .\install_scoop.ps1 -RunAsAdmin - - scoop install cmake --global # So we don't get issues with CMP0074 policy - scoop install ninja --global - - # Scoop modifies the PATH so we make the modified PATH global. - echo "$env:PATH" >> $env:GITHUB_PATH - - name: Install Boost if: matrix.build_type == 'Release' shell: powershell @@ -104,12 +92,11 @@ jobs: - name: Configuration shell: bash run: | - export CMAKE_GENERATOR=Ninja # Convert Windows backslashes to forward slashes for CMake BOOST_ROOT_UNIX=$(echo "$BOOST_ROOT" | sed 's/\\/\//g') cmake -E remove_directory build if [ "${{ matrix.build_type }}" = "Release" ]; then - cmake -B build \ + cmake -B build -G Ninja \ -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ -DGTSAM_ALLOW_DEPRECATED_SINCE_V43=OFF \ -DGTSAM_USE_BOOST_FEATURES=ON \ @@ -121,7 +108,7 @@ jobs: -DCMAKE_C_COMPILER_LAUNCHER=sccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache else - cmake -B build \ + cmake -B build -G Ninja \ -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ -DGTSAM_ALLOW_DEPRECATED_SINCE_V43=OFF \ -DGTSAM_USE_BOOST_FEATURES=OFF \ diff --git a/.github/workflows/prod-cibw.yml b/.github/workflows/prod-cibw.yml index 48ac73fefd..1bfc99b747 100644 --- a/.github/workflows/prod-cibw.yml +++ b/.github/workflows/prod-cibw.yml @@ -1,7 +1,7 @@ # This workflow builds the Python wheels using cibuildwheel and uploads them to TestPyPI. # It can be triggered on push to the develop branch or manually via Github Actions. -name: Build Wheels for Release +name: Build Python Wheels for Release on: release: @@ -17,11 +17,6 @@ jobs: matrix: include: # Linux x86_64 - - os: ubuntu-latest - python_version: "3.10" - cibw_python_version: 310 - platform_id: manylinux_x86_64 - manylinux_image: manylinux2014 - os: ubuntu-latest python_version: "3.11" cibw_python_version: 311 @@ -37,13 +32,13 @@ jobs: cibw_python_version: 313 platform_id: manylinux_x86_64 manylinux_image: manylinux2014 + - os: ubuntu-latest + python_version: "3.14" + cibw_python_version: 314 + platform_id: manylinux_x86_64 + manylinux_image: manylinux2014 # Linux aarch64 - - os: ubuntu-24.04-arm - python_version: "3.10" - cibw_python_version: 310 - platform_id: manylinux_aarch64 - manylinux_image: manylinux2014 - os: ubuntu-24.04-arm python_version: "3.11" cibw_python_version: 311 @@ -59,42 +54,29 @@ jobs: cibw_python_version: 313 platform_id: manylinux_aarch64 manylinux_image: manylinux2014 - - # MacOS x86_64 - - os: macos-15-intel - python_version: "3.10" - cibw_python_version: 310 - platform_id: macosx_x86_64 - - os: macos-15-intel - python_version: "3.11" - cibw_python_version: 311 - platform_id: macosx_x86_64 - - os: macos-15-intel - python_version: "3.12" - cibw_python_version: 312 - platform_id: macosx_x86_64 - - os: macos-15-intel - python_version: "3.13" - cibw_python_version: 313 - platform_id: macosx_x86_64 + - os: ubuntu-24.04-arm + python_version: "3.14" + cibw_python_version: 314 + platform_id: manylinux_aarch64 + manylinux_image: manylinux2014 # MacOS arm64 - - os: macos-latest - python_version: "3.10" - cibw_python_version: 310 - platform_id: macosx_arm64 - os: macos-latest python_version: "3.11" cibw_python_version: 311 - platform_id: macosx_arm64 + platform_id: macosx_universal2 - os: macos-latest python_version: "3.12" cibw_python_version: 312 - platform_id: macosx_arm64 + platform_id: macosx_universal2 - os: macos-latest python_version: "3.13" cibw_python_version: 313 - platform_id: macosx_arm64 + platform_id: macosx_universal2 + - os: macos-latest + python_version: "3.14" + cibw_python_version: 314 + platform_id: macosx_universal2 steps: - name: Checkout @@ -112,9 +94,10 @@ jobs: run: | python3 -m pip install -r python/dev_requirements.txt if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get install -y wget libicu-dev python3-pip python3-setuptools libboost-all-dev ninja-build + sudo apt update + sudo apt-get install -y libicu-dev python3-pip python3-setuptools libboost-all-dev elif [ "$RUNNER_OS" == "macOS" ]; then - brew install boost ninja python-setuptools + brew install boost python-setuptools else echo "$RUNNER_OS not supported" exit 1 @@ -127,7 +110,7 @@ jobs: # the wheels to ensure platform compatibility. - name: Run CMake run: | - cmake . -B build -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=${{ matrix.python_version }} + cmake -B build -G Ninja -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=${{ matrix.python_version }} # If on macOS, we previously installed boost using homebrew for the first build. # We need to uninstall it before building the wheels with cibuildwheel, which will @@ -144,6 +127,7 @@ jobs: CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_image }} CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.manylinux_image }} CIBW_ARCHS: all + CIBW_ARCHS_MACOS: universal2 # Set the minimum required MacOS version for the wheels. MACOSX_DEPLOYMENT_TARGET: 10.15 @@ -161,6 +145,16 @@ jobs: run: bash .github/scripts/python_wheels/build_wheels.sh + - name: Test wheel + run: | + python3 -m pip install wheelhouse/*.whl + python3 -c "import platform; print(platform.machine()); import gtsam" + if [ "$RUNNER_OS" == "macOS" ]; then + arch -x86_64 python3 -m pip uninstall -y numpy + arch -x86_64 python3 -m pip install wheelhouse/*.whl + arch -x86_64 python3 -c "import platform; print(platform.machine()); import gtsam;" + fi + - name: Store artifacts uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/time-sfmbal-benchmark-runner.yml b/.github/workflows/time-sfmbal-benchmark-runner.yml new file mode 100644 index 0000000000..6b2ac3dd12 --- /dev/null +++ b/.github/workflows/time-sfmbal-benchmark-runner.yml @@ -0,0 +1,374 @@ +name: timeSFMBAL Benchmark Runner +run-name: timeSFMBAL worker ${{ inputs.group_id }} ${{ inputs.runner_id }} ${{ inputs.target_sha }} + +on: + workflow_dispatch: + inputs: + group_id: + description: Unique dispatch group ID used by orchestrator + required: true + type: string + runner_id: + description: Runner profile ID + required: true + type: string + os_name: + description: OS label used in cache key + required: true + type: string + arch: + description: Architecture label used in cache key + required: true + type: string + checkout_ref: + description: Git ref/SHA to checkout for benchmarking + required: true + type: string + target_sha: + description: Commit SHA used in cache key + required: true + type: string + +permissions: + contents: read + +jobs: + benchmark_linux_x64: + if: inputs.runner_id == 'linux-x64' + runs-on: ubuntu-latest + steps: + - name: Checkout target ref + uses: actions/checkout@v4 + with: + ref: ${{ inputs.checkout_ref }} + fetch-depth: 0 + + - name: Restore BAL dataset archive cache + id: dataset_cache_restore + uses: actions/cache/restore@v4 + with: + path: examples/Data/problem-135-90642-pre.txt.bz2 + key: bal-problem-135-90642-pre-txt-bz2-v1 + + - name: Download BAL dataset archive + if: steps.dataset_cache_restore.outputs.cache-hit != 'true' + run: | + curl --fail --location --show-error \ + --output examples/Data/problem-135-90642-pre.txt.bz2 \ + https://grail.cs.washington.edu/projects/bal/data/dubrovnik/problem-135-90642-pre.txt.bz2 + + - name: Save BAL dataset archive cache + if: steps.dataset_cache_restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: examples/Data/problem-135-90642-pre.txt.bz2 + key: bal-problem-135-90642-pre-txt-bz2-v1 + + - name: Extract BAL dataset + run: | + bzip2 -dc examples/Data/problem-135-90642-pre.txt.bz2 > examples/Data/dubrovnik-135-90642-pre.txt + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libtbb-dev + + # ── TBB=ON ── + - name: Configure (TBB=ON) + run: | + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-w" \ + -DGTSAM_BUILD_TESTS=OFF \ + -DGTSAM_BUILD_UNSTABLE=ON \ + -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ + -DGTSAM_BUILD_TIMING_ALWAYS=ON \ + -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ + -DGTSAM_WITH_TBB=ON \ + -DGTSAM_USE_BOOST_FEATURES=OFF \ + -DGTSAM_ENABLE_BOOST_SERIALIZATION=OFF + + - name: Build timeSFMBAL (TBB=ON) + run: cmake --build build --target timeSFMBAL -j2 + + - name: Run benchmark (TBB=ON) + run: ./build/timing/timeSFMBAL --benchmark-action-json benchmark-results-tbbON.json examples/Data/dubrovnik-135-90642-pre.txt + + - name: Prepare cache payload (TBB=ON) + shell: bash + run: | + set -euo pipefail + mkdir -p benchmark-cache + cp benchmark-results-tbbON.json "benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }}.json" + + - name: Save benchmark cache (TBB=ON) + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }} + + # ── TBB=OFF ── + - name: Clean build directory + run: rm -rf build + + - name: Configure (TBB=OFF) + run: | + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-w" \ + -DGTSAM_BUILD_TESTS=OFF \ + -DGTSAM_BUILD_UNSTABLE=ON \ + -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ + -DGTSAM_BUILD_TIMING_ALWAYS=ON \ + -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ + -DGTSAM_WITH_TBB=OFF \ + -DGTSAM_USE_BOOST_FEATURES=OFF \ + -DGTSAM_ENABLE_BOOST_SERIALIZATION=OFF + + - name: Build timeSFMBAL (TBB=OFF) + run: cmake --build build --target timeSFMBAL -j2 + + - name: Run benchmark (TBB=OFF) + run: ./build/timing/timeSFMBAL --benchmark-action-json benchmark-results-tbbOFF.json examples/Data/dubrovnik-135-90642-pre.txt + + - name: Prepare cache payload (TBB=OFF) + shell: bash + run: | + set -euo pipefail + mkdir -p benchmark-cache + cp benchmark-results-tbbOFF.json "benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }}.json" + + - name: Save benchmark cache (TBB=OFF) + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }} + + benchmark_linux_arm64: + if: inputs.runner_id == 'linux-arm64' + runs-on: ubuntu-24.04-arm + steps: + - name: Checkout target ref + uses: actions/checkout@v4 + with: + ref: ${{ inputs.checkout_ref }} + fetch-depth: 0 + + - name: Restore BAL dataset archive cache + id: dataset_cache_restore + uses: actions/cache/restore@v4 + with: + path: examples/Data/problem-135-90642-pre.txt.bz2 + key: bal-problem-135-90642-pre-txt-bz2-v1 + + - name: Download BAL dataset archive + if: steps.dataset_cache_restore.outputs.cache-hit != 'true' + run: | + curl --fail --location --show-error \ + --output examples/Data/problem-135-90642-pre.txt.bz2 \ + https://grail.cs.washington.edu/projects/bal/data/dubrovnik/problem-135-90642-pre.txt.bz2 + + - name: Save BAL dataset archive cache + if: steps.dataset_cache_restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: examples/Data/problem-135-90642-pre.txt.bz2 + key: bal-problem-135-90642-pre-txt-bz2-v1 + + - name: Extract BAL dataset + run: | + bzip2 -dc examples/Data/problem-135-90642-pre.txt.bz2 > examples/Data/dubrovnik-135-90642-pre.txt + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libtbb-dev + + # ── TBB=ON ── + - name: Configure (TBB=ON) + run: | + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-w" \ + -DGTSAM_BUILD_TESTS=OFF \ + -DGTSAM_BUILD_UNSTABLE=ON \ + -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ + -DGTSAM_BUILD_TIMING_ALWAYS=ON \ + -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ + -DGTSAM_WITH_TBB=ON \ + -DGTSAM_USE_BOOST_FEATURES=OFF \ + -DGTSAM_ENABLE_BOOST_SERIALIZATION=OFF + + - name: Build timeSFMBAL (TBB=ON) + run: cmake --build build --target timeSFMBAL -j2 + + - name: Run benchmark (TBB=ON) + run: ./build/timing/timeSFMBAL --benchmark-action-json benchmark-results-tbbON.json examples/Data/dubrovnik-135-90642-pre.txt + + - name: Prepare cache payload (TBB=ON) + shell: bash + run: | + set -euo pipefail + mkdir -p benchmark-cache + cp benchmark-results-tbbON.json "benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }}.json" + + - name: Save benchmark cache (TBB=ON) + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }} + + # ── TBB=OFF ── + - name: Clean build directory + run: rm -rf build + + - name: Configure (TBB=OFF) + run: | + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-w" \ + -DGTSAM_BUILD_TESTS=OFF \ + -DGTSAM_BUILD_UNSTABLE=ON \ + -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ + -DGTSAM_BUILD_TIMING_ALWAYS=ON \ + -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ + -DGTSAM_WITH_TBB=OFF \ + -DGTSAM_USE_BOOST_FEATURES=OFF \ + -DGTSAM_ENABLE_BOOST_SERIALIZATION=OFF + + - name: Build timeSFMBAL (TBB=OFF) + run: cmake --build build --target timeSFMBAL -j2 + + - name: Run benchmark (TBB=OFF) + run: ./build/timing/timeSFMBAL --benchmark-action-json benchmark-results-tbbOFF.json examples/Data/dubrovnik-135-90642-pre.txt + + - name: Prepare cache payload (TBB=OFF) + shell: bash + run: | + set -euo pipefail + mkdir -p benchmark-cache + cp benchmark-results-tbbOFF.json "benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }}.json" + + - name: Save benchmark cache (TBB=OFF) + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }} + + benchmark_macos_arm64: + if: inputs.runner_id == 'macos-arm64' + runs-on: macos-15 + steps: + - name: Checkout target ref + uses: actions/checkout@v4 + with: + ref: ${{ inputs.checkout_ref }} + fetch-depth: 0 + + - name: Restore BAL dataset archive cache + id: dataset_cache_restore + uses: actions/cache/restore@v4 + with: + path: examples/Data/problem-135-90642-pre.txt.bz2 + key: bal-problem-135-90642-pre-txt-bz2-v1 + + - name: Download BAL dataset archive + if: steps.dataset_cache_restore.outputs.cache-hit != 'true' + run: | + curl --fail --location --show-error \ + --output examples/Data/problem-135-90642-pre.txt.bz2 \ + https://grail.cs.washington.edu/projects/bal/data/dubrovnik/problem-135-90642-pre.txt.bz2 + + - name: Save BAL dataset archive cache + if: steps.dataset_cache_restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: examples/Data/problem-135-90642-pre.txt.bz2 + key: bal-problem-135-90642-pre-txt-bz2-v1 + + - name: Extract BAL dataset + run: | + bzip2 -dc examples/Data/problem-135-90642-pre.txt.bz2 > examples/Data/dubrovnik-135-90642-pre.txt + + - name: Install dependencies + run: brew install tbb || true + + # ── TBB=ON ── + - name: Configure (TBB=ON) + run: | + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-w" \ + -DGTSAM_BUILD_TESTS=OFF \ + -DGTSAM_BUILD_UNSTABLE=ON \ + -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ + -DGTSAM_BUILD_TIMING_ALWAYS=ON \ + -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ + -DGTSAM_WITH_TBB=ON \ + -DGTSAM_USE_BOOST_FEATURES=OFF \ + -DGTSAM_ENABLE_BOOST_SERIALIZATION=OFF + + - name: Build timeSFMBAL (TBB=ON) + run: cmake --build build --target timeSFMBAL -j2 + + - name: Run benchmark (TBB=ON) + run: ./build/timing/timeSFMBAL --benchmark-action-json benchmark-results-tbbON.json examples/Data/dubrovnik-135-90642-pre.txt + + - name: Prepare cache payload (TBB=ON) + shell: bash + run: | + set -euo pipefail + mkdir -p benchmark-cache + cp benchmark-results-tbbON.json "benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }}.json" + + - name: Save benchmark cache (TBB=ON) + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ inputs.os_name }}-${{ inputs.arch }}-tbbON-${{ inputs.target_sha }} + + # ── TBB=OFF ── + - name: Clean build directory + run: rm -rf build + + - name: Configure (TBB=OFF) + run: | + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-w" \ + -DGTSAM_BUILD_TESTS=OFF \ + -DGTSAM_BUILD_UNSTABLE=ON \ + -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ + -DGTSAM_BUILD_TIMING_ALWAYS=ON \ + -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ + -DGTSAM_WITH_TBB=OFF \ + -DGTSAM_USE_BOOST_FEATURES=OFF \ + -DGTSAM_ENABLE_BOOST_SERIALIZATION=OFF + + - name: Build timeSFMBAL (TBB=OFF) + run: cmake --build build --target timeSFMBAL -j2 + + - name: Run benchmark (TBB=OFF) + run: ./build/timing/timeSFMBAL --benchmark-action-json benchmark-results-tbbOFF.json examples/Data/dubrovnik-135-90642-pre.txt + + - name: Prepare cache payload (TBB=OFF) + shell: bash + run: | + set -euo pipefail + mkdir -p benchmark-cache + cp benchmark-results-tbbOFF.json "benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }}.json" + + - name: Save benchmark cache (TBB=OFF) + uses: actions/cache/save@v4 + continue-on-error: true + with: + path: benchmark-cache/${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ inputs.os_name }}-${{ inputs.arch }}-tbbOFF-${{ inputs.target_sha }} diff --git a/.github/workflows/time-sfmbal-benchmark-trigger.yml b/.github/workflows/time-sfmbal-benchmark-trigger.yml new file mode 100644 index 0000000000..0cf86e17a6 --- /dev/null +++ b/.github/workflows/time-sfmbal-benchmark-trigger.yml @@ -0,0 +1,37 @@ +name: Trigger timeSFMBAL Benchmark + +on: + issue_comment: + types: [created] + +permissions: + actions: write + contents: read + pull-requests: read + +jobs: + dispatch: + if: github.event.issue.pull_request != null + runs-on: ubuntu-latest + steps: + - name: Dispatch benchmark workflow for /bench + uses: actions/github-script@v7 + with: + script: | + const body = context.payload.comment.body.trim(); + if (body !== "/bench") { + core.info("Skipping dispatch: comment is not /bench."); + return; + } + + const prNumber = context.payload.issue.number; + await github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: "time-sfmbal-benchmark.yml", + ref: context.payload.repository.default_branch, + inputs: { + pr_number: String(prNumber), + }, + }); + core.info(`Dispatched time-sfmbal-benchmark.yml for PR #${prNumber}.`); diff --git a/.github/workflows/time-sfmbal-benchmark.yml b/.github/workflows/time-sfmbal-benchmark.yml new file mode 100644 index 0000000000..6c83e2b4a5 --- /dev/null +++ b/.github/workflows/time-sfmbal-benchmark.yml @@ -0,0 +1,417 @@ +name: timeSFMBAL Benchmark + +on: + pull_request: + types: [opened] + workflow_dispatch: + inputs: + pr_number: + description: PR number to benchmark + required: true + type: string + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.inputs.pr_number || github.run_id }} + cancel-in-progress: true + +permissions: + actions: write + contents: read + issues: write + pull-requests: write + +jobs: + context: + runs-on: ubuntu-latest + outputs: + pr_number: ${{ steps.resolve.outputs.pr_number }} + head_sha: ${{ steps.resolve.outputs.head_sha }} + base_sha: ${{ steps.resolve.outputs.base_sha }} + head_checkout_ref: ${{ steps.resolve.outputs.head_checkout_ref }} + should_comment: ${{ steps.resolve.outputs.should_comment }} + group_id: ${{ steps.resolve.outputs.group_id }} + steps: + - name: Resolve PR context + id: resolve + uses: actions/github-script@v7 + with: + script: | + const eventName = context.eventName; + let prNumber = ""; + let headSha = ""; + let baseSha = ""; + let headCheckoutRef = ""; + + if (eventName === "pull_request") { + const pr = context.payload.pull_request; + prNumber = String(pr.number); + headSha = pr.head.sha; + baseSha = pr.base.sha; + headCheckoutRef = `refs/pull/${pr.number}/head`; + } else if (eventName === "workflow_dispatch") { + prNumber = String((context.payload.inputs?.pr_number || "").trim()); + if (!prNumber) { + core.setFailed("workflow_dispatch requires pr_number."); + return; + } + const pr = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: Number(prNumber), + }); + headSha = pr.data.head.sha; + baseSha = pr.data.base.sha; + headCheckoutRef = `refs/pull/${pr.data.number}/head`; + } else { + core.setFailed(`Unsupported event: ${eventName}`); + return; + } + + const groupId = `${context.runId}-${Date.now()}`; + + core.setOutput("pr_number", prNumber); + core.setOutput("head_sha", headSha); + core.setOutput("base_sha", baseSha); + core.setOutput("head_checkout_ref", headCheckoutRef); + core.setOutput("should_comment", "true"); + core.setOutput("group_id", groupId); + + dispatch_and_wait: + needs: context + runs-on: ubuntu-latest + outputs: + run_statuses: ${{ steps.dispatch.outputs.run_statuses }} + steps: + - name: Dispatch benchmark runner workflows and wait + id: dispatch + uses: actions/github-script@v7 + env: + WORKFLOW_ID: time-sfmbal-benchmark-runner.yml + with: + script: | + const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + const workflowId = process.env.WORKFLOW_ID; + const groupId = "${{ needs.context.outputs.group_id }}"; + const headSha = "${{ needs.context.outputs.head_sha }}"; + const baseSha = "${{ needs.context.outputs.base_sha }}"; + const headCheckoutRef = "${{ needs.context.outputs.head_checkout_ref }}"; + + const runners = [ + { id: "linux-x64", os_name: "linux", arch: "x64" }, + { id: "linux-arm64", os_name: "linux", arch: "arm64" }, + { id: "macos-arm64", os_name: "macos", arch: "arm64" }, + ]; + + const specs = []; + for (const runner of runners) { + specs.push({ + role: "head", + sha: headSha, + checkout_ref: headCheckoutRef, + ...runner, + }); + specs.push({ + role: "base", + sha: baseSha, + checkout_ref: baseSha, + ...runner, + }); + } + + // Helper: check whether an exact cache key exists. + const cacheExists = async (key) => { + const resp = await github.rest.actions.getActionsCacheList({ + owner: context.repo.owner, + repo: context.repo.repo, + key, + }); + return resp.data.actions_caches.some((c) => c.key === key); + }; + + // Check cache and dispatch only uncached benchmark worker runs. + // Each worker produces both TBB=ON and TBB=OFF results, so we + // skip dispatch only when both cache entries are present. + for (const spec of specs) { + const keyON = `timeSFMBAL-benchmark-v4-${spec.os_name}-${spec.arch}-tbbON-${spec.sha}`; + const keyOFF = `timeSFMBAL-benchmark-v4-${spec.os_name}-${spec.arch}-tbbOFF-${spec.sha}`; + const [hitON, hitOFF] = await Promise.all([ + cacheExists(keyON), + cacheExists(keyOFF), + ]); + if (hitON && hitOFF) { + core.info( + `Cache hit for ${spec.role} ${spec.id} (both TBB variants), skipping dispatch.` + ); + spec.conclusion = "skipped_cached"; + continue; + } + + spec.group_token = `${groupId}-${spec.role}-${spec.id}`; + await github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: workflowId, + ref: context.payload.repository.default_branch, + inputs: { + group_id: spec.group_token, + runner_id: spec.id, + os_name: spec.os_name, + arch: spec.arch, + checkout_ref: spec.checkout_ref, + target_sha: spec.sha, + }, + }); + } + + const createdAfter = Date.now() - 2 * 60 * 1000; + const findMatchingRun = async (token) => { + let page = 1; + while (page <= 5) { + const resp = await github.rest.actions.listWorkflowRuns({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: workflowId, + event: "workflow_dispatch", + per_page: 100, + page, + }); + for (const run of resp.data.workflow_runs) { + const createdAt = Date.parse(run.created_at || ""); + if (!Number.isNaN(createdAt) && createdAt < createdAfter) { + continue; + } + const title = run.display_title || ""; + if (title.includes(token)) { + return run; + } + } + if (resp.data.workflow_runs.length < 100) break; + page += 1; + } + return null; + }; + + // Wait for each dispatched run to appear so we can track by run_id. + for (let attempt = 0; attempt < 80; attempt++) { + let allResolved = true; + for (const spec of specs) { + if (spec.run_id || spec.conclusion) continue; + const run = await findMatchingRun(spec.group_token); + if (run) { + spec.run_id = run.id; + spec.html_url = run.html_url; + } else { + allResolved = false; + } + } + if (allResolved) break; + await sleep(5000); + } + + // Wait for completion (success/failure) of all found runs. + for (let attempt = 0; attempt < 240; attempt++) { + let allCompleted = true; + for (const spec of specs) { + if (!spec.run_id || spec.conclusion) continue; + const run = await github.rest.actions.getWorkflowRun({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: spec.run_id, + }); + const status = run.data.status; + if (status === "completed") { + spec.conclusion = run.data.conclusion || "unknown"; + spec.html_url = run.data.html_url; + } else { + allCompleted = false; + } + } + if (allCompleted) break; + await sleep(15000); + } + + for (const spec of specs) { + if (!spec.run_id) spec.conclusion = spec.conclusion || "not_found"; + if (!spec.conclusion) spec.conclusion = "timed_out"; + } + + const summary = specs.map((spec) => ({ + role: spec.role, + runner_id: spec.id, + sha: spec.sha, + conclusion: spec.conclusion, + run_id: spec.run_id || null, + html_url: spec.html_url || null, + })); + + core.setOutput("run_statuses", JSON.stringify(summary)); + + collect: + needs: [context, dispatch_and_wait] + strategy: + fail-fast: false + matrix: + include: + - id: linux-x64-tbbON + os_name: linux + arch: x64 + tbb: "ON" + - id: linux-x64-tbbOFF + os_name: linux + arch: x64 + tbb: "OFF" + - id: linux-arm64-tbbON + os_name: linux + arch: arm64 + tbb: "ON" + - id: linux-arm64-tbbOFF + os_name: linux + arch: arm64 + tbb: "OFF" + - id: macos-arm64-tbbON + os_name: macos + arch: arm64 + tbb: "ON" + - id: macos-arm64-tbbOFF + os_name: macos + arch: arm64 + tbb: "OFF" + runs-on: ubuntu-latest + steps: + - name: Restore head benchmark cache + id: restore_head + uses: actions/cache/restore@v4 + with: + path: benchmark-cache/${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.head_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.head_sha }} + + - name: Restore base benchmark cache + id: restore_base + uses: actions/cache/restore@v4 + with: + path: benchmark-cache/${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.base_sha }}.json + key: timeSFMBAL-benchmark-v4-${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.base_sha }} + + - name: Stage collected files + shell: bash + run: | + set -euo pipefail + mkdir -p artifact + echo "head cache-hit: ${{ steps.restore_head.outputs.cache-hit }}" + echo "base cache-hit: ${{ steps.restore_base.outputs.cache-hit }}" + if [[ "${{ steps.restore_head.outputs.cache-hit }}" == "true" ]] && [[ -f "benchmark-cache/${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.head_sha }}.json" ]]; then + cp "benchmark-cache/${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.head_sha }}.json" "artifact/head-${{ matrix.id }}.json" + else + : > "artifact/head-miss-${{ matrix.id }}.txt" + fi + if [[ "${{ steps.restore_base.outputs.cache-hit }}" == "true" ]] && [[ -f "benchmark-cache/${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.base_sha }}.json" ]]; then + cp "benchmark-cache/${{ matrix.os_name }}-${{ matrix.arch }}-tbb${{ matrix.tbb }}-${{ needs.context.outputs.base_sha }}.json" "artifact/base-${{ matrix.id }}.json" + else + : > "artifact/base-miss-${{ matrix.id }}.txt" + fi + + - name: Upload collected files + uses: actions/upload-artifact@v4 + with: + name: time-sfmbal-collected-${{ matrix.id }} + path: artifact/* + if-no-files-found: error + + summarize: + needs: [context, dispatch_and_wait, collect] + runs-on: ubuntu-latest + if: always() + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download collected artifacts + uses: actions/download-artifact@v4 + with: + pattern: time-sfmbal-collected-* + path: collected + merge-multiple: true + + - name: Organize compare input + shell: bash + run: | + set -euo pipefail + mkdir -p collected/head collected/base + shopt -s nullglob + for file in collected/head-*.json; do + name="$(basename "${file}" .json)" + runner_id="${name#head-}" + cp "${file}" "collected/head/${runner_id}.json" + done + for file in collected/base-*.json; do + name="$(basename "${file}" .json)" + runner_id="${name#base-}" + cp "${file}" "collected/base/${runner_id}.json" + done + + - name: Generate markdown + run: | + python3 .github/scripts/compare_time_sfmbal_benchmarks.py \ + --head-dir collected/head \ + --base-dir collected/base \ + --head-sha "${{ needs.context.outputs.head_sha }}" \ + --base-sha "${{ needs.context.outputs.base_sha }}" \ + --output benchmark-comment.md + + - name: Append worker status details + shell: bash + run: | + set -euo pipefail + python3 - <<'PY' + import json + from pathlib import Path + + status_raw = """${{ needs.dispatch_and_wait.outputs.run_statuses }}""" + statuses = json.loads(status_raw) if status_raw.strip() else [] + lines = ["", "### Worker runs", "", "| Role | Runner | SHA | Conclusion |", "| --- | --- | --- | --- |"] + for item in statuses: + lines.append( + f"| {item.get('role','')} | {item.get('runner_id','')} | `{item.get('sha','')}` | {item.get('conclusion','')} |" + ) + + path = Path("benchmark-comment.md") + path.write_text(path.read_text(encoding="utf-8") + "\n".join(lines) + "\n", encoding="utf-8") + PY + cat benchmark-comment.md >> "$GITHUB_STEP_SUMMARY" + + - name: Post or update PR comment + if: needs.context.outputs.should_comment == 'true' + uses: actions/github-script@v7 + with: + script: | + const fs = require("fs"); + const marker = ""; + const body = fs.readFileSync("benchmark-comment.md", "utf8"); + const issue_number = Number("${{ needs.context.outputs.pr_number }}"); + + const comments = await github.paginate(github.rest.issues.listComments, { + owner: context.repo.owner, + repo: context.repo.repo, + issue_number, + per_page: 100, + }); + + const existing = comments.find( + (comment) => comment.user?.type === "Bot" && comment.body?.includes(marker) + ); + + if (existing) { + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: existing.id, + body, + }); + } else { + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number, + body, + }); + } diff --git a/.github/workflows/trigger-python.yml b/.github/workflows/trigger-python.yml deleted file mode 100644 index ab27d9deec..0000000000 --- a/.github/workflows/trigger-python.yml +++ /dev/null @@ -1,21 +0,0 @@ -# This triggers Python builds on `gtsam-manylinux-build` -name: Trigger Python Builds -on: - push: - branches: - - develop - paths-ignore: - - '**.md' - - '**.ipynb' - - 'myst.yml' -jobs: - triggerPython: - runs-on: ubuntu-latest - steps: - - name: Repository Dispatch - uses: ProfFan/repository-dispatch@master - with: - token: ${{ secrets.PYTHON_CI_REPO_ACCESS_TOKEN }} - repository: borglab/gtsam-manylinux-build - event-type: python-wrapper - client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}' diff --git a/.github/workflows/vcpkg.yml b/.github/workflows/vcpkg.yml index 66e5d3ba30..6a0fec6f34 100644 --- a/.github/workflows/vcpkg.yml +++ b/.github/workflows/vcpkg.yml @@ -15,6 +15,11 @@ jobs: build: name: ${{ matrix.os }} runs-on: ${{ matrix.os }} + env: + SCCACHE_GHA_ENABLED: 1 + # Some files take so long to compile that the sccache daemon times out, + # which is bad for stats tracking. Always keep sccache daemon alive. + SCCACHE_IDLE_TIMEOUT: 0 strategy: fail-fast: false matrix: @@ -23,33 +28,22 @@ jobs: triplet: x64-windows-release build_type: Release test_target: RUN_TESTS - binary_cache: C:\Users\runneradmin\AppData\Local\vcpkg\archives python: python - os: ubuntu-latest triplet: x64-linux-release build_type: Release test_target: test - binary_cache: /home/runner/.cache/vcpkg/archives python: python3 - os: macos-latest triplet: arm64-osx-release build_type: Release test_target: test - binary_cache: /Users/runner/.cache/vcpkg/archives python: python3 steps: - name: Checkout uses: actions/checkout@v4 - - name: Restore cache dependencies - id: cache-restore - uses: actions/cache/restore@v3 - with: - path: ${{ matrix.binary_cache }} - key: ${{ matrix.os }} - restore-keys: ${{ matrix.os }} - - - name: Setup msbuild + - name: Setup MSVC if: runner.os == 'Windows' uses: ilammy/msvc-dev-cmd@v1 with: @@ -57,17 +51,8 @@ jobs: toolset: 14.40 - name: Install sccache - if: runner.os == 'Windows' uses: mozilla-actions/sccache-action@v0.0.9 - - name: Use sccache - if: runner.os == 'Windows' - shell: bash - run: | - echo "SCCACHE_GHA_ENABLED=ON" >> "$GITHUB_ENV" - echo "CMAKE_C_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" - echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" - - name: cl version if: runner.os == 'Windows' shell: cmd @@ -85,86 +70,39 @@ jobs: run: | brew install autoconf autoconf-archive automake libtool - - name: Set vcpkg installtion root env - shell: bash - run: | - VCPKG_BASH_PATH=${VCPKG_INSTALLATION_ROOT//\\//} - echo "VCPKG_INSTALLATION_ROOT=$VCPKG_BASH_PATH" >> "$GITHUB_ENV" - - - name: "Install dependencies" - run: > - vcpkg x-set-installed --triplet ${{ matrix.triplet }} --host-triplet ${{ matrix.triplet }} - boost-assign - boost-bimap - boost-chrono - boost-date-time - boost-filesystem - boost-format - boost-graph - boost-math - boost-program-options - boost-regex - boost-serialization - boost-system - boost-thread - boost-timer - tbb - pybind11 - geographiclib - eigen3 - - - name: On Failure, upload vcpkg logs - if: failure() - uses: actions/upload-artifact@v4 + - name: Set up vcpkg + uses: lukka/run-vcpkg@v11.5 with: - name: logs_${{ matrix.os }}_${{ github.event.pull_request.head.sha }} - path: | - ${{ env.VCPKG_INSTALLATION_ROOT }}/buildtrees/**/*.log + vcpkgDirectory: ${{ github.workspace }}/vcpkg + env: + VCPKG_BINARY_SOURCES: default,rw - - name: copy files for hash - shell: bash - run: | - echo $VCPKG_INSTALLATION_ROOT - mkdir -p vcpkg-info - find $VCPKG_INSTALLATION_ROOT/installed/ -type f -name 'vcpkg_abi_info.txt' | \ - while read filepath; do - triplet=$(echo "$filepath" | awk -F/ '{print $(NF-3)}') - port=$(echo "$filepath" | awk -F/ '{print $(NF-1)}') - cp "$filepath" "vcpkg-info/${triplet}_${port}.txt" - done - - - name: Save cache dependencies - # Don't save if it's the exact same - if: steps.cache-restore.outputs.cache-matched-key != format('{0}-{1}', matrix.os, hashFiles('vcpkg-info/*')) - uses: actions/cache/save@v4 + - name: Restore cache dependencies + id: cache-restore + uses: actions/cache/restore@v3 with: - path: ${{ matrix.binary_cache }} - key: ${{ matrix.os }}-${{ hashFiles('vcpkg-info/*') }} - - - name: Install python packages - shell: bash - run: | - $VCPKG_INSTALLATION_ROOT/installed/${{ matrix.triplet }}/tools/python3/${{ matrix.python }} -m ensurepip --upgrade - $VCPKG_INSTALLATION_ROOT/installed/${{ matrix.triplet }}/tools/python3/${{ matrix.python }} -m pip install -r python/dev_requirements.txt + path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }} + key: ${{ matrix.os }}-${{ hashFiles('vcpkg.json') }} + restore-keys: ${{ matrix.os }}-${{ hashFiles('vcpkg.json') }} - name: Set Swap Space (Linux) if: runner.os == 'Linux' uses: pierotofy/set-swap-space@master with: - swap-size-gb: 6 + swap-size-gb: 7 - name: cmake config - if: success() shell: bash run: | - export CL=-openmp - - cmake . -B build -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE=$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake \ - -DVCPKG_INSTALLED_DIR=$VCPKG_INSTALLATION_ROOT/installed \ + cmake -B build -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ + -DVCPKG_INSTALLED_DIR=$GITHUB_WORKSPACE/vcpkg_installed \ -DVCPKG_TARGET_TRIPLET=${{ matrix.triplet }} \ -DVCPKG_HOST_TRIPLET=${{ matrix.triplet }} \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \ -DGTSAM_BUILD_EXAMPLES_ALWAYS=ON \ -DGTSAM_BUILD_WITH_PRECOMPILED_HEADERS=OFF \ -DGTSAM_ROT3_EXPMAP=ON \ @@ -178,18 +116,41 @@ jobs: -DGTSAM_USE_SYSTEM_PYBIND=ON \ -DGTSAM_ENABLE_GEOGRAPHICLIB=ON \ -DGTSAM_SUPPORT_NESTED_DISSECTION=ON \ + -DGTSAM_WITH_EIGEN_MKL=ON \ + -DGTSAM_WITH_EIGEN_MKL_OPENMP=ON \ -DCTEST_EXTRA_ARGS='${{ matrix.ctest_extra_flags }}' \ -DPYTEST_EXTRA_ARGS='${{ matrix.pytest_extra_flags }}' + - name: On Failure, upload vcpkg logs + if: failure() + uses: actions/upload-artifact@v4 + with: + name: logs_${{ matrix.os }}_${{ github.event.pull_request.head.sha }} + path: vcpkg/buildtrees/**/*.log + + - name: Cache dependencies + # Don't save if it's the exact same + if: steps.cache-restore.outputs.cache-matched-key != format('{0}-{1}-{2}', matrix.os, hashFiles('vcpkg.json'), hashFiles('vcpkg_installed/**/vcpkg_abi_info.txt')) + uses: actions/cache/save@v4 + with: + path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }} + key: ${{ matrix.os }}-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('vcpkg_installed/**/vcpkg_abi_info.txt') }} + + - name: Install python packages + shell: bash + run: | + vcpkg_installed/${{ matrix.triplet }}/tools/python3/${{ matrix.python }} -m ensurepip --upgrade + vcpkg_installed/${{ matrix.triplet }}/tools/python3/${{ matrix.python }} -m pip install -r python/dev_requirements.txt + - name: cmake build shell: bash run: | - cmake --build build --config ${{ matrix.build_type }} + cmake --build build - name: Run Python tests shell: bash run: | - export PATH="$PATH:$VCPKG_INSTALLATION_ROOT/installed/${{ matrix.triplet }}/bin" + export PATH="$PATH:$GITHUB_WORKSPACE/vcpkg_installed/${{ matrix.triplet }}/bin" cmake --build build --target python-install cmake --build build --target python-test cmake --build build --target python-test-unstable @@ -197,4 +158,4 @@ jobs: - name: Run tests shell: bash run: | - cmake --build build --config ${{ matrix.build_type }} --target check + cmake --build build --target check diff --git a/.gitignore b/.gitignore index 4ff32064fe..0e3e501973 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ .vscode .env /.vs/ +vcpkg_installed/ /CMakeSettings.json # for QtCreator: CMakeLists.txt.user* @@ -30,3 +31,5 @@ doc/#*.lyx# /cmake-build-debug/ .venv/ conductor/ +.ccache/ +gtsam_unstable/timing/data/ diff --git a/INSTALL.md b/INSTALL.md index 4a3b44368c..f5cc93e673 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -239,6 +239,10 @@ Here are some tips to get the best possible performance out of GTSAM. optimization by 30-50%. Please note that this may not be true for very small problems where the overhead of dispatching work to multiple threads outweighs the benefit. We recommend that you benchmark your problem with/without TBB. + Note: TBB's parallel tree traversal can significantly increase memory usage + (e.g., from ~4GB to ~12GB in tested scenarios). If memory is a concern, you + can set `-DGTSAM_TBB_BOUNDED_MEMORY_GROWTH=ON` to disable parallel tree + traversal while keeping other TBB benefits. 3. Use `GTSAM_BUILD_WITH_MARCH_NATIVE`. A performance gain of 25-30% can be expected on modern processors. Note that this affects the portability of your executable. It may not run when copied to another system with older/different @@ -285,58 +289,50 @@ or when importing GTSAM using the python wrapper. -## Compile gtsam with vcpkg. (For linux/wsl) -Install python dependencies + ninja + build essential in linux: -``` +## Compile gtsam with vcpkg + +vcpkg is an easy, cross-platform way to install all the dependencies gtsam uses, including Boost, MKL, and pybind11. It will calculate the proper [triplet for your system](https://learn.microsoft.com/en-us/vcpkg/concepts/triplets), like x64-linux, x64-windows, or arm64-osx, and install dependencies accordingly. That triplet will be referred to as `` in this guide. + +To get started, install some base dependencies. + +On Linux, install Python dependencies + ninja + build-essential: + +```bash sudo apt update sudo apt-get install autoconf automake autoconf-archive ninja-build build-essential -y ``` -On your home dir near gtsam dir: -Setup vcpkg +On Windows, see [the Prerequisites section earlier](#Prerequisites). + +On Mac, install Python dependencies + ninja: + ```bash -git clone https://github.com/microsoft/vcpkg -cd vcpkg -./bootstrap-vcpkg.sh +brew install autoconf autoconf-archive automake libtool ``` -vcpkg install dependencies -on vcpkg dir: +Go to your gtsam folder `cd gtsam`, and set up vcpkg: + ```bash -./vcpkg x-set-installed \ - boost-assign \ - boost-bimap \ - boost-chrono \ - boost-date-time \ - boost-filesystem \ - boost-format \ - boost-graph \ - boost-math \ - boost-program-options \ - boost-regex \ - boost-serialization \ - boost-system \ - boost-thread \ - boost-timer \ - tbb \ - pybind11 +git clone https://github.com/microsoft/vcpkg +./vcpkg/bootstrap-vcpkg.sh # or ./vcpkg/bootstrap-vcpkg.bat on Windows ``` -Setup python dependencies -Go to your gtsam folder `cd gtsam`: +Setup vcpkg and Python dependencies + ```bash -../vcpkg/installed/x64-linux/tools/python3/python3 -m ensurepip --upgrade -../vcpkg/installed/x64-linux/tools/python3/python3 -m pip install -r python/dev_requirements.txt +./vcpkg/vcpkg install +# The Python executable is called python, not python3 on Windows +./vcpkg_installed//tools/python3/python3 -m ensurepip --upgrade +./vcpkg_installed//tools/python3/python3 -m pip install -r python/dev_requirements.txt ``` -Cmake config: -In gtsam folder +Configure CMake build: ```bash -cmake . -B build -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE=../scripts/buildsystems/vcpkg.cmake \ - -DVCPKG_INSTALLED_DIR=../installed \ - -DVCPKG_TARGET_TRIPLET=x64-linux \ - -DVCPKG_HOST_TRIPLET=x64-linux \ +cmake -B build -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DVCPKG_INSTALLED_DIR=vcpkg_installed \ + -DVCPKG_TARGET_TRIPLET= \ + -DVCPKG_HOST_TRIPLET= \ -DCMAKE_BUILD_TYPE=Release \ -DGTSAM_BUILD_EXAMPLES_ALWAYS=ON \ -DGTSAM_ROT3_EXPMAP=ON \ @@ -351,22 +347,32 @@ cmake . -B build -G Ninja \ -DGTSAM_SUPPORT_NESTED_DISSECTION=ON ``` -cmake compile: -In gtsam folder: +Build gtsam: + ```bash cmake --build build ``` -Run python tests: +Add vcpkg libraries to PATH: + +Linux/Mac: +```bash +export PATH="$PATH:/path/to/gtsam/vcpkg_installed//bin" ``` -VCPKG_INSTALLATION_ROOT= -export PATH="$PATH:$VCPKG_INSTALLATION_ROOT/installed/x64-linux/bin" + +Windows (PowerShell): +```pwsh +$env:Path = "$env:Path;\path\to\gtsam\vcpkg_installed\\bin" +``` + +Run Python tests: +```bash cmake --build build --target python-install cmake --build build --target python-test cmake --build build --target python-test-unstable ``` -Run gtsam tests: +Run gtsam tests: ```bash cmake --build build --target check ``` \ No newline at end of file diff --git a/README.md b/README.md index 7b410c176c..95e76d8e94 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ **Important Note** -**As of January 2023, the `develop` branch is officially in "Pre 4.3" mode. We envision several API-breaking changes as we switch to C++17 and away from boost.** +**The `develop` branch is officially in "Pre 4.3" mode. We envision several API-breaking changes as we switch to C++17 and away from boost.** In addition, features deprecated in 4.2 will be removed. Please use the stable [4.2 release](https://github.com/borglab/gtsam/releases/tag/4.2) if you need those features. However, most are easily converted and can be tracked down (in 4.2) by disabling the cmake flag `GTSAM_ALLOW_DEPRECATED_SINCE_V42`. @@ -151,7 +151,7 @@ Read about important [GTSAM-Concepts](doc/GTSAM-Concepts.md) here. A primer on G which support (superfast) automatic differentiation, can be found on the [GTSAM wiki on BitBucket](https://bitbucket.org/gtborg/gtsam/wiki/Home). -See the [`INSTALL`](INSTALL.md) file for more detailed installation instructions. +See the [`INSTALL`](INSTALL.md) file for more detailed installation instructions. Our CI/CD process is detailed in [workflows.md](doc/workflows.md). GTSAM is open source under the BSD license, see the [`LICENSE`](LICENSE) and [`LICENSE.BSD`](LICENSE.BSD) files. diff --git a/THANKS.md b/THANKS.md index 7db7daaf33..5a5be429cb 100644 --- a/THANKS.md +++ b/THANKS.md @@ -44,6 +44,8 @@ at LAAS-CNRS * Ellon Paiva +* Sammy Guo + Many thanks for your hard work!!!! Frank Dellaert diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake index 15a15f3ed1..f791dd2f75 100644 --- a/cmake/FindMKL.cmake +++ b/cmake/FindMKL.cmake @@ -21,6 +21,18 @@ # OPEN - Open MPI library # SGI - SGI MPT Library +# vcpkg +if(DEFINED VCPKG_INSTALLED_DIR) + find_package(MKL CONFIG) + if(MKL_FOUND) + add_library(mkl-gtsam-if INTERFACE) + target_link_libraries(mkl-gtsam-if INTERFACE MKL::MKL) + set(MKL_LIBRARIES mkl-gtsam-if) + list(APPEND GTSAM_EXPORTED_TARGETS mkl-gtsam-if) + install(TARGETS mkl-gtsam-if EXPORT GTSAM-exports ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() +else() + # linux IF(UNIX AND NOT APPLE) IF(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64") @@ -267,4 +279,6 @@ find_package_handle_standard_args(MKL DEFAULT_MSG MKL_INCLUDE_DIR MKL_LIBRARIES) # LINK_DIRECTORIES(${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR}) # hack #endif() +endif() # end of vcpkg + MARK_AS_ADVANCED(MKL_INCLUDE_DIR MKL_LIBRARIES) diff --git a/cmake/HandleBoost.cmake b/cmake/HandleBoost.cmake index cfbb55b390..1650407353 100644 --- a/cmake/HandleBoost.cmake +++ b/cmake/HandleBoost.cmake @@ -39,11 +39,11 @@ endif() ################################################################################ # Set minimum required Boost version and components. -# NOTE: "system" is intentionally omitted. It is a transitive dependency of other -# components (like filesystem) and will be found automatically. Explicitly -# requesting it can cause issues with modern header-only versions of Boost. +# Note: Keep this in sync with vcpkg.json. +# optional, program_options, random, range are all used in tests/examples/Python, but are not library dependencies. timer/chrono is used conditionally. +# concept_check, fusion, move, phoenix, pool, smart_ptr, spirit, tokenizer, type_traits, optional, range are header only and are not components. set(BOOST_FIND_MINIMUM_VERSION 1.70) -set(BOOST_FIND_MINIMUM_COMPONENTS serialization filesystem thread program_options date_time timer chrono regex) +set(BOOST_FIND_MINIMUM_COMPONENTS graph serialization program_options random timer chrono) # Find the Boost package. On systems with modern installations (vcpkg, Homebrew), # this will use CMake's "Config mode". With manual installations (especially on @@ -52,8 +52,9 @@ find_package(Boost ${BOOST_FIND_MINIMUM_VERSION} REQUIRED COMPONENTS ${BOOST_FIND_MINIMUM_COMPONENTS} ) +set(GTSAM_BOOST_LIBRARIES Boost::graph Boost::serialization) # Verify that the required Boost component targets were successfully found and imported. -foreach(_t IN ITEMS Boost::serialization Boost::filesystem Boost::thread Boost::date_time) +foreach(_t IN ITEMS ${GTSAM_BOOST_LIBRARIES}) if(NOT TARGET ${_t}) message(FATAL_ERROR "Missing required Boost component target: ${_t}. Please install/upgrade Boost or set BOOST_ROOT/Boost_DIR correctly.") endif() @@ -61,14 +62,6 @@ endforeach() option(GTSAM_DISABLE_NEW_TIMERS "Disables using Boost.chrono for timing" OFF) -set(GTSAM_BOOST_LIBRARIES - Boost::serialization - Boost::filesystem - Boost::thread - Boost::date_time - Boost::regex -) - if(GTSAM_DISABLE_NEW_TIMERS) message("WARNING: GTSAM timing instrumentation manually disabled") list_append_cache(GTSAM_COMPILE_DEFINITIONS_PUBLIC DGTSAM_DISABLE_NEW_TIMERS) diff --git a/cmake/HandleGeneralOptions.cmake b/cmake/HandleGeneralOptions.cmake index c650c08578..dc7d550c81 100644 --- a/cmake/HandleGeneralOptions.cmake +++ b/cmake/HandleGeneralOptions.cmake @@ -42,6 +42,7 @@ option(GTSAM_HYBRID_TIMING "Enable the timing of hybrid factor option(GTSAM_ENABLE_CONSISTENCY_CHECKS "Enable/Disable expensive consistency checks" OFF) option(GTSAM_ENABLE_MEMORY_SANITIZER "Enable/Disable memory sanitizer" OFF) option(GTSAM_WITH_TBB "Use Intel Threaded Building Blocks (TBB) if available" ON) +option(GTSAM_TBB_BOUNDED_MEMORY_GROWTH "Avoid large increase in memory usage due to parallel tree traversal" OFF) option(GTSAM_WITH_EIGEN_MKL "Eigen will use Intel MKL if available" OFF) option(GTSAM_WITH_EIGEN_MKL_OPENMP "Eigen, when using Intel MKL, will also use OpenMP for multithreading if available" OFF) option(GTSAM_THROW_CHEIRALITY_EXCEPTION "Throw exception when a triangulated point is behind a camera" ON) diff --git a/cmake/HandleGlobalBuildFlags.cmake b/cmake/HandleGlobalBuildFlags.cmake index 51a0578f70..e554199056 100644 --- a/cmake/HandleGlobalBuildFlags.cmake +++ b/cmake/HandleGlobalBuildFlags.cmake @@ -19,8 +19,8 @@ if(MSVC AND GTSAM_SHARED_LIB) endif() if (APPLE AND GTSAM_SHARED_LIB) - # Set the default install directory on macOS - set(CMAKE_INSTALL_NAME_DIR "lib") + # Setting to @rpath so that dependent executables can find the GTSAM dylib in a portable manner + set(CMAKE_INSTALL_NAME_DIR "@rpath") endif() ############################################################################### diff --git a/cmake/HandleMKL.cmake b/cmake/HandleMKL.cmake index 5d7ec365b2..07ac53e4ff 100644 --- a/cmake/HandleMKL.cmake +++ b/cmake/HandleMKL.cmake @@ -15,3 +15,28 @@ else() set(GTSAM_USE_EIGEN_MKL 0) set(EIGEN_USE_MKL_ALL 0) endif() + +if(WIN32 AND GTSAM_USE_EIGEN_MKL AND DEFINED VCPKG_INSTALLED_DIR) + get_target_property(MKL_TARGETS "MKL::MKL" INTERFACE_LINK_LIBRARIES) + set(RUNTIME_DLL_DIRS "") + foreach(MKL_TARGET ${MKL_TARGETS}) + if(TARGET ${MKL_TARGET}) + get_target_property(MKL_DLL "${MKL_TARGET}" IMPORTED_LOCATION) + if(MKL_DLL) + cmake_path(GET MKL_DLL PARENT_PATH MKL_DLL_DIR) + list (APPEND RUNTIME_DLL_DIRS "${MKL_DLL_DIR}/mkl_*.dll") + endif() + endif() + endforeach() + list(REMOVE_DUPLICATES RUNTIME_DLL_DIRS) + file(GLOB MKL_DLLS CONFIGURE_DEPENDS ${RUNTIME_DLL_DIRS}) + list(REMOVE_DUPLICATES MKL_DLLS) + add_custom_target(copy_mkl_dlls + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${MKL_DLLS}" + "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + COMMAND_EXPAND_LISTS + VERBATIM + ) + add_dependencies(check copy_mkl_dlls) +endif() diff --git a/cmake/HandlePrintConfiguration.cmake b/cmake/HandlePrintConfiguration.cmake index 56f7b4530e..ed08278a73 100644 --- a/cmake/HandlePrintConfiguration.cmake +++ b/cmake/HandlePrintConfiguration.cmake @@ -7,8 +7,8 @@ print_config("CMAKE_CXX_COMPILER_VERSION" "${CMAKE_CXX_COMPILER_VERSION}") print_config("CMake version" "${CMAKE_VERSION}") print_config("CMake generator" "${CMAKE_GENERATOR}") print_config("CMake build tool" "${CMAKE_BUILD_TOOL}") -message(STATUS "Build flags ") -print_enabled_config(${GTSAM_BUILD_TESTS} "Build Tests") +message(STATUS "Build Flags ") +print_enabled_config(${GTSAM_BUILD_TESTS} "Build tests") print_enabled_config(${GTSAM_BUILD_EXAMPLES_ALWAYS} "Build examples with 'make all'") print_enabled_config(${GTSAM_BUILD_TIMING_ALWAYS} "Build timing scripts with 'make all'") if (DOXYGEN_FOUND) @@ -84,11 +84,11 @@ if(NOT MSVC AND NOT XCODE_VERSION) endif() endif() -message(STATUS "Packaging flags") +message(STATUS "Packaging Flags") print_config("CPack Source Generator" "${CPACK_SOURCE_GENERATOR}") print_config("CPack Generator" "${CPACK_GENERATOR}") -message(STATUS "GTSAM flags ") +message(STATUS "GTSAM Flags ") print_enabled_config(${GTSAM_USE_QUATERNIONS} "Quaternions as default Rot3 ") print_enabled_config(${GTSAM_ENABLE_CONSISTENCY_CHECKS} "Runtime consistency checking ") print_enabled_config(${GTSAM_ENABLE_MEMORY_SANITIZER} "Build with Memory Sanitizer ") diff --git a/cmake/HandleTBB.cmake b/cmake/HandleTBB.cmake index 393aeb3456..e7fadb1765 100644 --- a/cmake/HandleTBB.cmake +++ b/cmake/HandleTBB.cmake @@ -6,6 +6,9 @@ if (GTSAM_WITH_TBB) # Set up variables if we're using TBB if(TBB_FOUND) set(GTSAM_USE_TBB 1) # This will go into config.h + if (GTSAM_TBB_BOUNDED_MEMORY_GROWTH) + set(GTSAM_TBB_BOUNDED_MEMORY_GROWTH_FLAG 1) + endif() if ((${TBB_VERSION_MAJOR} GREATER 2020) OR (${TBB_VERSION_MAJOR} EQUAL 2020)) set(TBB_GREATER_EQUAL_2020 1) diff --git a/containers/README.md b/containers/README.md index 2d4a7c27a2..406065cc05 100644 --- a/containers/README.md +++ b/containers/README.md @@ -1,127 +1,131 @@ -# GTSAM Containers +# GTSAM Docker Images -- container files to build images -- script to push images to a registry -- instructions to pull images and run containers +The official Docker images for GTSAM are maintained in the [borglab/docker-images](https://github.com/borglab/docker-images) repository. -## Dependencies +## Available Images -- a container engine such as [`Docker Engine`](https://docs.docker.com/engine/install/) +The following images are available on Docker Hub, primarily under the `borglab` namespace: -## Pull from Docker Hub +- **[borglab/gtsam](https://hub.docker.com/r/borglab/gtsam)**: + A pre-compiled environment containing the latest `develop` branch of GTSAM. Useful for quick testing or as a base for downstream applications. + - *Source:* [`docker-images/gtsam`](https://github.com/borglab/docker-images/tree/main/gtsam) -Various GTSAM image configurations are available at [`docker.io/borglab/gtsam`](https://hub.docker.com/r/borglab/gtsam). Determine which [tag](https://hub.docker.com/r/borglab/gtsam/tags) you want and pull the image. +- **[borglab/gtsam-manylinux](https://hub.docker.com/r/borglab/gtsam-manylinux)**: + An environment based on `manylinux2014` tailored for building Python wheels for GTSAM. + - *Source:* [`docker-images/gtsam-manylinux`](https://github.com/borglab/docker-images/tree/main/gtsam-manylinux) -Example for pulling an image with GTSAM compiled with TBB and Python support on top of a base Ubuntu 22.04 image. +- **[borglab/ubuntu-boost-tbb](https://hub.docker.com/r/borglab/ubuntu-boost-tbb)**: + Base image (Ubuntu 24.04) with Boost and TBB libraries pre-installed. + - *Source:* [`docker-images/ubuntu-boost-tbb`](https://github.com/borglab/docker-images/tree/main/ubuntu-boost-tbb) + +- **CI Images**: + Various images used for Continuous Integration, covering different Ubuntu versions (22.04, 24.04) and compilers (Clang, GCC). + - *Source:* [`docker-images/gtsam-ci`](https://github.com/borglab/docker-images/tree/main/gtsam-ci) + +## Usage + +### Running GTSAM + +To start an interactive shell in a container with GTSAM pre-installed: ```bash -docker pull docker.io/borglab/gtsam:4.2.0-tbb-ON-python-ON_22.04 +docker run -it borglab/gtsam:latest ``` -[`docker.io/borglab/gtsam-vnc`](https://hub.docker.com/r/borglab/gtsam-vnc) is also provided as an image with GTSAM that will run a VNC server to connect to. +### Using the Python Wrapper -## Using the images +The `borglab/gtsam` image typically includes Python bindings. To use them: -### Just GTSAM +1. Start the container: + ```bash + docker run -it borglab/gtsam:latest + ``` +2. Launch Python: + ```bash + python3 + ``` +3. Import GTSAM: + ```python + import gtsam + print(gtsam.Pose3()) + ``` -To start the image, execute +## Building Images -```bash -docker run -it borglab/gtsam:4.2.0-tbb-ON-python-OFF_22.04 -``` +To build these images locally or contribute changes, please refer to the **[borglab/docker-images](https://github.com/borglab/docker-images)** repository. It contains the Dockerfiles and build scripts for all the images listed above. -after you will find yourself in a bash shell. +### Legacy Configuration -### GTSAM with Python wrapper -To use GTSAM via the python wrapper, similarly execute -```bash -docker run -it borglab/gtsam:4.2.0-tbb-ON-python-ON_22.04 -``` +The following files in this directory are legacy artifacts and are **no longer actively maintained**: -and then launch `python3`: -```bash -python3 ->>> import gtsam ->>> gtsam.Pose2(1,2,3) -(1, 2, 3) -``` -### GTSAM with Python wrapper and VNC +- **`Containerfile`**: Build instructions for a standalone GTSAM image (cloning from git and building from source). -First, start the image, which will run a VNC server on port 5900: +- **`compose.yaml`**: A Docker Compose wrapper used for configurable builds (via `.env` variables like `GTSAM_WITH_TBB`, `GTSAM_BUILD_PYTHON`) and standardized image tagging. -```bash -docker run -p 5900:5900 borglab/gtsam-vnc:4.2.0-tbb-ON-python-ON_22.04 -``` +- **`hub_push.sh`**: A utility script to iterate through configuration matrices and push multiple image variants to Docker Hub. -Then open a remote VNC X client, for example: -#### Linux -```bash -sudo apt-get install tigervnc-viewer -xtigervncviewer :5900 -``` +For official builds and the most up-to-date configurations, please refer to the **[borglab/docker-images](https://github.com/borglab/docker-images)** repository. -#### Mac -The Finder's "Connect to Server..." with `vnc://127.0.0.1` does not work, for some reason. Using the free [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/), enter `0.0.0.0:5900` as the server. -## Build images locally +> **TODO**: Consider migrating the configurable build and matrix-pushing functionality from these legacy files into the `docker-images` repository to support more flexible local builds. -### Build Dependencies -- a [Compose Spec](https://compose-spec.io/) implementation such as [docker-compose](https://docs.docker.com/compose/install/) -### `gtsam` image +## VNC Support (`gtsam-vnc`) -#### `.env` file -- `GTSAM_GIT_TAG`: [git tag from the gtsam repo](https://github.com/borglab/gtsam/tags) -- `UBUNTU_TAG`: image tag provided by [ubuntu](https://hub.docker.com/_/ubuntu/tags) to base the image off of -- `GTSAM_WITH_TBB`: to build GTSAM with TBB, set to `ON` -- `GTSAM_BUILD_PYTHON`: to build python bindings, set to `ON` -- `CORES`: number of cores to compile with -#### Build `gtsam` image +The **gtsam-vnc** image configuration is available locally in the [`gtsam-vnc`](./gtsam-vnc) subdirectory. This image extends the official `borglab/gtsam` image by adding a VNC server, allowing you to view GUI applications (like Matplotlib plots) running inside the container. -```bash -docker compose build -``` -### `gtsam-vnc` image -#### `gtsam-vnc/.env` file +### Building and Running VNC Image -- `GTSAM_TAG`: image tag provided by [gtsam](https://hub.docker.com/r/borglab/gtsam/tags) -#### Build `gtsam-vnc` image -```bash -docker compose --file gtsam-vnc/compose.yaml build -``` +1. **Navigate to the directory:** -## Push to Docker Hub + ```bash -Make sure you are logged in via: `docker login docker.io`. + cd gtsam-vnc -### `gtsam` images + ``` -Specify the variables described in the `.env` file in the `hub_push.sh` script. -To push images to Docker Hub, run as follows: -```bash -./hub_push.sh -``` -### `gtsam-vnc` images +2. **Build the image:** -Specify the variables described in the `gtsam-vnc/.env` file in the `gtsam-vnc/hub_push.sh` script. -To push images to Docker Hub, run as follows: + You can build it using Docker Compose or directly with Docker. -```bash -./gtsam-vnc/hub_push.sh -``` + ```bash + + # Example using docker build + + docker build -t gtsam-vnc . + + ``` + + + +3. **Run with Port Forwarding:** + + Map port 5900 to access the VNC server. + + ```bash + + docker run -p 5900:5900 gtsam-vnc + + ``` + + + +4. **Connect:** + + Use a VNC client to connect to `localhost:5900`. diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 3461127ae1..bba6056e11 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -814,7 +814,7 @@ CITE_BIB_FILES = # messages are off. # The default value is: NO. -QUIET = NO +QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES diff --git a/doc/GTSAM-Concepts.md b/doc/GTSAM-Concepts.md index bfc6d88ce8..4541d616df 100644 --- a/doc/GTSAM-Concepts.md +++ b/doc/GTSAM-Concepts.md @@ -28,7 +28,7 @@ The core operations for a manifold are: These operations must be inverses of each other: `p.retract(p.localCoordinates(q))` should be equal to `q`. -For a detailed guide on creating a new `Manifold` type, see {doc}`../gtsam/base/doc/Manifold.md`. +For a detailed guide on creating a new `Manifold` type, see [Manifold](../gtsam/base/doc/Manifold.md). ## Group @@ -38,7 +38,7 @@ Key operations are `compose`, `inverse`, and `between`. GTSAM distinguishes betw * **Multiplicative Groups**: Use `operator*` (e.g., rotations, poses). * **Additive Groups**: Use `operator+` (e.g., vectors). -For a detailed guide on creating a `Group` type, see {doc}`../gtsam/base/doc/Group.md`. +For a detailed guide on creating a `Group` type, see [Group](../gtsam/base/doc/Group.md). ## Lie Group @@ -48,14 +48,14 @@ Lie groups have a special identity element, which allows for defining global `Ex Most Lie groups in GTSAM are also **Matrix Lie Groups**, which have an underlying matrix representation. These require additional Lie algebra operations like `Hat` and `Vee`. -* For a guide on creating a `LieGroup`, see {doc}`../gtsam/base/doc/LieGroup.md`. -* For matrix Lie groups, also see {doc}`../gtsam/base/doc/MatrixLieGroup.md`. +* For a guide on creating a `LieGroup`, see [LieGroup](../gtsam/base/doc/LieGroup.md). +* For matrix Lie groups, also see [MatrixLieGroup](../gtsam/base/doc/MatrixLieGroup.md). ## Vector Space A `VectorSpace` is a specialized `AdditiveGroup` that also supports scalar multiplication, a dot product, and the calculation of a norm. This concept should be satisfied by types that behave like mathematical vectors. In GTSAM, vector spaces are the foundation for tangent spaces on manifolds. -For a detailed guide, see {doc}`../gtsam/base/doc/VectorSpace.md`. +For a detailed guide, see [VectorSpace](../gtsam/base/doc/VectorSpace.md). ## Overview @@ -141,4 +141,4 @@ When a Lie group acts on a space, we have two derivatives to care about: * `gtsam::manifold::traits::act(g,p,Hg,Hp)`, if the space acted upon is a continuous differentiable manifold. -An example is a *similarity transform* in 3D, which can act on 3D space. The derivative in `p`, `Hp`, depends on the group element `g`. The derivative in `g`, `Hg`, is in general more complex. \ No newline at end of file +An example is a *similarity transform* in 3D, which can act on 3D space. The derivative in `p`, `Hp`, depends on the group element `g`. The derivative in `g`, `Hg`, is in general more complex. diff --git a/doc/workflows.md b/doc/workflows.md new file mode 100644 index 0000000000..d8007a2cc9 --- /dev/null +++ b/doc/workflows.md @@ -0,0 +1,45 @@ +# GTSAM GitHub Configuration + +This directory contains GitHub-specific configuration, including issue templates and CI workflows. + +## Workflows Overview + +The `.github/workflows` directory contains definitions for the various CI/CD processes: + +- **`build-linux.yml`**: Main Linux CI. Runs inside the pre-built Docker containers mentioned above to compile and test GTSAM with various compilers (GCC, Clang) and configurations. +- **`build-macos.yml`**: Compiles and tests GTSAM on macOS runners. +- **`build-windows.yml`**: Compiles and tests GTSAM on Windows runners using MSVC. +- **`build-python.yml`**: Verifies the Python wrapper compilation across Linux, macOS, and Windows. +- **`build-cibw.yml`**: Builds distributable Python wheels using `cibuildwheel`. It builds dependencies (like Boost) from source to ensure ABI compatibility. +- **`prod-cibw.yml`**: Used for production wheel builds (often triggered on release). +- **`vcpkg.yml`**: Compiles and tests GTSAM on Linux, macOS, and Windows using `vcpkg` to install all dependencies. +- **`deploy.yml`**: Handles deployment tasks (e.g., docs, release artifacts). + +## Updating vcpkg dependencies + +`vcpkg` supports a manifest in the form of `vcpkg.json`, which specifies all the dependencies to install, and a "baseline", which is just a commit hash from https://github.com/microsoft/vcpkg. Instead of upgrading individual library versions which might be incompatible, you upgrade baselines, which are a set of library versions that have been tested to work together. This also means library versions are pinned to the baseline, so the baseline needs to periodically updated to get the latest libraries. Updating is not *strictly* necessary, as old library versions should work for a while, but it can be good to ensure compatibility with the latest libraies. To update the baseline, simply go to https://github.com/microsoft/vcpkg and copy the full commit hash for the version you want (could be HEAD for the day, or if you prefer tags, you can use the commit hash for a tag instead) and update the `builtin-baseline` field in `vcpkg.json` at the root of this repo. + +## Docker CI Images (Linux Only) + +The **Linux CI** workflow (`build-linux.yml`) relies on pre-built Docker images to ensure consistency and speed up build times. These images are hosted in the [borglab/docker-images](https://github.com/borglab/docker-images) repository. + +*Note: macOS and Windows workflows use standard GitHub Actions runners and install dependencies (like Boost) via package managers (Homebrew, Chocolatey) or from source.* + +### Building and Updating Images + +If you need to update an existing CI image or add a new one (e.g., for a new Ubuntu version or compiler): + +1. **Navigate to the `docker-images` repository:** + ```bash + cd ../docker-images/gtsam-ci + ``` +2. **Add or modify a Dockerfile:** + - Follow the naming convention: `ubuntu---.Dockerfile`. + - Base images are defined in `*-base.Dockerfile`. +3. **Build and Push:** + Use the provided script to build and push to Docker Hub (requires `borglab` permissions): + ```bash + ./build_and_push.sh + ``` + +For more details, see the [README in the docker-images repository](https://github.com/borglab/docker-images/blob/main/gtsam-ci/README.md). diff --git a/examples/AbcEquivariantFilterExample.cpp b/examples/AbcEquivariantFilterExample.cpp index 821db414ef..6aaf8c6a64 100644 --- a/examples/AbcEquivariantFilterExample.cpp +++ b/examples/AbcEquivariantFilterExample.cpp @@ -1,32 +1,45 @@ /** * @file AbcEquivariantFilterExample.cpp - * @brief Demonstration of the full Attitude-Bias-Calibration Equivariant Filter + * @brief Demonstration of the Attitude-Bias-Calibration Equivariant Filter * * This demo shows the Equivariant Filter (EqF) for attitude estimation * with both gyroscope bias and sensor extrinsic calibration, based on the * paper: "Overcoming Bias: Equivariant Filter Design for Biased Attitude * Estimation with Online Calibration" by Fornasier et al. * + * This example uses the simplified AbcEquivariantFilter class which + * provides a clean interface for predict/update operations without requiring + * manual computation of Jacobian matrices and innovation functions. + * * @author Darshan Rajasekaran * @author Jennifer Oum * @author Rohan Bansal * @author Frank Dellaert * @date 2025 */ -#include + #include #include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // Use namespace for convenience using namespace gtsam; constexpr size_t n = 1; // Number of calibration states using M = abc::State; -using G = abc::Group; -using Symmetry = abc::Symmetry; -using EqFilter = gtsam::EquivariantFilter; -using Lift = abc::Lift; -using InputOrbit = typename abc::InputAction::Orbit; -using Innovation = abc::Innovation; +using AbcFilter = abc::AbcEquivariantFilter; /// Measurement struct struct Measurement { @@ -72,7 +85,7 @@ std::vector loadDataFromCSV(const std::string& filename, int startRow = 0, int maxRows = -1, int downsample = 1); /// Process data with EqF and print summary results -void processDataWithEqF(EqFilter& filter, const std::vector& data_list, +void processDataWithEqF(AbcFilter& filter, const std::vector& data_list, int printInterval = 10); //======================================================================== @@ -235,7 +248,7 @@ std::vector loadDataFromCSV(const std::string& filename, int startRow, } /// Takes in the data and runs an EqF on it and reports the results -void processDataWithEqF(EqFilter& filter, const std::vector& data_list, +void processDataWithEqF(AbcFilter& filter, const std::vector& data_list, int printInterval) { if (data_list.empty()) { std::cerr << "No data to process" << std::endl; @@ -267,18 +280,7 @@ void processDataWithEqF(EqFilter& filter, const std::vector& data_list, for (size_t i = 0; i < data_list.size(); i++) { const Data& data = data_list[i]; - Matrix Q = abc::inputProcessNoise(data.inputCovariance); - // Propagate filter with current input and time step - Vector6 u = abc::toInputVector(data.omega); - Lift lift_u(u); - InputOrbit psi_u(u); - - // Use Explicit Matrices API - G X_hat = filter.groupEstimate(); - Matrix A = abc::stateMatrixA(psi_u, X_hat); - Matrix B = abc::inputMatrixB(X_hat); - Matrix Qc = B * Q * B.transpose(); // continuous-time manifold covariance - filter.predictWithJacobian<2>(lift_u, A, Qc, data.dt); + filter.predict(data.omega, data.inputCovariance, data.dt); // Process all measurements for (const auto& measurement : data.measurements) { @@ -294,14 +296,8 @@ void processDataWithEqF(EqFilter& filter, const std::vector& data_list, } try { - Innovation innovation(measurement.y, measurement.d, - measurement.cal_idx); - // Use Explicit Matrices API - X_hat = filter.groupEstimate(); - const Matrix3 D = abc::outputMatrixD(X_hat, measurement.cal_idx); - const Matrix3 R = D * measurement.R * D.transpose(); - filter.update(innovation, Z_3x1, R); - + filter.update(measurement.y, measurement.d, measurement.R, + measurement.cal_idx); validMeasurements++; } catch (const std::exception& e) { std::cerr << "Error updating at t=" << data.t << ": " << e.what() @@ -309,15 +305,17 @@ void processDataWithEqF(EqFilter& filter, const std::vector& data_list, } } - // Get current state estimate - M estimate = filter.state(); + // Get current estimates using accessor methods + Rot3 att_est = filter.attitude(); + Vector3 bias_est = filter.bias(); + Rot3 cal_est = filter.calibration(0); // Calculate errors - Vector3 att_error = Rot3::Logmap(data.xi.R.between(estimate.R)); - Vector3 bias_error = estimate.b - data.xi.b; + Vector3 att_error = Rot3::Logmap(data.xi.R.between(att_est)); + Vector3 bias_error = bias_est - data.xi.b; Vector3 cal_error = Z_3x1; - if (!data.xi.S.empty() && !estimate.S.empty()) { - cal_error = Rot3::Logmap(data.xi.S[0].between(estimate.S[0])); + if (!data.xi.S.empty()) { + cal_error = Rot3::Logmap(data.xi.S[0].between(cal_est)); } // Store errors @@ -353,14 +351,16 @@ void processDataWithEqF(EqFilter& filter, const std::vector& data_list, // Calculate final errors from last data point const Data& final_data = data_list.back(); - M final_estimate = filter.state(); + Rot3 final_att_est = filter.attitude(); + Vector3 final_bias_est = filter.bias(); + Rot3 final_cal_est = filter.calibration(0); + Vector3 final_att_error = - Rot3::Logmap(final_data.xi.R.between(final_estimate.R)); - Vector3 final_bias_error = final_estimate.b - final_data.xi.b; + Rot3::Logmap(final_data.xi.R.between(final_att_est)); + Vector3 final_bias_error = final_bias_est - final_data.xi.b; Vector3 final_cal_error = Z_3x1; - if (!final_data.xi.S.empty() && !final_estimate.S.empty()) { - final_cal_error = - Rot3::Logmap(final_data.xi.S[0].between(final_estimate.S[0])); + if (!final_data.xi.S.empty()) { + final_cal_error = Rot3::Logmap(final_data.xi.S[0].between(final_cal_est)); } // Print summary statistics @@ -388,16 +388,15 @@ void processDataWithEqF(EqFilter& filter, const std::vector& data_list, // Print a brief comparison of final estimate vs ground truth std::cout << "\n-- Final State vs Ground Truth --" << std::endl; std::cout << "Attitude (RPY) - Estimate: " - << (final_estimate.R.rpy() * RAD_TO_DEG).transpose() + << (final_att_est.rpy() * RAD_TO_DEG).transpose() << "° | Truth: " << (final_data.xi.R.rpy() * RAD_TO_DEG).transpose() << "°" << std::endl; - std::cout << "Bias - Estimate: " << final_estimate.b.transpose() + std::cout << "Bias - Estimate: " << final_bias_est.transpose() << " | Truth: " << final_data.xi.b.transpose() << std::endl; - if (!final_estimate.S.empty() && !final_data.xi.S.empty()) { + if (!final_data.xi.S.empty()) { std::cout << "Calibration (RPY) - Estimate: " - << (final_estimate.S[0].rpy() * RAD_TO_DEG).transpose() - << "° | Truth: " + << (final_cal_est.rpy() * RAD_TO_DEG).transpose() << "° | Truth: " << (final_data.xi.S[0].rpy() * RAD_TO_DEG).transpose() << "°" << std::endl; } @@ -456,10 +455,8 @@ int main(int argc, char* argv[]) { initialSigma.diagonal().tail<3>() = Vector3::Constant(0.1); // Calibration uncertainty - M initialState = M::identity(); - - // Create filter - EqFilter filter(initialState, initialSigma); + // Create filter with initial covariance (starts at identity state) + AbcFilter filter(initialSigma); // Process data processDataWithEqF(filter, data); diff --git a/gtsam/3rdparty/cephes/CMakeLists.txt b/gtsam/3rdparty/cephes/CMakeLists.txt index a1179d0c31..e5aea56d35 100644 --- a/gtsam/3rdparty/cephes/CMakeLists.txt +++ b/gtsam/3rdparty/cephes/CMakeLists.txt @@ -8,85 +8,24 @@ project( set(CEPHES_HEADER_FILES cephes.h - cephes/dd_idefs.h - cephes/dd_real.h - cephes/dd_real_idefs.h - cephes/expn.h cephes/igam.h cephes/lanczos.h cephes/mconf.h cephes/polevl.h - cephes/sf_error.h - ) + cephes/sf_error.h) # Add header files install(FILES ${CEPHES_HEADER_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/3rdparty/cephes) set(CEPHES_SOURCES - cephes/airy.c - cephes/bdtr.c - cephes/besselpoly.c - cephes/beta.c - cephes/btdtr.c - cephes/cbrt.c - cephes/chbevl.c - cephes/chdtr.c cephes/const.c - cephes/dawsn.c - cephes/dd_real.c - cephes/ellie.c - cephes/ellik.c - cephes/ellpe.c - cephes/ellpj.c - cephes/ellpk.c - cephes/erfinv.c - cephes/exp10.c - cephes/exp2.c - cephes/expn.c - cephes/fdtr.c - cephes/fresnl.c cephes/gamma.c - cephes/gammasgn.c - cephes/gdtr.c - cephes/hyp2f1.c - cephes/hyperg.c - cephes/i0.c - cephes/i1.c cephes/igam.c cephes/igami.c - cephes/incbet.c - cephes/incbi.c - cephes/j0.c - cephes/j1.c - cephes/jv.c - cephes/k0.c - cephes/k1.c - cephes/kn.c - cephes/kolmogorov.c cephes/lanczos.c - cephes/nbdtr.c - cephes/ndtr.c - cephes/ndtri.c - cephes/owens_t.c - cephes/pdtr.c - cephes/poch.c - cephes/psi.c - cephes/rgamma.c - cephes/round.c cephes/sf_error.c - cephes/shichi.c - cephes/sici.c - cephes/sindg.c - cephes/sinpi.c - cephes/spence.c - cephes/stdtr.c - cephes/tandg.c - cephes/tukey.c cephes/unity.c - cephes/yn.c - cephes/yv.c - cephes/zeta.c - cephes/zetac.c) + cephes/zeta.c) # Add library source files add_library(cephes-gtsam ${GTSAM_LIBRARY_TYPE} ${CEPHES_SOURCES}) diff --git a/gtsam/3rdparty/cephes/README.md b/gtsam/3rdparty/cephes/README.md index 63e3a6c8c6..3660878f33 100644 --- a/gtsam/3rdparty/cephes/README.md +++ b/gtsam/3rdparty/cephes/README.md @@ -1,6 +1,6 @@ # README -This is a vendored version of the Cephes Mathematical Library. The source code can be found on [netlib.org](https://www.netlib.org/cephes/). +This is a vendored version of the Cephes Mathematical Library, trimmed down to just the required files for the `igami` function, and with exported functions renamed to prevent conflicts. The source code can be found on [netlib.org](https://www.netlib.org/cephes/). The software is provided with an [MIT License](https://smath.com/en-US/view/CephesMathLibrary/license). diff --git a/gtsam/3rdparty/cephes/cephes.h b/gtsam/3rdparty/cephes/cephes.h index c4ccfb132a..e06ad8bcdb 100644 --- a/gtsam/3rdparty/cephes/cephes.h +++ b/gtsam/3rdparty/cephes/cephes.h @@ -5,141 +5,25 @@ extern "C" { #endif -int airy(double x, double *ai, double *aip, double *bi, double *bip); +double gtsam_cephes_Gamma(double x); +double gtsam_cephes_lgam(double x); +double gtsam_cephes_lgam_sgn(double x, int *sign); +double gtsam_cephes_gammasgn(double x); -double bdtrc(double k, int n, double p); -double bdtr(double k, int n, double p); -double bdtri(double k, int n, double y); +double gtsam_cephes_igamc(double a, double x); +double gtsam_cephes_igam(double a, double x); +double gtsam_cephes_igam_fac(double a, double x); +double gtsam_cephes_igamci(double a, double q); +double gtsam_cephes_igami(double a, double p); -double besselpoly(double a, double lambda, double nu); +double gtsam_cephes_log1pmx(double x); +double gtsam_cephes_cosm1(double x); +double gtsam_cephes_lgam1p(double x); -double beta(double a, double b); -double lbeta(double a, double b); +double gtsam_cephes_zeta(double x, double q); +double gtsam_cephes_zetac(double x); -double btdtr(double a, double b, double x); - -double chbevl(double x, double array[], int n); -double chdtrc(double df, double x); -double chdtr(double df, double x); -double chdtri(double df, double y); -double dawsn(double xx); - -double ellie(double phi, double m); -double ellik(double phi, double m); -double ellpe(double x); - -int ellpj(double u, double m, double *sn, double *cn, double *dn, double *ph); -double ellpk(double x); -double exp10(double x); - -double expn(int n, double x); - -double fdtrc(double a, double b, double x); -double fdtr(double a, double b, double x); -double fdtri(double a, double b, double y); - -int fresnl(double xxa, double *ssa, double *cca); -double Gamma(double x); -double lgam(double x); -double lgam_sgn(double x, int *sign); -double gammasgn(double x); - -double gdtr(double a, double b, double x); -double gdtrc(double a, double b, double x); -double gdtri(double a, double b, double y); - -double hyp2f1(double a, double b, double c, double x); -double hyperg(double a, double b, double x); -double threef0(double a, double b, double c, double x, double *err); - -double i0(double x); -double i0e(double x); -double i1(double x); -double i1e(double x); -double igamc(double a, double x); -double igam(double a, double x); -double igam_fac(double a, double x); -double igamci(double a, double q); -double igami(double a, double p); - -double incbet(double aa, double bb, double xx); -double incbi(double aa, double bb, double yy0); - -double iv(double v, double x); - -double jv(double n, double x); -double k0(double x); -double k0e(double x); -double k1(double x); -double k1e(double x); -double kn(int nn, double x); - -double nbdtrc(int k, int n, double p); -double nbdtr(int k, int n, double p); -double nbdtri(int k, int n, double p); - -double ndtr(double a); -double log_ndtr(double a); -double erfinv(double y); -double erfcinv(double y); -double ndtri(double y0); - -double pdtrc(double k, double m); -double pdtr(double k, double m); -double pdtri(int k, double y); - -double poch(double x, double m); - -double psi(double x); - -double rgamma(double x); - -int shichi(double x, double *si, double *ci); -int sici(double x, double *si, double *ci); - -double radian(double d, double m, double s); -double sindg(double x); -double sinpi(double x); -double cosdg(double x); -double cospi(double x); - -double spence(double x); - -double stdtr(int k, double t); -double stdtri(int k, double p); - -double struve_h(double v, double x); -double struve_l(double v, double x); -double struve_power_series(double v, double x, int is_h, double *err); -double struve_asymp_large_z(double v, double z, int is_h, double *err); -double struve_bessel_series(double v, double z, int is_h, double *err); - -double yv(double v, double x); - -double tandg(double x); -double cotdg(double x); - -double log1pmx(double x); -double cosm1(double x); -double lgam1p(double x); - -double zeta(double x, double q); -double zetac(double x); - -double smirnov(int n, double d); -double smirnovi(int n, double p); -double smirnovp(int n, double d); -double smirnovc(int n, double d); -double smirnovci(int n, double p); -double kolmogorov(double x); -double kolmogi(double p); -double kolmogp(double x); -double kolmogc(double x); -double kolmogci(double p); - -double lanczos_sum_expg_scaled(double x); - -double owens_t(double h, double a); +double gtsam_cephes_lanczos_sum_expg_scaled(double x); #ifdef __cplusplus } diff --git a/gtsam/3rdparty/cephes/cephes/airy.c b/gtsam/3rdparty/cephes/cephes/airy.c deleted file mode 100644 index 95e16a55f8..0000000000 --- a/gtsam/3rdparty/cephes/cephes/airy.c +++ /dev/null @@ -1,376 +0,0 @@ -/* airy.c - * - * Airy function - * - * - * - * SYNOPSIS: - * - * double x, ai, aip, bi, bip; - * int airy(); - * - * airy( x, _&ai, _&aip, _&bi, _&bip ); - * - * - * - * DESCRIPTION: - * - * Solution of the differential equation - * - * y"(x) = xy. - * - * The function returns the two independent solutions Ai, Bi - * and their first derivatives Ai'(x), Bi'(x). - * - * Evaluation is by power series summation for small x, - * by rational minimax approximations for large x. - * - * - * - * ACCURACY: - * Error criterion is absolute when function <= 1, relative - * when function > 1, except * denotes relative error criterion. - * For large negative x, the absolute error increases as x^1.5. - * For large positive x, the relative error increases as x^1.5. - * - * Arithmetic domain function # trials peak rms - * IEEE -10, 0 Ai 10000 1.6e-15 2.7e-16 - * IEEE 0, 10 Ai 10000 2.3e-14* 1.8e-15* - * IEEE -10, 0 Ai' 10000 4.6e-15 7.6e-16 - * IEEE 0, 10 Ai' 10000 1.8e-14* 1.5e-15* - * IEEE -10, 10 Bi 30000 4.2e-15 5.3e-16 - * IEEE -10, 10 Bi' 30000 4.9e-15 7.3e-16 - * - */ - /* airy.c */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1989, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" - -static double c1 = 0.35502805388781723926; -static double c2 = 0.258819403792806798405; -static double sqrt3 = 1.732050807568877293527; -static double sqpii = 5.64189583547756286948E-1; - -extern double MACHEP; - -#ifdef UNK -#define MAXAIRY 25.77 -#endif -#ifdef IBMPC -#define MAXAIRY 103.892 -#endif -#ifdef MIEEE -#define MAXAIRY 103.892 -#endif - - -static double AN[8] = { - 3.46538101525629032477E-1, - 1.20075952739645805542E1, - 7.62796053615234516538E1, - 1.68089224934630576269E2, - 1.59756391350164413639E2, - 7.05360906840444183113E1, - 1.40264691163389668864E1, - 9.99999999999999995305E-1, -}; - -static double AD[8] = { - 5.67594532638770212846E-1, - 1.47562562584847203173E1, - 8.45138970141474626562E1, - 1.77318088145400459522E2, - 1.64234692871529701831E2, - 7.14778400825575695274E1, - 1.40959135607834029598E1, - 1.00000000000000000470E0, -}; - -static double APN[8] = { - 6.13759184814035759225E-1, - 1.47454670787755323881E1, - 8.20584123476060982430E1, - 1.71184781360976385540E2, - 1.59317847137141783523E2, - 6.99778599330103016170E1, - 1.39470856980481566958E1, - 1.00000000000000000550E0, -}; - -static double APD[8] = { - 3.34203677749736953049E-1, - 1.11810297306158156705E1, - 7.11727352147859965283E1, - 1.58778084372838313640E2, - 1.53206427475809220834E2, - 6.86752304592780337944E1, - 1.38498634758259442477E1, - 9.99999999999999994502E-1, -}; - -static double BN16[5] = { - -2.53240795869364152689E-1, - 5.75285167332467384228E-1, - -3.29907036873225371650E-1, - 6.44404068948199951727E-2, - -3.82519546641336734394E-3, -}; - -static double BD16[5] = { - /* 1.00000000000000000000E0, */ - -7.15685095054035237902E0, - 1.06039580715664694291E1, - -5.23246636471251500874E0, - 9.57395864378383833152E-1, - -5.50828147163549611107E-2, -}; - -static double BPPN[5] = { - 4.65461162774651610328E-1, - -1.08992173800493920734E0, - 6.38800117371827987759E-1, - -1.26844349553102907034E-1, - 7.62487844342109852105E-3, -}; - -static double BPPD[5] = { - /* 1.00000000000000000000E0, */ - -8.70622787633159124240E0, - 1.38993162704553213172E1, - -7.14116144616431159572E0, - 1.34008595960680518666E0, - -7.84273211323341930448E-2, -}; - -static double AFN[9] = { - -1.31696323418331795333E-1, - -6.26456544431912369773E-1, - -6.93158036036933542233E-1, - -2.79779981545119124951E-1, - -4.91900132609500318020E-2, - -4.06265923594885404393E-3, - -1.59276496239262096340E-4, - -2.77649108155232920844E-6, - -1.67787698489114633780E-8, -}; - -static double AFD[9] = { - /* 1.00000000000000000000E0, */ - 1.33560420706553243746E1, - 3.26825032795224613948E1, - 2.67367040941499554804E1, - 9.18707402907259625840E0, - 1.47529146771666414581E0, - 1.15687173795188044134E-1, - 4.40291641615211203805E-3, - 7.54720348287414296618E-5, - 4.51850092970580378464E-7, -}; - -static double AGN[11] = { - 1.97339932091685679179E-2, - 3.91103029615688277255E-1, - 1.06579897599595591108E0, - 9.39169229816650230044E-1, - 3.51465656105547619242E-1, - 6.33888919628925490927E-2, - 5.85804113048388458567E-3, - 2.82851600836737019778E-4, - 6.98793669997260967291E-6, - 8.11789239554389293311E-8, - 3.41551784765923618484E-10, -}; - -static double AGD[10] = { - /* 1.00000000000000000000E0, */ - 9.30892908077441974853E0, - 1.98352928718312140417E1, - 1.55646628932864612953E1, - 5.47686069422975497931E0, - 9.54293611618961883998E-1, - 8.64580826352392193095E-2, - 4.12656523824222607191E-3, - 1.01259085116509135510E-4, - 1.17166733214413521882E-6, - 4.91834570062930015649E-9, -}; - -static double APFN[9] = { - 1.85365624022535566142E-1, - 8.86712188052584095637E-1, - 9.87391981747398547272E-1, - 4.01241082318003734092E-1, - 7.10304926289631174579E-2, - 5.90618657995661810071E-3, - 2.33051409401776799569E-4, - 4.08718778289035454598E-6, - 2.48379932900442457853E-8, -}; - -static double APFD[9] = { - /* 1.00000000000000000000E0, */ - 1.47345854687502542552E1, - 3.75423933435489594466E1, - 3.14657751203046424330E1, - 1.09969125207298778536E1, - 1.78885054766999417817E0, - 1.41733275753662636873E-1, - 5.44066067017226003627E-3, - 9.39421290654511171663E-5, - 5.65978713036027009243E-7, -}; - -static double APGN[11] = { - -3.55615429033082288335E-2, - -6.37311518129435504426E-1, - -1.70856738884312371053E0, - -1.50221872117316635393E0, - -5.63606665822102676611E-1, - -1.02101031120216891789E-1, - -9.48396695961445269093E-3, - -4.60325307486780994357E-4, - -1.14300836484517375919E-5, - -1.33415518685547420648E-7, - -5.63803833958893494476E-10, -}; - -static double APGD[11] = { - /* 1.00000000000000000000E0, */ - 9.85865801696130355144E0, - 2.16401867356585941885E1, - 1.73130776389749389525E1, - 6.17872175280828766327E0, - 1.08848694396321495475E0, - 9.95005543440888479402E-2, - 4.78468199683886610842E-3, - 1.18159633322838625562E-4, - 1.37480673554219441465E-6, - 5.79912514929147598821E-9, -}; - -int airy(double x, double *ai, double *aip, double *bi, double *bip) -{ - double z, zz, t, f, g, uf, ug, k, zeta, theta; - int domflg; - - domflg = 0; - if (x > MAXAIRY) { - *ai = 0; - *aip = 0; - *bi = INFINITY; - *bip = INFINITY; - return (-1); - } - - if (x < -2.09) { - domflg = 15; - t = sqrt(-x); - zeta = -2.0 * x * t / 3.0; - t = sqrt(t); - k = sqpii / t; - z = 1.0 / zeta; - zz = z * z; - uf = 1.0 + zz * polevl(zz, AFN, 8) / p1evl(zz, AFD, 9); - ug = z * polevl(zz, AGN, 10) / p1evl(zz, AGD, 10); - theta = zeta + 0.25 * M_PI; - f = sin(theta); - g = cos(theta); - *ai = k * (f * uf - g * ug); - *bi = k * (g * uf + f * ug); - uf = 1.0 + zz * polevl(zz, APFN, 8) / p1evl(zz, APFD, 9); - ug = z * polevl(zz, APGN, 10) / p1evl(zz, APGD, 10); - k = sqpii * t; - *aip = -k * (g * uf + f * ug); - *bip = k * (f * uf - g * ug); - return (0); - } - - if (x >= 2.09) { /* cbrt(9) */ - domflg = 5; - t = sqrt(x); - zeta = 2.0 * x * t / 3.0; - g = exp(zeta); - t = sqrt(t); - k = 2.0 * t * g; - z = 1.0 / zeta; - f = polevl(z, AN, 7) / polevl(z, AD, 7); - *ai = sqpii * f / k; - k = -0.5 * sqpii * t / g; - f = polevl(z, APN, 7) / polevl(z, APD, 7); - *aip = f * k; - - if (x > 8.3203353) { /* zeta > 16 */ - f = z * polevl(z, BN16, 4) / p1evl(z, BD16, 5); - k = sqpii * g; - *bi = k * (1.0 + f) / t; - f = z * polevl(z, BPPN, 4) / p1evl(z, BPPD, 5); - *bip = k * t * (1.0 + f); - return (0); - } - } - - f = 1.0; - g = x; - t = 1.0; - uf = 1.0; - ug = x; - k = 1.0; - z = x * x * x; - while (t > MACHEP) { - uf *= z; - k += 1.0; - uf /= k; - ug *= z; - k += 1.0; - ug /= k; - uf /= k; - f += uf; - k += 1.0; - ug /= k; - g += ug; - t = fabs(uf / f); - } - uf = c1 * f; - ug = c2 * g; - if ((domflg & 1) == 0) - *ai = uf - ug; - if ((domflg & 2) == 0) - *bi = sqrt3 * (uf + ug); - - /* the deriviative of ai */ - k = 4.0; - uf = x * x / 2.0; - ug = z / 3.0; - f = uf; - g = 1.0 + ug; - uf /= 3.0; - t = 1.0; - - while (t > MACHEP) { - uf *= z; - ug /= k; - k += 1.0; - ug *= z; - uf /= k; - f += uf; - k += 1.0; - ug /= k; - uf /= k; - g += ug; - k += 1.0; - t = fabs(ug / g); - } - - uf = c1 * f; - ug = c2 * g; - if ((domflg & 4) == 0) - *aip = uf - ug; - if ((domflg & 8) == 0) - *bip = sqrt3 * (uf + ug); - return (0); -} diff --git a/gtsam/3rdparty/cephes/cephes/bdtr.c b/gtsam/3rdparty/cephes/cephes/bdtr.c deleted file mode 100644 index 29fcdf1aff..0000000000 --- a/gtsam/3rdparty/cephes/cephes/bdtr.c +++ /dev/null @@ -1,241 +0,0 @@ -/* bdtr.c - * - * Binomial distribution - * - * - * - * SYNOPSIS: - * - * int k, n; - * double p, y, bdtr(); - * - * y = bdtr( k, n, p ); - * - * DESCRIPTION: - * - * Returns the sum of the terms 0 through k of the Binomial - * probability density: - * - * k - * -- ( n ) j n-j - * > ( ) p (1-p) - * -- ( j ) - * j=0 - * - * The terms are not summed directly; instead the incomplete - * beta integral is employed, according to the formula - * - * y = bdtr( k, n, p ) = incbet( n-k, k+1, 1-p ). - * - * The arguments must be positive, with p ranging from 0 to 1. - * - * ACCURACY: - * - * Tested at random points (a,b,p), with p between 0 and 1. - * - * a,b Relative error: - * arithmetic domain # trials peak rms - * For p between 0.001 and 1: - * IEEE 0,100 100000 4.3e-15 2.6e-16 - * See also incbet.c. - * - * ERROR MESSAGES: - * - * message condition value returned - * bdtr domain k < 0 0.0 - * n < k - * x < 0, x > 1 - */ -/* bdtrc() - * - * Complemented binomial distribution - * - * - * - * SYNOPSIS: - * - * int k, n; - * double p, y, bdtrc(); - * - * y = bdtrc( k, n, p ); - * - * DESCRIPTION: - * - * Returns the sum of the terms k+1 through n of the Binomial - * probability density: - * - * n - * -- ( n ) j n-j - * > ( ) p (1-p) - * -- ( j ) - * j=k+1 - * - * The terms are not summed directly; instead the incomplete - * beta integral is employed, according to the formula - * - * y = bdtrc( k, n, p ) = incbet( k+1, n-k, p ). - * - * The arguments must be positive, with p ranging from 0 to 1. - * - * ACCURACY: - * - * Tested at random points (a,b,p). - * - * a,b Relative error: - * arithmetic domain # trials peak rms - * For p between 0.001 and 1: - * IEEE 0,100 100000 6.7e-15 8.2e-16 - * For p between 0 and .001: - * IEEE 0,100 100000 1.5e-13 2.7e-15 - * - * ERROR MESSAGES: - * - * message condition value returned - * bdtrc domain x<0, x>1, n 1 - */ - -/* bdtr() */ - -/* - * Cephes Math Library Release 2.3: March, 1995 - * Copyright 1984, 1987, 1995 by Stephen L. Moshier - */ - -#include "mconf.h" - -double bdtrc(double k, int n, double p) { - double dk, dn; - double fk = floor(k); - - if (isnan(p) || isnan(k)) { - return NAN; - } - - if (p < 0.0 || p > 1.0 || n < fk) { - sf_error("bdtrc", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (fk < 0) { - return 1.0; - } - - if (fk == n) { - return 0.0; - } - - dn = n - fk; - if (k == 0) { - if (p < .01) - dk = -expm1(dn * log1p(-p)); - else - dk = 1.0 - pow(1.0 - p, dn); - } else { - dk = fk + 1; - dk = incbet(dk, dn, p); - } - return dk; -} - -double bdtr(double k, int n, double p) { - double dk, dn; - double fk = floor(k); - - if (isnan(p) || isnan(k)) { - return NAN; - } - - if (p < 0.0 || p > 1.0 || fk < 0 || n < fk) { - sf_error("bdtr", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (fk == n) return 1.0; - - dn = n - fk; - if (fk == 0) { - dk = pow(1.0 - p, dn); - } else { - dk = fk + 1.; - dk = incbet(dn, dk, 1.0 - p); - } - return dk; -} - -double bdtri(double k, int n, double y) { - double p, dn, dk; - double fk = floor(k); - - if (isnan(k)) { - return NAN; - } - - if (y < 0.0 || y > 1.0 || fk < 0.0 || n <= fk) { - sf_error("bdtri", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - dn = n - fk; - - if (fk == n) return 1.0; - - if (fk == 0) { - if (y > 0.8) { - p = -expm1(log1p(y - 1.0) / dn); - } else { - p = 1.0 - pow(y, 1.0 / dn); - } - } else { - dk = fk + 1; - p = incbet(dn, dk, 0.5); - if (p > 0.5) - p = incbi(dk, dn, 1.0 - y); - else - p = 1.0 - incbi(dn, dk, y); - } - return p; -} diff --git a/gtsam/3rdparty/cephes/cephes/besselpoly.c b/gtsam/3rdparty/cephes/cephes/besselpoly.c deleted file mode 100644 index a58fe20376..0000000000 --- a/gtsam/3rdparty/cephes/cephes/besselpoly.c +++ /dev/null @@ -1,34 +0,0 @@ -#include "mconf.h" - -#define EPS 1.0e-17 - -double besselpoly(double a, double lambda, double nu) { - - int m, factor=0; - double Sm, relerr, Sol; - double sum=0.0; - - /* Special handling for a = 0.0 */ - if (a == 0.0) { - if (nu == 0.0) return 1.0/(lambda + 1); - else return 0.0; - } - /* Special handling for negative and integer nu */ - if ((nu < 0) && (floor(nu)==nu)) { - nu = -nu; - factor = ((int) nu) % 2; - } - Sm = exp(nu*log(a))/(Gamma(nu+1)*(lambda+nu+1)); - m = 0; - do { - sum += Sm; - Sol = Sm; - Sm *= -a*a*(lambda+nu+1+2*m)/((nu+m+1)*(m+1)*(lambda+nu+1+2*m+2)); - m++; - relerr = fabs((Sm-Sol)/Sm); - } while (relerr > EPS && m < 1000); - if (!factor) - return sum; - else - return -sum; -} diff --git a/gtsam/3rdparty/cephes/cephes/beta.c b/gtsam/3rdparty/cephes/cephes/beta.c deleted file mode 100644 index c0389deea0..0000000000 --- a/gtsam/3rdparty/cephes/cephes/beta.c +++ /dev/null @@ -1,258 +0,0 @@ -/* beta.c - * - * Beta function - * - * - * - * SYNOPSIS: - * - * double a, b, y, beta(); - * - * y = beta( a, b ); - * - * - * - * DESCRIPTION: - * - * - - - * | (a) | (b) - * beta( a, b ) = -----------. - * - - * | (a+b) - * - * For large arguments the logarithm of the function is - * evaluated using lgam(), then exponentiated. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,30 30000 8.1e-14 1.1e-14 - * - * ERROR MESSAGES: - * - * message condition value returned - * beta overflow log(beta) > MAXLOG 0.0 - * a or b <0 integer 0.0 - * - */ - - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -#define MAXGAM 171.624376956302725 - -extern double MAXLOG; - -#define ASYMP_FACTOR 1e6 - -static double lbeta_asymp(double a, double b, int *sgn); -static double lbeta_negint(int a, double b); -static double beta_negint(int a, double b); - -double beta(double a, double b) -{ - double y; - int sign = 1; - - if (a <= 0.0) { - if (a == floor(a)) { - if (a == (int)a) { - return beta_negint((int)a, b); - } - else { - goto overflow; - } - } - } - - if (b <= 0.0) { - if (b == floor(b)) { - if (b == (int)b) { - return beta_negint((int)b, a); - } - else { - goto overflow; - } - } - } - - if (fabs(a) < fabs(b)) { - y = a; a = b; b = y; - } - - if (fabs(a) > ASYMP_FACTOR * fabs(b) && a > ASYMP_FACTOR) { - /* Avoid loss of precision in lgam(a + b) - lgam(a) */ - y = lbeta_asymp(a, b, &sign); - return sign * exp(y); - } - - y = a + b; - if (fabs(y) > MAXGAM || fabs(a) > MAXGAM || fabs(b) > MAXGAM) { - int sgngam; - y = lgam_sgn(y, &sgngam); - sign *= sgngam; /* keep track of the sign */ - y = lgam_sgn(b, &sgngam) - y; - sign *= sgngam; - y = lgam_sgn(a, &sgngam) + y; - sign *= sgngam; - if (y > MAXLOG) { - goto overflow; - } - return (sign * exp(y)); - } - - y = Gamma(y); - a = Gamma(a); - b = Gamma(b); - if (y == 0.0) - goto overflow; - - if (fabs(fabs(a) - fabs(y)) > fabs(fabs(b) - fabs(y))) { - y = b / y; - y *= a; - } - else { - y = a / y; - y *= b; - } - - return (y); - -overflow: - sf_error("beta", SF_ERROR_OVERFLOW, NULL); - return (sign * INFINITY); -} - - -/* Natural log of |beta|. */ - -double lbeta(double a, double b) -{ - double y; - int sign; - - sign = 1; - - if (a <= 0.0) { - if (a == floor(a)) { - if (a == (int)a) { - return lbeta_negint((int)a, b); - } - else { - goto over; - } - } - } - - if (b <= 0.0) { - if (b == floor(b)) { - if (b == (int)b) { - return lbeta_negint((int)b, a); - } - else { - goto over; - } - } - } - - if (fabs(a) < fabs(b)) { - y = a; a = b; b = y; - } - - if (fabs(a) > ASYMP_FACTOR * fabs(b) && a > ASYMP_FACTOR) { - /* Avoid loss of precision in lgam(a + b) - lgam(a) */ - y = lbeta_asymp(a, b, &sign); - return y; - } - - y = a + b; - if (fabs(y) > MAXGAM || fabs(a) > MAXGAM || fabs(b) > MAXGAM) { - int sgngam; - y = lgam_sgn(y, &sgngam); - sign *= sgngam; /* keep track of the sign */ - y = lgam_sgn(b, &sgngam) - y; - sign *= sgngam; - y = lgam_sgn(a, &sgngam) + y; - sign *= sgngam; - return (y); - } - - y = Gamma(y); - a = Gamma(a); - b = Gamma(b); - if (y == 0.0) { - over: - sf_error("lbeta", SF_ERROR_OVERFLOW, NULL); - return (sign * INFINITY); - } - - if (fabs(fabs(a) - fabs(y)) > fabs(fabs(b) - fabs(y))) { - y = b / y; - y *= a; - } - else { - y = a / y; - y *= b; - } - - if (y < 0) { - y = -y; - } - - return (log(y)); -} - -/* - * Asymptotic expansion for ln(|B(a, b)|) for a > ASYMP_FACTOR*max(|b|, 1). - */ -static double lbeta_asymp(double a, double b, int *sgn) -{ - double r = lgam_sgn(b, sgn); - r -= b * log(a); - - r += b*(1-b)/(2*a); - r += b*(1-b)*(1-2*b)/(12*a*a); - r += - b*b*(1-b)*(1-b)/(12*a*a*a); - - return r; -} - - -/* - * Special case for a negative integer argument - */ - -static double beta_negint(int a, double b) -{ - int sgn; - if (b == (int)b && 1 - a - b > 0) { - sgn = ((int)b % 2 == 0) ? 1 : -1; - return sgn * beta(1 - a - b, b); - } - else { - sf_error("lbeta", SF_ERROR_OVERFLOW, NULL); - return INFINITY; - } -} - -static double lbeta_negint(int a, double b) -{ - double r; - if (b == (int)b && 1 - a - b > 0) { - r = lbeta(1 - a - b, b); - return r; - } - else { - sf_error("lbeta", SF_ERROR_OVERFLOW, NULL); - return INFINITY; - } -} diff --git a/gtsam/3rdparty/cephes/cephes/btdtr.c b/gtsam/3rdparty/cephes/cephes/btdtr.c deleted file mode 100644 index fa115c7b70..0000000000 --- a/gtsam/3rdparty/cephes/cephes/btdtr.c +++ /dev/null @@ -1,59 +0,0 @@ - -/* btdtr.c - * - * Beta distribution - * - * - * - * SYNOPSIS: - * - * double a, b, x, y, btdtr(); - * - * y = btdtr( a, b, x ); - * - * - * - * DESCRIPTION: - * - * Returns the area from zero to x under the beta density - * function: - * - * - * x - * - - - * | (a+b) | | a-1 b-1 - * P(x) = ---------- | t (1-t) dt - * - - | | - * | (a) | (b) - - * 0 - * - * - * This function is identical to the incomplete beta - * integral function incbet(a, b, x). - * - * The complemented function is - * - * 1 - P(1-x) = incbet( b, a, x ); - * - * - * ACCURACY: - * - * See incbet.c. - * - */ - -/* btdtr() */ - - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987, 1995 by Stephen L. Moshier - */ - -#include "mconf.h" - -double btdtr(double a, double b, double x) -{ - - return (incbet(a, b, x)); -} diff --git a/gtsam/3rdparty/cephes/cephes/cbrt.c b/gtsam/3rdparty/cephes/cephes/cbrt.c deleted file mode 100644 index a83c078341..0000000000 --- a/gtsam/3rdparty/cephes/cephes/cbrt.c +++ /dev/null @@ -1,117 +0,0 @@ -/* cbrt.c - * - * Cube root - * - * - * - * SYNOPSIS: - * - * double x, y, cbrt(); - * - * y = cbrt( x ); - * - * - * - * DESCRIPTION: - * - * Returns the cube root of the argument, which may be negative. - * - * Range reduction involves determining the power of 2 of - * the argument. A polynomial of degree 2 applied to the - * mantissa, and multiplication by the cube root of 1, 2, or 4 - * approximates the root to within about 0.1%. Then Newton's - * iteration is used three times to converge to an accurate - * result. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,1e308 30000 1.5e-16 5.0e-17 - * - */ - /* cbrt.c */ - -/* - * Cephes Math Library Release 2.2: January, 1991 - * Copyright 1984, 1991 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - - -#include "mconf.h" - -static double CBRT2 = 1.2599210498948731647672; -static double CBRT4 = 1.5874010519681994747517; -static double CBRT2I = 0.79370052598409973737585; -static double CBRT4I = 0.62996052494743658238361; - -double cbrt(double x) -{ - int e, rem, sign; - double z; - - if (!cephes_isfinite(x)) - return x; - if (x == 0) - return (x); - if (x > 0) - sign = 1; - else { - sign = -1; - x = -x; - } - - z = x; - /* extract power of 2, leaving - * mantissa between 0.5 and 1 - */ - x = frexp(x, &e); - - /* Approximate cube root of number between .5 and 1, - * peak relative error = 9.2e-6 - */ - x = (((-1.3466110473359520655053e-1 * x - + 5.4664601366395524503440e-1) * x - - 9.5438224771509446525043e-1) * x - + 1.1399983354717293273738e0) * x + 4.0238979564544752126924e-1; - - /* exponent divided by 3 */ - if (e >= 0) { - rem = e; - e /= 3; - rem -= 3 * e; - if (rem == 1) - x *= CBRT2; - else if (rem == 2) - x *= CBRT4; - } - - - /* argument less than 1 */ - - else { - e = -e; - rem = e; - e /= 3; - rem -= 3 * e; - if (rem == 1) - x *= CBRT2I; - else if (rem == 2) - x *= CBRT4I; - e = -e; - } - - /* multiply by power of 2 */ - x = ldexp(x, e); - - /* Newton iteration */ - x -= (x - (z / (x * x))) * 0.33333333333333333333; - x -= (x - (z / (x * x))) * 0.33333333333333333333; - - if (sign < 0) - x = -x; - return (x); -} diff --git a/gtsam/3rdparty/cephes/cephes/chbevl.c b/gtsam/3rdparty/cephes/cephes/chbevl.c deleted file mode 100644 index a0e9c5c52a..0000000000 --- a/gtsam/3rdparty/cephes/cephes/chbevl.c +++ /dev/null @@ -1,81 +0,0 @@ -/* chbevl.c - * - * Evaluate Chebyshev series - * - * - * - * SYNOPSIS: - * - * int N; - * double x, y, coef[N], chebevl(); - * - * y = chbevl( x, coef, N ); - * - * - * - * DESCRIPTION: - * - * Evaluates the series - * - * N-1 - * - ' - * y = > coef[i] T (x/2) - * - i - * i=0 - * - * of Chebyshev polynomials Ti at argument x/2. - * - * Coefficients are stored in reverse order, i.e. the zero - * order term is last in the array. Note N is the number of - * coefficients, not the order. - * - * If coefficients are for the interval a to b, x must - * have been transformed to x -> 2(2x - b - a)/(b-a) before - * entering the routine. This maps x from (a, b) to (-1, 1), - * over which the Chebyshev polynomials are defined. - * - * If the coefficients are for the inverted interval, in - * which (a, b) is mapped to (1/b, 1/a), the transformation - * required is x -> 2(2ab/x - b - a)/(b-a). If b is infinity, - * this becomes x -> 4a/x - 1. - * - * - * - * SPEED: - * - * Taking advantage of the recurrence properties of the - * Chebyshev polynomials, the routine requires one more - * addition per loop than evaluating a nested polynomial of - * the same degree. - * - */ - /* chbevl.c */ - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1985, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" -#include - -double chbevl(double x, double array[], int n) -{ - double b0, b1, b2, *p; - int i; - - p = array; - b0 = *p++; - b1 = 0.0; - i = n - 1; - - do { - b2 = b1; - b1 = b0; - b0 = x * b1 - b2 + *p++; - } - while (--i); - - return (0.5 * (b0 - b2)); -} diff --git a/gtsam/3rdparty/cephes/cephes/chdtr.c b/gtsam/3rdparty/cephes/cephes/chdtr.c deleted file mode 100644 index d576e7a8db..0000000000 --- a/gtsam/3rdparty/cephes/cephes/chdtr.c +++ /dev/null @@ -1,186 +0,0 @@ -/* chdtr.c - * - * Chi-square distribution - * - * - * - * SYNOPSIS: - * - * double df, x, y, chdtr(); - * - * y = chdtr( df, x ); - * - * - * - * DESCRIPTION: - * - * Returns the area under the left hand tail (from 0 to x) - * of the Chi square probability density function with - * v degrees of freedom. - * - * - * inf. - * - - * 1 | | v/2-1 -t/2 - * P( x | v ) = ----------- | t e dt - * v/2 - | | - * 2 | (v/2) - - * x - * - * where x is the Chi-square variable. - * - * The incomplete Gamma integral is used, according to the - * formula - * - * y = chdtr( v, x ) = igam( v/2.0, x/2.0 ). - * - * - * The arguments must both be positive. - * - * - * - * ACCURACY: - * - * See igam(). - * - * ERROR MESSAGES: - * - * message condition value returned - * chdtr domain x < 0 or v < 1 0.0 - */ - /* chdtrc() - * - * Complemented Chi-square distribution - * - * - * - * SYNOPSIS: - * - * double v, x, y, chdtrc(); - * - * y = chdtrc( v, x ); - * - * - * - * DESCRIPTION: - * - * Returns the area under the right hand tail (from x to - * infinity) of the Chi square probability density function - * with v degrees of freedom: - * - * - * inf. - * - - * 1 | | v/2-1 -t/2 - * P( x | v ) = ----------- | t e dt - * v/2 - | | - * 2 | (v/2) - - * x - * - * where x is the Chi-square variable. - * - * The incomplete Gamma integral is used, according to the - * formula - * - * y = chdtr( v, x ) = igamc( v/2.0, x/2.0 ). - * - * - * The arguments must both be positive. - * - * - * - * ACCURACY: - * - * See igamc(). - * - * ERROR MESSAGES: - * - * message condition value returned - * chdtrc domain x < 0 or v < 1 0.0 - */ - /* chdtri() - * - * Inverse of complemented Chi-square distribution - * - * - * - * SYNOPSIS: - * - * double df, x, y, chdtri(); - * - * x = chdtri( df, y ); - * - * - * - * - * DESCRIPTION: - * - * Finds the Chi-square argument x such that the integral - * from x to infinity of the Chi-square density is equal - * to the given cumulative probability y. - * - * This is accomplished using the inverse Gamma integral - * function and the relation - * - * x/2 = igamci( df/2, y ); - * - * - * - * - * ACCURACY: - * - * See igami.c. - * - * ERROR MESSAGES: - * - * message condition value returned - * chdtri domain y < 0 or y > 1 0.0 - * v < 1 - * - */ - -/* chdtr() */ - - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -double chdtrc(double df, double x) -{ - - if (x < 0.0) - return 1.0; /* modified by T. Oliphant */ - return (igamc(df / 2.0, x / 2.0)); -} - - - -double chdtr(double df, double x) -{ - - if ((x < 0.0)) { /* || (df < 1.0) ) */ - sf_error("chdtr", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - return (igam(df / 2.0, x / 2.0)); -} - - - -double chdtri(double df, double y) -{ - double x; - - if ((y < 0.0) || (y > 1.0)) { /* || (df < 1.0) ) */ - sf_error("chdtri", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - x = igamci(0.5 * df, y); - return (2.0 * x); -} diff --git a/gtsam/3rdparty/cephes/cephes/dawsn.c b/gtsam/3rdparty/cephes/cephes/dawsn.c deleted file mode 100644 index 7049f191ed..0000000000 --- a/gtsam/3rdparty/cephes/cephes/dawsn.c +++ /dev/null @@ -1,160 +0,0 @@ -/* dawsn.c - * - * Dawson's Integral - * - * - * - * SYNOPSIS: - * - * double x, y, dawsn(); - * - * y = dawsn( x ); - * - * - * - * DESCRIPTION: - * - * Approximates the integral - * - * x - * - - * 2 | | 2 - * dawsn(x) = exp( -x ) | exp( t ) dt - * | | - * - - * 0 - * - * Three different rational approximations are employed, for - * the intervals 0 to 3.25; 3.25 to 6.25; and 6.25 up. - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,10 10000 6.9e-16 1.0e-16 - * - * - */ - -/* dawsn.c */ - - -/* - * Cephes Math Library Release 2.1: January, 1989 - * Copyright 1984, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" -/* Dawson's integral, interval 0 to 3.25 */ -static double AN[10] = { - 1.13681498971755972054E-11, - 8.49262267667473811108E-10, - 1.94434204175553054283E-8, - 9.53151741254484363489E-7, - 3.07828309874913200438E-6, - 3.52513368520288738649E-4, - -8.50149846724410912031E-4, - 4.22618223005546594270E-2, - -9.17480371773452345351E-2, - 9.99999999999999994612E-1, -}; - -static double AD[11] = { - 2.40372073066762605484E-11, - 1.48864681368493396752E-9, - 5.21265281010541664570E-8, - 1.27258478273186970203E-6, - 2.32490249820789513991E-5, - 3.25524741826057911661E-4, - 3.48805814657162590916E-3, - 2.79448531198828973716E-2, - 1.58874241960120565368E-1, - 5.74918629489320327824E-1, - 1.00000000000000000539E0, -}; - -/* interval 3.25 to 6.25 */ -static double BN[11] = { - 5.08955156417900903354E-1, - -2.44754418142697847934E-1, - 9.41512335303534411857E-2, - -2.18711255142039025206E-2, - 3.66207612329569181322E-3, - -4.23209114460388756528E-4, - 3.59641304793896631888E-5, - -2.14640351719968974225E-6, - 9.10010780076391431042E-8, - -2.40274520828250956942E-9, - 3.59233385440928410398E-11, -}; - -static double BD[10] = { - /* 1.00000000000000000000E0, */ - -6.31839869873368190192E-1, - 2.36706788228248691528E-1, - -5.31806367003223277662E-2, - 8.48041718586295374409E-3, - -9.47996768486665330168E-4, - 7.81025592944552338085E-5, - -4.55875153252442634831E-6, - 1.89100358111421846170E-7, - -4.91324691331920606875E-9, - 7.18466403235734541950E-11, -}; - -/* 6.25 to infinity */ -static double CN[5] = { - -5.90592860534773254987E-1, - 6.29235242724368800674E-1, - -1.72858975380388136411E-1, - 1.64837047825189632310E-2, - -4.86827613020462700845E-4, -}; - -static double CD[5] = { - /* 1.00000000000000000000E0, */ - -2.69820057197544900361E0, - 1.73270799045947845857E0, - -3.93708582281939493482E-1, - 3.44278924041233391079E-2, - -9.73655226040941223894E-4, -}; - -extern double MACHEP; - -double dawsn(double xx) -{ - double x, y; - int sign; - - - sign = 1; - if (xx < 0.0) { - sign = -1; - xx = -xx; - } - - if (xx < 3.25) { - x = xx * xx; - y = xx * polevl(x, AN, 9) / polevl(x, AD, 10); - return (sign * y); - } - - - x = 1.0 / (xx * xx); - - if (xx < 6.25) { - y = 1.0 / xx + x * polevl(x, BN, 10) / (p1evl(x, BD, 10) * xx); - return (sign * 0.5 * y); - } - - - if (xx > 1.0e9) - return ((sign * 0.5) / xx); - - /* 6.25 to infinity */ - y = 1.0 / xx + x * polevl(x, CN, 4) / (p1evl(x, CD, 5) * xx); - return (sign * 0.5 * y); -} diff --git a/gtsam/3rdparty/cephes/cephes/dd_idefs.h b/gtsam/3rdparty/cephes/cephes/dd_idefs.h deleted file mode 100644 index fec97c4780..0000000000 --- a/gtsam/3rdparty/cephes/cephes/dd_idefs.h +++ /dev/null @@ -1,198 +0,0 @@ -/* - * include/dd_inline.h - * - * This work was supported by the Director, Office of Science, Division - * of Mathematical, Information, and Computational Sciences of the - * U.S. Department of Energy under contract numbers DE-AC03-76SF00098 and - * DE-AC02-05CH11231. - * - * Copyright (c) 2003-2009, The Regents of the University of California, - * through Lawrence Berkeley National Laboratory (subject to receipt of - * any required approvals from U.S. Dept. of Energy) All rights reserved. - * - * By downloading or using this software you are agreeing to the modified - * BSD license "BSD-LBNL-License.doc" (see LICENSE.txt). - */ -/* - * Contains small functions (suitable for inlining) in the double-double - * arithmetic package. - */ - -#ifndef _DD_IDEFS_H_ -#define _DD_IDEFS_H_ 1 - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define _DD_SPLITTER 134217729.0 // = 2^27 + 1 -#define _DD_SPLIT_THRESH 6.69692879491417e+299 // = 2^996 - -/* - ************************************************************************ - The basic routines taking double arguments, returning 1 (or 2) doubles - ************************************************************************ -*/ - -/* Computes fl(a+b) and err(a+b). Assumes |a| >= |b|. */ -static inline double -quick_two_sum(double a, double b, double *err) -{ - volatile double s = a + b; - volatile double c = s - a; - *err = b - c; - return s; -} - -/* Computes fl(a-b) and err(a-b). Assumes |a| >= |b| */ -static inline double -quick_two_diff(double a, double b, double *err) -{ - volatile double s = a - b; - volatile double c = a - s; - *err = c - b; - return s; -} - -/* Computes fl(a+b) and err(a+b). */ -static inline double -two_sum(double a, double b, double *err) -{ - volatile double s = a + b; - volatile double c = s - a; - volatile double d = b - c; - volatile double e = s - c; - *err = (a - e) + d; - return s; -} - -/* Computes fl(a-b) and err(a-b). */ -static inline double -two_diff(double a, double b, double *err) -{ - volatile double s = a - b; - volatile double c = s - a; - volatile double d = b + c; - volatile double e = s - c; - *err = (a - e) - d; - return s; -} - -/* Computes high word and lo word of a */ -static inline void -two_split(double a, double *hi, double *lo) -{ - volatile double temp, tempma; - if (a > _DD_SPLIT_THRESH || a < -_DD_SPLIT_THRESH) { - a *= 3.7252902984619140625e-09; // 2^-28 - temp = _DD_SPLITTER * a; - tempma = temp - a; - *hi = temp - tempma; - *lo = a - *hi; - *hi *= 268435456.0; // 2^28 - *lo *= 268435456.0; // 2^28 - } - else { - temp = _DD_SPLITTER * a; - tempma = temp - a; - *hi = temp - tempma; - *lo = a - *hi; - } -} - -/* Computes fl(a*b) and err(a*b). */ -static inline double -two_prod(double a, double b, double *err) -{ -#ifdef DD_FMS - volatile double p = a * b; - *err = DD_FMS(a, b, p); - return p; -#else - double a_hi, a_lo, b_hi, b_lo; - double p = a * b; - volatile double c, d; - two_split(a, &a_hi, &a_lo); - two_split(b, &b_hi, &b_lo); - c = a_hi * b_hi - p; - d = c + a_hi * b_lo + a_lo * b_hi; - *err = d + a_lo * b_lo; - return p; -#endif /* DD_FMA */ -} - -/* Computes fl(a*a) and err(a*a). Faster than the above method. */ -static inline double -two_sqr(double a, double *err) -{ -#ifdef DD_FMS - volatile double p = a * a; - *err = DD_FMS(a, a, p); - return p; -#else - double hi, lo; - volatile double c; - double q = a * a; - two_split(a, &hi, &lo); - c = hi * hi - q; - *err = (c + 2.0 * hi * lo) + lo * lo; - return q; -#endif /* DD_FMS */ -} - -static inline double -two_div(double a, double b, double *err) -{ - volatile double q1, q2; - double p1, p2; - double s, e; - - q1 = a / b; - - /* Compute a - q1 * b */ - p1 = two_prod(q1, b, &p2); - s = two_diff(a, p1, &e); - e -= p2; - - /* get next approximation */ - q2 = (s + e) / b; - - return quick_two_sum(q1, q2, err); -} - -/* Computes the nearest integer to d. */ -static inline double -two_nint(double d) -{ - if (d == floor(d)) { - return d; - } - return floor(d + 0.5); -} - -/* Computes the truncated integer. */ -static inline double -two_aint(double d) -{ - return (d >= 0.0 ? floor(d) : ceil(d)); -} - - -/* Compare a and b */ -static inline int -two_comp(const double a, const double b) -{ - /* Works for non-NAN inputs */ - return (a < b ? -1 : (a > b ? 1 : 0)); -} - - -#ifdef __cplusplus -} -#endif - -#endif /* _DD_IDEFS_H_ */ diff --git a/gtsam/3rdparty/cephes/cephes/dd_real.c b/gtsam/3rdparty/cephes/cephes/dd_real.c deleted file mode 100644 index c37f57a7b9..0000000000 --- a/gtsam/3rdparty/cephes/cephes/dd_real.c +++ /dev/null @@ -1,587 +0,0 @@ -/* - * src/double2.cc - * - * This work was supported by the Director, Office of Science, Division - * of Mathematical, Information, and Computational Sciences of the - * U.S. Department of Energy under contract numbers DE-AC03-76SF00098 and - * DE-AC02-05CH11231. - * - * Copyright (c) 2003-2009, The Regents of the University of California, - * through Lawrence Berkeley National Laboratory (subject to receipt of - * any required approvals from U.S. Dept. of Energy) All rights reserved. - * - * By downloading or using this software you are agreeing to the modified - * BSD license "BSD-LBNL-License.doc" (see LICENSE.txt). - */ -/* - * Contains implementation of non-inlined functions of double-double - * package. Inlined functions are found in dd_real_inline.h. - */ - -/* - * This code taken from v2.3.18 of the qd package. -*/ - - -#include -#include -#include -#include - -#include "dd_real.h" - -#define _DD_REAL_INIT(A, B) {{A, B}} - -const double DD_C_EPS = 4.93038065763132e-32; // 2^-104 -const double DD_C_MIN_NORMALIZED = 2.0041683600089728e-292; // = 2^(-1022 + 53) - -/* Compile-time initialization of const double2 structs */ - -const double2 DD_C_MAX = - _DD_REAL_INIT(1.79769313486231570815e+308, 9.97920154767359795037e+291); -const double2 DD_C_SAFE_MAX = - _DD_REAL_INIT(1.7976931080746007281e+308, 9.97920154767359795037e+291); -const int _DD_C_NDIGITS = 31; - -const double2 DD_C_ZERO = _DD_REAL_INIT(0.0, 0.0); -const double2 DD_C_ONE = _DD_REAL_INIT(1.0, 0.0); -const double2 DD_C_NEGONE = _DD_REAL_INIT(-1.0, 0.0); - -const double2 DD_C_2PI = - _DD_REAL_INIT(6.283185307179586232e+00, 2.449293598294706414e-16); -const double2 DD_C_PI = - _DD_REAL_INIT(3.141592653589793116e+00, 1.224646799147353207e-16); -const double2 DD_C_PI2 = - _DD_REAL_INIT(1.570796326794896558e+00, 6.123233995736766036e-17); -const double2 DD_C_PI4 = - _DD_REAL_INIT(7.853981633974482790e-01, 3.061616997868383018e-17); -const double2 DD_C_PI16 = - _DD_REAL_INIT(1.963495408493620697e-01, 7.654042494670957545e-18); -const double2 DD_C_3PI4 = - _DD_REAL_INIT(2.356194490192344837e+00, 9.1848509936051484375e-17); - -const double2 DD_C_E = - _DD_REAL_INIT(2.718281828459045091e+00, 1.445646891729250158e-16); -const double2 DD_C_LOG2 = - _DD_REAL_INIT(6.931471805599452862e-01, 2.319046813846299558e-17); -const double2 DD_C_LOG10 = - _DD_REAL_INIT(2.302585092994045901e+00, -2.170756223382249351e-16); - -#ifdef DD_C_NAN_IS_CONST -const double2 DD_C_NAN = _DD_REAL_INIT(NAN, NAN); -const double2 DD_C_INF = _DD_REAL_INIT(INFINITY, INFINITY); -const double2 DD_C_NEGINF = _DD_REAL_INIT(-INFINITY, -INFINITY); -#endif /* NAN */ - - -/* This routine is called whenever a fatal error occurs. */ -static volatile int errCount = 0; -void -dd_error(const char *msg) -{ - errCount++; - /* if (msg) { */ - /* fprintf(stderr, "ERROR %s\n", msg); */ - /* } */ -} - - -int -get_double_expn(double x) -{ - int i = 0; - double y; - if (x == 0.0) { - return INT_MIN; - } - if (isinf(x) || isnan(x)) { - return INT_MAX; - } - - y = fabs(x); - if (y < 1.0) { - while (y < 1.0) { - y *= 2.0; - i++; - } - return -i; - } else if (y >= 2.0) { - while (y >= 2.0) { - y *= 0.5; - i++; - } - return i; - } - return 0; -} - -/* ######################################################################## */ -/* # Exponentiation */ -/* ######################################################################## */ - -/* Computes the square root of the double-double number dd. - NOTE: dd must be a non-negative number. */ - -double2 -dd_sqrt(const double2 a) -{ - /* Strategy: Use Karp's trick: if x is an approximation - to sqrt(a), then - - sqrt(a) = a*x + [a - (a*x)^2] * x / 2 (approx) - - The approximation is accurate to twice the accuracy of x. - Also, the multiplication (a*x) and [-]*x can be done with - only half the precision. - */ - double x, ax; - - if (dd_is_zero(a)) - return DD_C_ZERO; - - if (dd_is_negative(a)) { - dd_error("(dd_sqrt): Negative argument."); - return DD_C_NAN; - } - - x = 1.0 / sqrt(a.x[0]); - ax = a.x[0] * x; - return dd_add_d_d(ax, dd_sub(a, dd_sqr_d(ax)).x[0] * (x * 0.5)); -} - -/* Computes the square root of a double in double-double precision. - NOTE: d must not be negative. */ - -double2 -dd_sqrt_d(double d) -{ - return dd_sqrt(dd_create_d(d)); -} - -/* Computes the n-th root of the double-double number a. - NOTE: n must be a positive integer. - NOTE: If n is even, then a must not be negative. */ - -double2 -dd_nroot(const double2 a, int n) -{ - /* Strategy: Use Newton iteration for the function - - f(x) = x^(-n) - a - - to find its root a^{-1/n}. The iteration is thus - - x' = x + x * (1 - a * x^n) / n - - which converges quadratically. We can then find - a^{1/n} by taking the reciprocal. - */ - double2 r, x; - - if (n <= 0) { - dd_error("(dd_nroot): N must be positive."); - return DD_C_NAN; - } - - if (n % 2 == 0 && dd_is_negative(a)) { - dd_error("(dd_nroot): Negative argument."); - return DD_C_NAN; - } - - if (n == 1) { - return a; - } - if (n == 2) { - return dd_sqrt(a); - } - - if (dd_is_zero(a)) - return DD_C_ZERO; - - /* Note a^{-1/n} = exp(-log(a)/n) */ - r = dd_abs(a); - x = dd_create_d(exp(-log(r.x[0]) / n)); - - /* Perform Newton's iteration. */ - x = dd_add( - x, dd_mul(x, dd_sub_d_dd(1.0, dd_div_dd_d(dd_mul(r, dd_npwr(x, n)), - DD_STATIC_CAST(double, n))))); - if (a.x[0] < 0.0) { - x = dd_neg(x); - } - return dd_inv(x); -} - -/* Computes the n-th power of a double-double number. - NOTE: 0^0 causes an error. */ - -double2 -dd_npwr(const double2 a, int n) -{ - double2 r = a; - double2 s = DD_C_ONE; - int N = abs(n); - if (N == 0) { - if (dd_is_zero(a)) { - dd_error("(dd_npwr): Invalid argument."); - return DD_C_NAN; - } - return DD_C_ONE; - } - - if (N > 1) { - /* Use binary exponentiation */ - while (N > 0) { - if (N % 2 == 1) { - s = dd_mul(s, r); - } - N /= 2; - if (N > 0) { - r = dd_sqr(r); - } - } - } - else { - s = r; - } - - /* Compute the reciprocal if n is negative. */ - if (n < 0) { - return dd_inv(s); - } - - return s; -} - -double2 -dd_npow(const double2 a, int n) -{ - return dd_npwr(a, n); -} - -double2 -dd_pow(const double2 a, const double2 b) -{ - return dd_exp(dd_mul(b, dd_log(a))); -} - -/* ######################################################################## */ -/* # Exp/Log functions */ -/* ######################################################################## */ - -static const double2 inv_fact[] = { - {{1.66666666666666657e-01, 9.25185853854297066e-18}}, - {{4.16666666666666644e-02, 2.31296463463574266e-18}}, - {{8.33333333333333322e-03, 1.15648231731787138e-19}}, - {{1.38888888888888894e-03, -5.30054395437357706e-20}}, - {{1.98412698412698413e-04, 1.72095582934207053e-22}}, - {{2.48015873015873016e-05, 2.15119478667758816e-23}}, - {{2.75573192239858925e-06, -1.85839327404647208e-22}}, - {{2.75573192239858883e-07, 2.37677146222502973e-23}}, - {{2.50521083854417202e-08, -1.44881407093591197e-24}}, - {{2.08767569878681002e-09, -1.20734505911325997e-25}}, - {{1.60590438368216133e-10, 1.25852945887520981e-26}}, - {{1.14707455977297245e-11, 2.06555127528307454e-28}}, - {{7.64716373181981641e-13, 7.03872877733453001e-30}}, - {{4.77947733238738525e-14, 4.39920548583408126e-31}}, - {{2.81145725434552060e-15, 1.65088427308614326e-31}} -}; -//static const int n_inv_fact = sizeof(inv_fact) / sizeof(inv_fact[0]); - -/* Exponential. Computes exp(x) in double-double precision. */ - -double2 -dd_exp(const double2 a) -{ - /* Strategy: We first reduce the size of x by noting that - - exp(kr + m * log(2)) = 2^m * exp(r)^k - - where m and k are integers. By choosing m appropriately - we can make |kr| <= log(2) / 2 = 0.347. Then exp(r) is - evaluated using the familiar Taylor series. Reducing the - argument substantially speeds up the convergence. */ - - const double k = 512.0; - const double inv_k = 1.0 / k; - double m; - double2 r, s, t, p; - int i = 0; - - if (a.x[0] <= -709.0) { - return DD_C_ZERO; - } - - if (a.x[0] >= 709.0) { - return DD_C_INF; - } - - if (dd_is_zero(a)) { - return DD_C_ONE; - } - - if (dd_is_one(a)) { - return DD_C_E; - } - - m = floor(a.x[0] / DD_C_LOG2.x[0] + 0.5); - r = dd_mul_pwr2(dd_sub(a, dd_mul_dd_d(DD_C_LOG2, m)), inv_k); - - p = dd_sqr(r); - s = dd_add(r, dd_mul_pwr2(p, 0.5)); - p = dd_mul(p, r); - t = dd_mul(p, inv_fact[0]); - do { - s = dd_add(s, t); - p = dd_mul(p, r); - ++i; - t = dd_mul(p, inv_fact[i]); - } while (fabs(dd_to_double(t)) > inv_k * DD_C_EPS && i < 5); - - s = dd_add(s, t); - - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(dd_mul_pwr2(s, 2.0), dd_sqr(s)); - s = dd_add(s, DD_C_ONE); - - return dd_ldexp(s, DD_STATIC_CAST(int, m)); -} - -double2 -dd_exp_d(const double a) -{ - return dd_exp(dd_create(a, 0)); -} - - -/* Logarithm. Computes log(x) in double-double precision. - This is a natural logarithm (i.e., base e). */ -double2 -dd_log(const double2 a) -{ - /* Strategy. The Taylor series for log converges much more - slowly than that of exp, due to the lack of the factorial - term in the denominator. Hence this routine instead tries - to determine the root of the function - - f(x) = exp(x) - a - - using Newton iteration. The iteration is given by - - x' = x - f(x)/f'(x) - = x - (1 - a * exp(-x)) - = x + a * exp(-x) - 1. - - Only one iteration is needed, since Newton's iteration - approximately doubles the number of digits per iteration. */ - double2 x; - - if (dd_is_one(a)) { - return DD_C_ZERO; - } - - if (a.x[0] <= 0.0) { - dd_error("(dd_log): Non-positive argument."); - return DD_C_NAN; - } - - x = dd_create_d(log(a.x[0])); /* Initial approximation */ - - /* x = x + a * exp(-x) - 1.0; */ - x = dd_add(x, dd_sub(dd_mul(a, dd_exp(dd_neg(x))), DD_C_ONE)); - return x; -} - - -double2 -dd_log1p(const double2 a) -{ - double2 ans; - double la, elam1, ll; - if (a.x[0] <= -1.0) { - return DD_C_NEGINF; - } - la = log1p(a.x[0]); - elam1 = expm1(la); - ll = log1p(a.x[1] / (1 + a.x[0])); - if (a.x[0] > 0) { - ll -= (elam1 - a.x[0])/(elam1+1); - } - ans = dd_add_d_d(la, ll); - return ans; -} - -double2 -dd_log10(const double2 a) -{ - return dd_div(dd_log(a), DD_C_LOG10); -} - -double2 -dd_log_d(double a) -{ - return dd_log(dd_create(a, 0)); -} - - -static const double2 expm1_numer[] = { - {{-0.028127670288085938, 1.46e-37}}, - {{0.5127815691121048, -4.248816580490825e-17}}, - {{-0.0632631785207471, 4.733650586348708e-18}}, - {{0.01470328560687425, -4.57569727474415e-20}}, - {{-0.0008675686051689528, 2.340010361165805e-20}}, - {{8.812635961829116e-05, 2.619804163788941e-21}}, - {{-2.596308786770631e-06, -1.6196413688647164e-22}}, - {{1.422669108780046e-07, 1.2956999470135368e-23}}, - {{-1.5995603306536497e-09, 5.185121944095551e-26}}, - {{4.526182006900779e-11, -1.9856249941108077e-27}} -}; - -static const double2 expm1_denom[] = { - {{1.0, 0.0}}, - {{-0.4544126470907431, -2.2553855773661143e-17}}, - {{0.09682713193619222, -4.961446925746919e-19}}, - {{-0.012745248725908178, -6.0676821249478945e-19}}, - {{0.001147361387158326, 1.3575817248483204e-20}}, - {{-7.370416847725892e-05, 3.720369981570573e-21}}, - {{3.4087499397791556e-06, -3.3067348191741576e-23}}, - {{-1.1114024704296196e-07, -3.313361038199987e-24}}, - {{2.3987051614110847e-09, 1.102474920537503e-25}}, - {{-2.947734185911159e-11, -9.4795654767864e-28}}, - {{1.32220659910223e-13, 6.440648413523595e-30}} -}; - -// -// Rational approximation of expm1(x) for -1/2 < x < 1/2 -// -static double2 -expm1_rational_approx(const double2 x) -{ - const double2 Y = dd_create(1.028127670288086, 0.0); - const double2 num = dd_polyeval(expm1_numer, 9, x); - const double2 den = dd_polyeval(expm1_denom, 10, x); - return dd_add(dd_mul(x, Y), dd_mul(x, dd_div(num, den))); -} - -// -// This is a translation of Boost's `expm1_imp` for quad precision -// for use with double2. -// - -#define LOG_MAX_VALUE 709.782712893384 - -double2 -dd_expm1(const double2 x) -{ - double2 a = dd_abs(x); - if (dd_hi(a) > 0.5) { - if (dd_hi(a) > LOG_MAX_VALUE) { - if (dd_hi(x) > 0) { - return DD_C_INF; - } - return DD_C_NEGONE; - } - return dd_sub_dd_d(dd_exp(x), 1.0); - } - return expm1_rational_approx(x); -} - - -double2 -dd_rand(void) -{ - static const double m_const = 4.6566128730773926e-10; /* = 2^{-31} */ - double m = m_const; - double2 r = DD_C_ZERO; - double d; - int i; - - /* Strategy: Generate 31 bits at a time, using lrand48 - random number generator. Shift the bits, and reapeat - 4 times. */ - - for (i = 0; i < 4; i++, m *= m_const) { - // d = lrand48() * m; - d = rand() * m; - r = dd_add_dd_d(r, d); - } - - return r; -} - -/* dd_polyeval(c, n, x) - Evaluates the given n-th degree polynomial at x. - The polynomial is given by the array of (n+1) coefficients. */ - -double2 -dd_polyeval(const double2 *c, int n, const double2 x) -{ - /* Just use Horner's method of polynomial evaluation. */ - double2 r = c[n]; - int i; - - for (i = n - 1; i >= 0; i--) { - r = dd_mul(r, x); - r = dd_add(r, c[i]); - } - - return r; -} - -/* dd_polyroot(c, n, x0) - Given an n-th degree polynomial, finds a root close to - the given guess x0. Note that this uses simple Newton - iteration scheme, and does not work for multiple roots. */ - -double2 -dd_polyroot(const double2 *c, int n, const double2 x0, int max_iter, - double thresh) -{ - double2 x = x0; - double2 f; - double2 *d = DD_STATIC_CAST(double2 *, calloc(sizeof(double2), n)); - int conv = 0; - int i; - double max_c = fabs(dd_to_double(c[0])); - double v; - - if (thresh == 0.0) { - thresh = DD_C_EPS; - } - - /* Compute the coefficients of the derivatives. */ - for (i = 1; i <= n; i++) { - v = fabs(dd_to_double(c[i])); - if (v > max_c) { - max_c = v; - } - d[i - 1] = dd_mul_dd_d(c[i], DD_STATIC_CAST(double, i)); - } - thresh *= max_c; - - /* Newton iteration. */ - for (i = 0; i < max_iter; i++) { - f = dd_polyeval(c, n, x); - - if (fabs(dd_to_double(f)) < thresh) { - conv = 1; - break; - } - x = dd_sub(x, (dd_div(f, dd_polyeval(d, n - 1, x)))); - } - free(d); - - if (!conv) { - dd_error("(dd_polyroot): Failed to converge."); - return DD_C_NAN; - } - - return x; -} diff --git a/gtsam/3rdparty/cephes/cephes/dd_real.h b/gtsam/3rdparty/cephes/cephes/dd_real.h deleted file mode 100644 index 4e09da1432..0000000000 --- a/gtsam/3rdparty/cephes/cephes/dd_real.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * include/double2.h - * - * This work was supported by the Director, Office of Science, Division - * of Mathematical, Information, and Computational Sciences of the - * U.S. Department of Energy under contract numbers DE-AC03-76SF00098 and - * DE-AC02-05CH11231. - * - * Copyright (c) 2003-2009, The Regents of the University of California, - * through Lawrence Berkeley National Laboratory (subject to receipt of - * any required approvals from U.S. Dept. of Energy) All rights reserved. - * - * By downloading or using this software you are agreeing to the modified - * BSD license "BSD-LBNL-License.doc" (see LICENSE.txt). - */ -/* - * Double-double precision (>= 106-bit significand) floating point - * arithmetic package based on David Bailey's Fortran-90 double-double - * package, with some changes. See - * - * http://www.nersc.gov/~dhbailey/mpdist/mpdist.html - * - * for the original Fortran-90 version. - * - * Overall structure is similar to that of Keith Brigg's C++ double-double - * package. See - * - * http://www-epidem.plansci.cam.ac.uk/~kbriggs/doubledouble.html - * - * for more details. In particular, the fix for x86 computers is borrowed - * from his code. - * - * Yozo Hida - */ - -#ifndef _DD_REAL_H -#define _DD_REAL_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Some configuration defines */ - -/* If fast fused multiply-add is available, define to the correct macro for - using it. It is invoked as DD_FMA(a, b, c) to compute fl(a * b + c). - If correctly rounded multiply-add is not available (or if unsure), - keep it undefined. */ -#ifndef DD_FMA -#ifdef FP_FAST_FMA -#define DD_FMA(A, B, C) fma((A), (B), (C)) -#endif -#endif - -/* Same with fused multiply-subtract */ -#ifndef DD_FMS -#ifdef FP_FAST_FMA -#define DD_FMS(A, B, C) fma((A), (B), (-C)) -#endif -#endif - -#ifdef __cplusplus -#define DD_STATIC_CAST(T, X) (static_cast(X)) -#else -#define DD_STATIC_CAST(T, X) ((T)(X)) -#endif - -/* double2 struct definition, some external always-present double2 constants. -*/ -typedef struct double2 -{ - double x[2]; -} double2; - -extern const double DD_C_EPS; -extern const double DD_C_MIN_NORMALIZED; -extern const double2 DD_C_MAX; -extern const double2 DD_C_SAFE_MAX; -extern const int DD_C_NDIGITS; - -extern const double2 DD_C_2PI; -extern const double2 DD_C_PI; -extern const double2 DD_C_3PI4; -extern const double2 DD_C_PI2; -extern const double2 DD_C_PI4; -extern const double2 DD_C_PI16; -extern const double2 DD_C_E; -extern const double2 DD_C_LOG2; -extern const double2 DD_C_LOG10; -extern const double2 DD_C_ZERO; -extern const double2 DD_C_ONE; -extern const double2 DD_C_NEGONE; - -/* NAN definition in AIX's math.h doesn't make it qualify as constant literal. */ -#if defined(__STDC__) && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && defined(NAN) && !defined(_AIX) -#define DD_C_NAN_IS_CONST -extern const double2 DD_C_NAN; -extern const double2 DD_C_INF; -extern const double2 DD_C_NEGINF; -#else -#define DD_C_NAN (dd_create(NAN, NAN)) -#define DD_C_INF (dd_create(INFINITY, INFINITY)) -#define DD_C_NEGINF (dd_create(-INFINITY, -INFINITY)) -#endif - - -/* Include the inline definitions of functions */ -#include "dd_real_idefs.h" - -/* Non-inline functions */ - -/********** Exponentiation **********/ -double2 dd_npwr(const double2 a, int n); - -/*********** Transcendental Functions ************/ -double2 dd_exp(const double2 a); -double2 dd_log(const double2 a); -double2 dd_expm1(const double2 a); -double2 dd_log1p(const double2 a); -double2 dd_log10(const double2 a); -double2 dd_log_d(double a); - -/* Returns the exponent of the double precision number. - Returns INT_MIN is x is zero, and INT_MAX if x is INF or NaN. */ -int get_double_expn(double x); - -/*********** Polynomial Functions ************/ -double2 dd_polyeval(const double2 *c, int n, const double2 x); - -/*********** Random number generator ************/ -extern double2 dd_rand(void); - - -#ifdef __cplusplus -} -#endif - - -#endif /* _DD_REAL_H */ diff --git a/gtsam/3rdparty/cephes/cephes/dd_real_idefs.h b/gtsam/3rdparty/cephes/cephes/dd_real_idefs.h deleted file mode 100644 index d2b9ac1d65..0000000000 --- a/gtsam/3rdparty/cephes/cephes/dd_real_idefs.h +++ /dev/null @@ -1,557 +0,0 @@ -/* - * include/dd_inline.h - * - * This work was supported by the Director, Office of Science, Division - * of Mathematical, Information, and Computational Sciences of the - * U.S. Department of Energy under contract numbers DE-AC03-76SF00098 and - * DE-AC02-05CH11231. - * - * Copyright (c) 2003-2009, The Regents of the University of California, - * through Lawrence Berkeley National Laboratory (subject to receipt of - * any required approvals from U.S. Dept. of Energy) All rights reserved. - * - * By downloading or using this software you are agreeing to the modified - * BSD license "BSD-LBNL-License.doc" (see LICENSE.txt). - */ -/* - * Contains small functions (suitable for inlining) in the double-double - * arithmetic package. - */ - -#ifndef _DD_REAL_IDEFS_H_ -#define _DD_REAL_IDEFS_H_ 1 - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include "dd_idefs.h" - -/* - ************************************************************************ - Now for the double2 routines - ************************************************************************ -*/ - -static inline double -dd_hi(const double2 a) -{ - return a.x[0]; -} - -static inline double -dd_lo(const double2 a) -{ - return a.x[1]; -} - -static inline int -dd_isfinite(const double2 a) -{ - return isfinite(a.x[0]); -} - -static inline int -dd_isinf(const double2 a) -{ - return isinf(a.x[0]); -} - -static inline int -dd_is_zero(const double2 a) -{ - return (a.x[0] == 0.0); -} - -static inline int -dd_is_one(const double2 a) -{ - return (a.x[0] == 1.0 && a.x[1] == 0.0); -} - -static inline int -dd_is_positive(const double2 a) -{ - return (a.x[0] > 0.0); -} - -static inline int -dd_is_negative(const double2 a) -{ - return (a.x[0] < 0.0); -} - -/* Cast to double. */ -static inline double -dd_to_double(const double2 a) -{ - return a.x[0]; -} - -/* Cast to int. */ -static inline int -dd_to_int(const double2 a) -{ - return DD_STATIC_CAST(int, a.x[0]); -} - -/*********** Equality and Other Comparisons ************/ -static inline int -dd_comp(const double2 a, const double2 b) -{ - int cmp = two_comp(a.x[0], b.x[0]); - if (cmp == 0) { - cmp = two_comp(a.x[1], b.x[1]); - } - return cmp; -} - -static inline int -dd_comp_dd_d(const double2 a, double b) -{ - int cmp = two_comp(a.x[0], b); - if (cmp == 0) { - cmp = two_comp(a.x[1], 0); - } - return cmp; -} - -static inline int -dd_comp_d_dd(double a, const double2 b) -{ - int cmp = two_comp(a, b.x[0]); - if (cmp == 0) { - cmp = two_comp(0.0, b.x[1]); - } - return cmp; -} - - -/*********** Creation ************/ -static inline double2 -dd_create(double hi, double lo) -{ - double2 ret = {{hi, lo}}; - return ret; -} - -static inline double2 -dd_zero(void) -{ - return DD_C_ZERO; -} - -static inline double2 -dd_create_d(double hi) -{ - double2 ret = {{hi, 0.0}}; - return ret; -} - -static inline double2 -dd_create_i(int hi) -{ - double2 ret = {{DD_STATIC_CAST(double, hi), 0.0}}; - return ret; -} - -static inline double2 -dd_create_dp(const double *d) -{ - double2 ret = {{d[0], d[1]}}; - return ret; -} - - -/*********** Unary Minus ***********/ -static inline double2 -dd_neg(const double2 a) -{ - double2 ret = {{-a.x[0], -a.x[1]}}; - return ret; -} - -/*********** Rounding ************/ -/* Round to Nearest integer */ -static inline double2 -dd_nint(const double2 a) -{ - double hi = two_nint(a.x[0]); - double lo; - - if (hi == a.x[0]) { - /* High word is an integer already. Round the low word.*/ - lo = two_nint(a.x[1]); - - /* Renormalize. This is needed if x[0] = some integer, x[1] = 1/2.*/ - hi = quick_two_sum(hi, lo, &lo); - } - else { - /* High word is not an integer. */ - lo = 0.0; - if (fabs(hi - a.x[0]) == 0.5 && a.x[1] < 0.0) { - /* There is a tie in the high word, consult the low word - to break the tie. */ - hi -= 1.0; /* NOTE: This does not cause INEXACT. */ - } - } - - return dd_create(hi, lo); -} - -static inline double2 -dd_floor(const double2 a) -{ - double hi = floor(a.x[0]); - double lo = 0.0; - - if (hi == a.x[0]) { - /* High word is integer already. Round the low word. */ - lo = floor(a.x[1]); - hi = quick_two_sum(hi, lo, &lo); - } - - return dd_create(hi, lo); -} - -static inline double2 -dd_ceil(const double2 a) -{ - double hi = ceil(a.x[0]); - double lo = 0.0; - - if (hi == a.x[0]) { - /* High word is integer already. Round the low word. */ - lo = ceil(a.x[1]); - hi = quick_two_sum(hi, lo, &lo); - } - - return dd_create(hi, lo); -} - -static inline double2 -dd_aint(const double2 a) -{ - return (a.x[0] >= 0.0) ? dd_floor(a) : dd_ceil(a); -} - -/* Absolute value */ -static inline double2 -dd_abs(const double2 a) -{ - return (a.x[0] < 0.0 ? dd_neg(a) : a); -} - -static inline double2 -dd_fabs(const double2 a) -{ - return dd_abs(a); -} - - -/*********** Normalizing ***********/ -/* double-double * (2.0 ^ expt) */ -static inline double2 -dd_ldexp(const double2 a, int expt) -{ - return dd_create(ldexp(a.x[0], expt), ldexp(a.x[1], expt)); -} - -static inline double2 -dd_frexp(const double2 a, int *expt) -{ -// r"""return b and l s.t. 0.5<=|b|<1 and 2^l == a -// 0.5<=|b[0]|<1.0 or |b[0]| == 1.0 and b[0]*b[1]<0 -// """ - int exponent; - double man = frexp(a.x[0], &exponent); - double b1 = ldexp(a.x[1], -exponent); - if (fabs(man) == 0.5 && man * b1 < 0) - { - man *=2; - b1 *= 2; - exponent -= 1; - } - *expt = exponent; - return dd_create(man, b1); -} - - -/*********** Additions ************/ -static inline double2 -dd_add_d_d(double a, double b) -{ - double s, e; - s = two_sum(a, b, &e); - return dd_create(s, e); -} - -static inline double2 -dd_add_dd_d(const double2 a, double b) -{ - double s1, s2; - s1 = two_sum(a.x[0], b, &s2); - s2 += a.x[1]; - s1 = quick_two_sum(s1, s2, &s2); - return dd_create(s1, s2); -} - -static inline double2 -dd_add_d_dd(double a, const double2 b) -{ - double s1, s2; - s1 = two_sum(a, b.x[0], &s2); - s2 += b.x[1]; - s1 = quick_two_sum(s1, s2, &s2); - return dd_create(s1, s2); -} - -static inline double2 -dd_ieee_add(const double2 a, const double2 b) -{ - /* This one satisfies IEEE style error bound, - due to K. Briggs and W. Kahan. */ - double s1, s2, t1, t2; - - s1 = two_sum(a.x[0], b.x[0], &s2); - t1 = two_sum(a.x[1], b.x[1], &t2); - s2 += t1; - s1 = quick_two_sum(s1, s2, &s2); - s2 += t2; - s1 = quick_two_sum(s1, s2, &s2); - return dd_create(s1, s2); -} - -static inline double2 -dd_sloppy_add(const double2 a, const double2 b) -{ - /* This is the less accurate version ... obeys Cray-style - error bound. */ - double s, e; - - s = two_sum(a.x[0], b.x[0], &e); - e += (a.x[1] + b.x[1]); - s = quick_two_sum(s, e, &e); - return dd_create(s, e); -} - -static inline double2 -dd_add(const double2 a, const double2 b) -{ - /* Always require IEEE-style error bounds */ - return dd_ieee_add(a, b); -} - -/*********** Subtractions ************/ -/* double-double = double - double */ -static inline double2 -dd_sub_d_d(double a, double b) -{ - double s, e; - s = two_diff(a, b, &e); - return dd_create(s, e); -} - -static inline double2 -dd_sub(const double2 a, const double2 b) -{ - return dd_ieee_add(a, dd_neg(b)); -} - -static inline double2 -dd_sub_dd_d(const double2 a, double b) -{ - double s1, s2; - s1 = two_sum(a.x[0], -b, &s2); - s2 += a.x[1]; - s1 = quick_two_sum(s1, s2, &s2); - return dd_create(s1, s2); -} - -static inline double2 -dd_sub_d_dd(double a, const double2 b) -{ - double s1, s2; - s1 = two_sum(a, -b.x[0], &s2); - s2 -= b.x[1]; - s1 = quick_two_sum(s1, s2, &s2); - return dd_create(s1, s2); -} - - -/*********** Multiplications ************/ -/* double-double = double * double */ -static inline double2 -dd_mul_d_d(double a, double b) -{ - double p, e; - p = two_prod(a, b, &e); - return dd_create(p, e); -} - -/* double-double * double, where double is a power of 2. */ -static inline double2 -dd_mul_pwr2(const double2 a, double b) -{ - return dd_create(a.x[0] * b, a.x[1] * b); -} - -static inline double2 -dd_mul(const double2 a, const double2 b) -{ - double p1, p2; - p1 = two_prod(a.x[0], b.x[0], &p2); - p2 += (a.x[0] * b.x[1] + a.x[1] * b.x[0]); - p1 = quick_two_sum(p1, p2, &p2); - return dd_create(p1, p2); -} - -static inline double2 -dd_mul_dd_d(const double2 a, double b) -{ - double p1, p2, e1, e2; - p1 = two_prod(a.x[0], b, &e1); - p2 = two_prod(a.x[1], b, &e2); - p1 = quick_two_sum(p1, e2 + p2 + e1, &e1); - return dd_create(p1, e1); -} - -static inline double2 -dd_mul_d_dd(double a, const double2 b) -{ - double p1, p2, e1, e2; - p1 = two_prod(a, b.x[0], &e1); - p2 = two_prod(a, b.x[1], &e2); - p1 = quick_two_sum(p1, e2 + p2 + e1, &e1); - return dd_create(p1, e1); -} - - -/*********** Divisions ************/ -static inline double2 -dd_sloppy_div(const double2 a, const double2 b) -{ - double s1, s2; - double q1, q2; - double2 r; - - q1 = a.x[0] / b.x[0]; /* approximate quotient */ - - /* compute this - q1 * dd */ - r = dd_sub(a, dd_mul_dd_d(b, q1)); - s1 = two_diff(a.x[0], r.x[0], &s2); - s2 -= r.x[1]; - s2 += a.x[1]; - - /* get next approximation */ - q2 = (s1 + s2) / b.x[0]; - - /* renormalize */ - r.x[0] = quick_two_sum(q1, q2, &r.x[1]); - return r; -} - -static inline double2 -dd_accurate_div(const double2 a, const double2 b) -{ - double q1, q2, q3; - double2 r; - - q1 = a.x[0] / b.x[0]; /* approximate quotient */ - - r = dd_sub(a, dd_mul_dd_d(b, q1)); - - q2 = r.x[0] / b.x[0]; - r = dd_sub(r, dd_mul_dd_d(b, q2)); - - q3 = r.x[0] / b.x[0]; - - q1 = quick_two_sum(q1, q2, &q2); - r = dd_add_dd_d(dd_create(q1, q2), q3); - return r; -} - -static inline double2 -dd_div(const double2 a, const double2 b) -{ - return dd_accurate_div(a, b); -} - -static inline double2 -dd_div_d_d(double a, double b) -{ - return dd_accurate_div(dd_create_d(a), dd_create_d(b)); -} - -static inline double2 -dd_div_dd_d(const double2 a, double b) -{ - return dd_accurate_div(a, dd_create_d(b)); -} - -static inline double2 -dd_div_d_dd(double a, const double2 b) -{ - return dd_accurate_div(dd_create_d(a), b); -} - -static inline double2 -dd_inv(const double2 a) -{ - return dd_div(DD_C_ONE, a); -} - - -/********** Remainder **********/ -static inline double2 -dd_drem(const double2 a, const double2 b) -{ - double2 n = dd_nint(dd_div(a, b)); - return dd_sub(a, dd_mul(n, b)); -} - -static inline double2 -dd_divrem(const double2 a, const double2 b, double2 *r) -{ - double2 n = dd_nint(dd_div(a, b)); - *r = dd_sub(a, dd_mul(n, b)); - return n; -} - -static inline double2 -dd_fmod(const double2 a, const double2 b) -{ - double2 n = dd_aint(dd_div(a, b)); - return dd_sub(a, dd_mul(b, n)); -} - -/*********** Squaring **********/ -static inline double2 -dd_sqr(const double2 a) -{ - double p1, p2; - double s1, s2; - p1 = two_sqr(a.x[0], &p2); - p2 += 2.0 * a.x[0] * a.x[1]; - p2 += a.x[1] * a.x[1]; - s1 = quick_two_sum(p1, p2, &s2); - return dd_create(s1, s2); -} - -static inline double2 -dd_sqr_d(double a) -{ - double p1, p2; - p1 = two_sqr(a, &p2); - return dd_create(p1, p2); -} - -#ifdef __cplusplus -} -#endif - -#endif /* _DD_REAL_IDEFS_H_ */ diff --git a/gtsam/3rdparty/cephes/cephes/ellie.c b/gtsam/3rdparty/cephes/cephes/ellie.c deleted file mode 100644 index 8a2823f3a0..0000000000 --- a/gtsam/3rdparty/cephes/cephes/ellie.c +++ /dev/null @@ -1,282 +0,0 @@ -/* ellie.c - * - * Incomplete elliptic integral of the second kind - * - * - * - * SYNOPSIS: - * - * double phi, m, y, ellie(); - * - * y = ellie( phi, m ); - * - * - * - * DESCRIPTION: - * - * Approximates the integral - * - * - * phi - * - - * | | - * | 2 - * E(phi_\m) = | sqrt( 1 - m sin t ) dt - * | - * | | - * - - * 0 - * - * of amplitude phi and modulus m, using the arithmetic - - * geometric mean algorithm. - * - * - * - * ACCURACY: - * - * Tested at random arguments with phi in [-10, 10] and m in - * [0, 1]. - * Relative error: - * arithmetic domain # trials peak rms - * IEEE -10,10 150000 3.3e-15 1.4e-16 - */ - - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987, 1993 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ -/* Copyright 2014, Eric W. Moore */ - -/* Incomplete elliptic integral of second kind */ - -#include "mconf.h" - -extern double MACHEP; - -static double ellie_neg_m(double phi, double m); - -double ellie(double phi, double m) -{ - double a, b, c, e, temp; - double lphi, t, E, denom, npio2; - int d, mod, sign; - - if (cephes_isnan(phi) || cephes_isnan(m)) - return NAN; - if (m > 1.0) - return NAN; - if (cephes_isinf(phi)) - return phi; - if (cephes_isinf(m)) - return -m; - if (m == 0.0) - return (phi); - lphi = phi; - npio2 = floor(lphi / M_PI_2); - if (fmod(fabs(npio2), 2.0) == 1.0) - npio2 += 1; - lphi = lphi - npio2 * M_PI_2; - if (lphi < 0.0) { - lphi = -lphi; - sign = -1; - } - else { - sign = 1; - } - a = 1.0 - m; - E = ellpe(m); - if (a == 0.0) { - temp = sin(lphi); - goto done; - } - if (a > 1.0) { - temp = ellie_neg_m(lphi, m); - goto done; - } - - if (lphi < 0.135) { - double m11= (((((-7.0/2816.0)*m + (5.0/1056.0))*m - (7.0/2640.0))*m - + (17.0/41580.0))*m - (1.0/155925.0))*m; - double m9 = ((((-5.0/1152.0)*m + (1.0/144.0))*m - (1.0/360.0))*m - + (1.0/5670.0))*m; - double m7 = ((-m/112.0 + (1.0/84.0))*m - (1.0/315.0))*m; - double m5 = (-m/40.0 + (1.0/30))*m; - double m3 = -m/6.0; - double p2 = lphi * lphi; - - temp = ((((m11*p2 + m9)*p2 + m7)*p2 + m5)*p2 + m3)*p2*lphi + lphi; - goto done; - } - t = tan(lphi); - b = sqrt(a); - /* Thanks to Brian Fitzgerald - * for pointing out an instability near odd multiples of pi/2. */ - if (fabs(t) > 10.0) { - /* Transform the amplitude */ - e = 1.0 / (b * t); - /* ... but avoid multiple recursions. */ - if (fabs(e) < 10.0) { - e = atan(e); - temp = E + m * sin(lphi) * sin(e) - ellie(e, m); - goto done; - } - } - c = sqrt(m); - a = 1.0; - d = 1; - e = 0.0; - mod = 0; - - while (fabs(c / a) > MACHEP) { - temp = b / a; - lphi = lphi + atan(t * temp) + mod * M_PI; - denom = 1 - temp * t * t; - if (fabs(denom) > 10*MACHEP) { - t = t * (1.0 + temp) / denom; - mod = (lphi + M_PI_2) / M_PI; - } - else { - t = tan(lphi); - mod = (int)floor((lphi - atan(t))/M_PI); - } - c = (a - b) / 2.0; - temp = sqrt(a * b); - a = (a + b) / 2.0; - b = temp; - d += d; - e += c * sin(lphi); - } - - temp = E / ellpk(1.0 - m); - temp *= (atan(t) + mod * M_PI) / (d * a); - temp += e; - - done: - - if (sign < 0) - temp = -temp; - temp += npio2 * E; - return (temp); -} - -/* N.B. This will evaluate its arguments multiple times. */ -#define MAX3(a, b, c) (a > b ? (a > c ? a : c) : (b > c ? b : c)) - -/* To calculate legendre's incomplete elliptical integral of the second kind for - * negative m, we use a power series in phi for small m*phi*phi, an asymptotic - * series in m for large m*phi*phi* and the relation to Carlson's symmetric - * integrals, R_F(x,y,z) and R_D(x,y,z). - * - * E(phi, m) = sin(phi) * R_F(cos(phi)^2, 1 - m * sin(phi)^2, 1.0) - * - m * sin(phi)^3 * R_D(cos(phi)^2, 1 - m * sin(phi)^2, 1.0) / 3 - * - * = R_F(c-1, c-m, c) - m * R_D(c-1, c-m, c) / 3 - * - * where c = csc(phi)^2. We use the second form of this for (approximately) - * phi > 1/(sqrt(DBL_MAX) ~ 1e-154, where csc(phi)^2 overflows. Elsewhere we - * use the first form, accounting for the smallness of phi. - * - * The algorithm used is described in Carlson, B. C. Numerical computation of - * real or complex elliptic integrals. (1994) https://arxiv.org/abs/math/9409227 - * Most variable names reflect Carlson's usage. - * - * In this routine, we assume m < 0 and 0 > phi > pi/2. - */ -double ellie_neg_m(double phi, double m) -{ - double x, y, z, x1, y1, z1, ret, Q; - double A0f, Af, Xf, Yf, Zf, E2f, E3f, scalef; - double A0d, Ad, seriesn, seriesd, Xd, Yd, Zd, E2d, E3d, E4d, E5d, scaled; - int n = 0; - double mpp = (m*phi)*phi; - - if (-mpp < 1e-6 && phi < -m) { - return phi + (mpp*phi*phi/30.0 - mpp*mpp/40.0 - mpp/6.0)*phi; - } - - if (-mpp > 1e6) { - double sm = sqrt(-m); - double sp = sin(phi); - double cp = cos(phi); - - double a = -cosm1(phi); - double b1 = log(4*sp*sm/(1+cp)); - double b = -(0.5 + b1) / 2.0 / m; - double c = (0.75 + cp/sp/sp - b1) / 16.0 / m / m; - return (a + b + c) * sm; - } - - if (phi > 1e-153 && m > -1e200) { - double s = sin(phi); - double csc2 = 1.0 / s / s; - scalef = 1.0; - scaled = m / 3.0; - x = 1.0 / tan(phi) / tan(phi); - y = csc2 - m; - z = csc2; - } - else { - scalef = phi; - scaled = mpp * phi / 3.0; - x = 1.0; - y = 1 - mpp; - z = 1.0; - } - - if (x == y && x == z) { - return (scalef + scaled/x)/sqrt(x); - } - - A0f = (x + y + z) / 3.0; - Af = A0f; - A0d = (x + y + 3.0*z) / 5.0; - Ad = A0d; - x1 = x; y1 = y; z1 = z; seriesd = 0.0; seriesn = 1.0; - /* Carlson gives 1/pow(3*r, 1.0/6.0) for this constant. if r == eps, - * it is ~338.38. */ - Q = 400.0 * MAX3(fabs(A0f-x), fabs(A0f-y), fabs(A0f-z)); - - while (Q > fabs(Af) && Q > fabs(Ad) && n <= 100) { - double sx = sqrt(x1); - double sy = sqrt(y1); - double sz = sqrt(z1); - double lam = sx*sy + sx*sz + sy*sz; - seriesd += seriesn / (sz * (z1 + lam)); - x1 = (x1 + lam) / 4.0; - y1 = (y1 + lam) / 4.0; - z1 = (z1 + lam) / 4.0; - Af = (x1 + y1 + z1) / 3.0; - Ad = (Ad + lam) / 4.0; - n += 1; - Q /= 4.0; - seriesn /= 4.0; - } - - Xf = (A0f - x) / Af / (1 << 2*n); - Yf = (A0f - y) / Af / (1 << 2*n); - Zf = -(Xf + Yf); - - E2f = Xf*Yf - Zf*Zf; - E3f = Xf*Yf*Zf; - - ret = scalef * (1.0 - E2f/10.0 + E3f/14.0 + E2f*E2f/24.0 - - 3.0*E2f*E3f/44.0) / sqrt(Af); - - Xd = (A0d - x) / Ad / (1 << 2*n); - Yd = (A0d - y) / Ad / (1 << 2*n); - Zd = -(Xd + Yd)/3.0; - - E2d = Xd*Yd - 6.0*Zd*Zd; - E3d = (3*Xd*Yd - 8.0*Zd*Zd)*Zd; - E4d = 3.0*(Xd*Yd - Zd*Zd)*Zd*Zd; - E5d = Xd*Yd*Zd*Zd*Zd; - - ret -= scaled * (1.0 - 3.0*E2d/14.0 + E3d/6.0 + 9.0*E2d*E2d/88.0 - - 3.0*E4d/22.0 - 9.0*E2d*E3d/52.0 + 3.0*E5d/26.0) - /(1 << 2*n) / Ad / sqrt(Ad); - ret -= 3.0 * scaled * seriesd; - return ret; -} - diff --git a/gtsam/3rdparty/cephes/cephes/ellik.c b/gtsam/3rdparty/cephes/cephes/ellik.c deleted file mode 100644 index ee73e062a2..0000000000 --- a/gtsam/3rdparty/cephes/cephes/ellik.c +++ /dev/null @@ -1,246 +0,0 @@ -/* ellik.c - * - * Incomplete elliptic integral of the first kind - * - * - * - * SYNOPSIS: - * - * double phi, m, y, ellik(); - * - * y = ellik( phi, m ); - * - * - * - * DESCRIPTION: - * - * Approximates the integral - * - * - * - * phi - * - - * | | - * | dt - * F(phi | m) = | ------------------ - * | 2 - * | | sqrt( 1 - m sin t ) - * - - * 0 - * - * of amplitude phi and modulus m, using the arithmetic - - * geometric mean algorithm. - * - * - * - * - * ACCURACY: - * - * Tested at random points with m in [0, 1] and phi as indicated. - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE -10,10 200000 7.4e-16 1.0e-16 - * - * - */ - - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ -/* Copyright 2014, Eric W. Moore */ - -/* Incomplete elliptic integral of first kind */ - -#include "mconf.h" -extern double MACHEP; - -static double ellik_neg_m(double phi, double m); - -double ellik(double phi, double m) -{ - double a, b, c, e, temp, t, K, denom, npio2; - int d, mod, sign; - - if (cephes_isnan(phi) || cephes_isnan(m)) - return NAN; - if (m > 1.0) - return NAN; - if (cephes_isinf(phi) || cephes_isinf(m)) - { - if (cephes_isinf(m) && cephes_isfinite(phi)) - return 0.0; - else if (cephes_isinf(phi) && cephes_isfinite(m)) - return phi; - else - return NAN; - } - if (m == 0.0) - return (phi); - a = 1.0 - m; - if (a == 0.0) { - if (fabs(phi) >= (double)M_PI_2) { - sf_error("ellik", SF_ERROR_SINGULAR, NULL); - return (INFINITY); - } - /* DLMF 19.6.8, and 4.23.42 */ - return asinh(tan(phi)); - } - npio2 = floor(phi / M_PI_2); - if (fmod(fabs(npio2), 2.0) == 1.0) - npio2 += 1; - if (npio2 != 0.0) { - K = ellpk(a); - phi = phi - npio2 * M_PI_2; - } - else - K = 0.0; - if (phi < 0.0) { - phi = -phi; - sign = -1; - } - else - sign = 0; - if (a > 1.0) { - temp = ellik_neg_m(phi, m); - goto done; - } - b = sqrt(a); - t = tan(phi); - if (fabs(t) > 10.0) { - /* Transform the amplitude */ - e = 1.0 / (b * t); - /* ... but avoid multiple recursions. */ - if (fabs(e) < 10.0) { - e = atan(e); - if (npio2 == 0) - K = ellpk(a); - temp = K - ellik(e, m); - goto done; - } - } - a = 1.0; - c = sqrt(m); - d = 1; - mod = 0; - - while (fabs(c / a) > MACHEP) { - temp = b / a; - phi = phi + atan(t * temp) + mod * M_PI; - denom = 1.0 - temp * t * t; - if (fabs(denom) > 10*MACHEP) { - t = t * (1.0 + temp) / denom; - mod = (phi + M_PI_2) / M_PI; - } - else { - t = tan(phi); - mod = (int)floor((phi - atan(t))/M_PI); - } - c = (a - b) / 2.0; - temp = sqrt(a * b); - a = (a + b) / 2.0; - b = temp; - d += d; - } - - temp = (atan(t) + mod * M_PI) / (d * a); - - done: - if (sign < 0) - temp = -temp; - temp += npio2 * K; - return (temp); -} - -/* N.B. This will evaluate its arguments multiple times. */ -#define MAX3(a, b, c) (a > b ? (a > c ? a : c) : (b > c ? b : c)) - -/* To calculate legendre's incomplete elliptical integral of the first kind for - * negative m, we use a power series in phi for small m*phi*phi, an asymptotic - * series in m for large m*phi*phi* and the relation to Carlson's symmetric - * integral of the first kind. - * - * F(phi, m) = sin(phi) * R_F(cos(phi)^2, 1 - m * sin(phi)^2, 1.0) - * = R_F(c-1, c-m, c) - * - * where c = csc(phi)^2. We use the second form of this for (approximately) - * phi > 1/(sqrt(DBL_MAX) ~ 1e-154, where csc(phi)^2 overflows. Elsewhere we - * use the first form, accounting for the smallness of phi. - * - * The algorithm used is described in Carlson, B. C. Numerical computation of - * real or complex elliptic integrals. (1994) https://arxiv.org/abs/math/9409227 - * Most variable names reflect Carlson's usage. - * - * In this routine, we assume m < 0 and 0 > phi > pi/2. - */ -double ellik_neg_m(double phi, double m) -{ - double x, y, z, x1, y1, z1, A0, A, Q, X, Y, Z, E2, E3, scale; - int n = 0; - double mpp = (m*phi)*phi; - - if (-mpp < 1e-6 && phi < -m) { - return phi + (-mpp*phi*phi/30.0 + 3.0*mpp*mpp/40.0 + mpp/6.0)*phi; - } - - if (-mpp > 4e7) { - double sm = sqrt(-m); - double sp = sin(phi); - double cp = cos(phi); - - double a = log(4*sp*sm/(1+cp)); - double b = -(1 + cp/sp/sp - a) / 4 / m; - return (a + b) / sm; - } - - if (phi > 1e-153 && m > -1e305) { - double s = sin(phi); - double csc2 = 1.0 / (s*s); - scale = 1.0; - x = 1.0 / (tan(phi) * tan(phi)); - y = csc2 - m; - z = csc2; - } - else { - scale = phi; - x = 1.0; - y = 1 - m*scale*scale; - z = 1.0; - } - - if (x == y && x == z) { - return scale / sqrt(x); - } - - A0 = (x + y + z) / 3.0; - A = A0; - x1 = x; y1 = y; z1 = z; - /* Carlson gives 1/pow(3*r, 1.0/6.0) for this constant. if r == eps, - * it is ~338.38. */ - Q = 400.0 * MAX3(fabs(A0-x), fabs(A0-y), fabs(A0-z)); - - while (Q > fabs(A) && n <= 100) { - double sx = sqrt(x1); - double sy = sqrt(y1); - double sz = sqrt(z1); - double lam = sx*sy + sx*sz + sy*sz; - x1 = (x1 + lam) / 4.0; - y1 = (y1 + lam) / 4.0; - z1 = (z1 + lam) / 4.0; - A = (x1 + y1 + z1) / 3.0; - n += 1; - Q /= 4; - } - X = (A0 - x) / A / (1 << 2*n); - Y = (A0 - y) / A / (1 << 2*n); - Z = -(X + Y); - - E2 = X*Y - Z*Z; - E3 = X*Y*Z; - - return scale * (1.0 - E2/10.0 + E3/14.0 + E2*E2/24.0 - - 3.0*E2*E3/44.0) / sqrt(A); -} diff --git a/gtsam/3rdparty/cephes/cephes/ellpe.c b/gtsam/3rdparty/cephes/cephes/ellpe.c deleted file mode 100644 index 1ef8e0c128..0000000000 --- a/gtsam/3rdparty/cephes/cephes/ellpe.c +++ /dev/null @@ -1,108 +0,0 @@ -/* ellpe.c - * - * Complete elliptic integral of the second kind - * - * - * - * SYNOPSIS: - * - * double m, y, ellpe(); - * - * y = ellpe( m ); - * - * - * - * DESCRIPTION: - * - * Approximates the integral - * - * - * pi/2 - * - - * | | 2 - * E(m) = | sqrt( 1 - m sin t ) dt - * | | - * - - * 0 - * - * Where m = 1 - m1, using the approximation - * - * P(x) - x log x Q(x). - * - * Though there are no singularities, the argument m1 is used - * internally rather than m for compatibility with ellpk(). - * - * E(1) = 1; E(0) = pi/2. - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 1 10000 2.1e-16 7.3e-17 - * - * - * ERROR MESSAGES: - * - * message condition value returned - * ellpe domain x<0, x>1 0.0 - * - */ - -/* ellpe.c */ - -/* Elliptic integral of second kind */ - -/* - * Cephes Math Library, Release 2.1: February, 1989 - * Copyright 1984, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - * - * Feb, 2002: altered by Travis Oliphant - * so that it is called with argument m - * (which gets immediately converted to m1 = 1-m) - */ - -#include "mconf.h" - -static double P[] = { - 1.53552577301013293365E-4, - 2.50888492163602060990E-3, - 8.68786816565889628429E-3, - 1.07350949056076193403E-2, - 7.77395492516787092951E-3, - 7.58395289413514708519E-3, - 1.15688436810574127319E-2, - 2.18317996015557253103E-2, - 5.68051945617860553470E-2, - 4.43147180560990850618E-1, - 1.00000000000000000299E0 -}; - -static double Q[] = { - 3.27954898576485872656E-5, - 1.00962792679356715133E-3, - 6.50609489976927491433E-3, - 1.68862163993311317300E-2, - 2.61769742454493659583E-2, - 3.34833904888224918614E-2, - 4.27180926518931511717E-2, - 5.85936634471101055642E-2, - 9.37499997197644278445E-2, - 2.49999999999888314361E-1 -}; - -double ellpe(double x) -{ - x = 1.0 - x; - if (x <= 0.0) { - if (x == 0.0) - return (1.0); - sf_error("ellpe", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - if (x > 1.0) { - return ellpe(1.0 - 1/x) * sqrt(x); - } - return (polevl(x, P, 10) - log(x) * (x * polevl(x, Q, 9))); -} diff --git a/gtsam/3rdparty/cephes/cephes/ellpj.c b/gtsam/3rdparty/cephes/cephes/ellpj.c deleted file mode 100644 index 6891a8244c..0000000000 --- a/gtsam/3rdparty/cephes/cephes/ellpj.c +++ /dev/null @@ -1,154 +0,0 @@ -/* ellpj.c - * - * Jacobian Elliptic Functions - * - * - * - * SYNOPSIS: - * - * double u, m, sn, cn, dn, phi; - * int ellpj(); - * - * ellpj( u, m, _&sn, _&cn, _&dn, _&phi ); - * - * - * - * DESCRIPTION: - * - * - * Evaluates the Jacobian elliptic functions sn(u|m), cn(u|m), - * and dn(u|m) of parameter m between 0 and 1, and real - * argument u. - * - * These functions are periodic, with quarter-period on the - * real axis equal to the complete elliptic integral - * ellpk(m). - * - * Relation to incomplete elliptic integral: - * If u = ellik(phi,m), then sn(u|m) = sin(phi), - * and cn(u|m) = cos(phi). Phi is called the amplitude of u. - * - * Computation is by means of the arithmetic-geometric mean - * algorithm, except when m is within 1e-9 of 0 or 1. In the - * latter case with m close to 1, the approximation applies - * only for phi < pi/2. - * - * ACCURACY: - * - * Tested at random points with u between 0 and 10, m between - * 0 and 1. - * - * Absolute error (* = relative error): - * arithmetic function # trials peak rms - * IEEE phi 10000 9.2e-16* 1.4e-16* - * IEEE sn 50000 4.1e-15 4.6e-16 - * IEEE cn 40000 3.6e-15 4.4e-16 - * IEEE dn 10000 1.3e-12 1.8e-14 - * - * Peak error observed in consistency check using addition - * theorem for sn(u+v) was 4e-16 (absolute). Also tested by - * the above relation to the incomplete elliptic integral. - * Accuracy deteriorates when u is large. - * - */ - -/* ellpj.c */ - - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -/* Scipy changes: - * - 07-18-2016: improve evaluation of dn near quarter periods - */ - -#include "mconf.h" -extern double MACHEP; - -int ellpj(double u, double m, double *sn, double *cn, double *dn, double *ph) -{ - double ai, b, phi, t, twon, dnfac; - double a[9], c[9]; - int i; - - /* Check for special cases */ - if (m < 0.0 || m > 1.0 || cephes_isnan(m)) { - sf_error("ellpj", SF_ERROR_DOMAIN, NULL); - *sn = NAN; - *cn = NAN; - *ph = NAN; - *dn = NAN; - return (-1); - } - if (m < 1.0e-9) { - t = sin(u); - b = cos(u); - ai = 0.25 * m * (u - t * b); - *sn = t - ai * b; - *cn = b + ai * t; - *ph = u - ai; - *dn = 1.0 - 0.5 * m * t * t; - return (0); - } - if (m >= 0.9999999999) { - ai = 0.25 * (1.0 - m); - b = cosh(u); - t = tanh(u); - phi = 1.0 / b; - twon = b * sinh(u); - *sn = t + ai * (twon - u) / (b * b); - *ph = 2.0 * atan(exp(u)) - M_PI_2 + ai * (twon - u) / b; - ai *= t * phi; - *cn = phi - ai * (twon - u); - *dn = phi + ai * (twon + u); - return (0); - } - - /* A. G. M. scale. See DLMF 22.20(ii) */ - a[0] = 1.0; - b = sqrt(1.0 - m); - c[0] = sqrt(m); - twon = 1.0; - i = 0; - - while (fabs(c[i] / a[i]) > MACHEP) { - if (i > 7) { - sf_error("ellpj", SF_ERROR_OVERFLOW, NULL); - goto done; - } - ai = a[i]; - ++i; - c[i] = (ai - b) / 2.0; - t = sqrt(ai * b); - a[i] = (ai + b) / 2.0; - b = t; - twon *= 2.0; - } - - done: - /* backward recurrence */ - phi = twon * a[i] * u; - do { - t = c[i] * sin(phi) / a[i]; - b = phi; - phi = (asin(t) + phi) / 2.0; - } - while (--i); - - *sn = sin(phi); - t = cos(phi); - *cn = t; - dnfac = cos(phi - b); - /* See discussion after DLMF 22.20.5 */ - if (fabs(dnfac) < 0.1) { - *dn = sqrt(1 - m*(*sn)*(*sn)); - } - else { - *dn = t / dnfac; - } - *ph = phi; - return (0); -} diff --git a/gtsam/3rdparty/cephes/cephes/ellpk.c b/gtsam/3rdparty/cephes/cephes/ellpk.c deleted file mode 100644 index 3842a7403a..0000000000 --- a/gtsam/3rdparty/cephes/cephes/ellpk.c +++ /dev/null @@ -1,124 +0,0 @@ -/* ellpk.c - * - * Complete elliptic integral of the first kind - * - * - * - * SYNOPSIS: - * - * double m1, y, ellpk(); - * - * y = ellpk( m1 ); - * - * - * - * DESCRIPTION: - * - * Approximates the integral - * - * - * - * pi/2 - * - - * | | - * | dt - * K(m) = | ------------------ - * | 2 - * | | sqrt( 1 - m sin t ) - * - - * 0 - * - * where m = 1 - m1, using the approximation - * - * P(x) - log x Q(x). - * - * The argument m1 is used internally rather than m so that the logarithmic - * singularity at m = 1 will be shifted to the origin; this - * preserves maximum accuracy. - * - * K(0) = pi/2. - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,1 30000 2.5e-16 6.8e-17 - * - * ERROR MESSAGES: - * - * message condition value returned - * ellpk domain x<0, x>1 0.0 - * - */ - -/* ellpk.c */ - - -/* - * Cephes Math Library, Release 2.0: April, 1987 - * Copyright 1984, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -static double P[] = { - 1.37982864606273237150E-4, - 2.28025724005875567385E-3, - 7.97404013220415179367E-3, - 9.85821379021226008714E-3, - 6.87489687449949877925E-3, - 6.18901033637687613229E-3, - 8.79078273952743772254E-3, - 1.49380448916805252718E-2, - 3.08851465246711995998E-2, - 9.65735902811690126535E-2, - 1.38629436111989062502E0 -}; - -static double Q[] = { - 2.94078955048598507511E-5, - 9.14184723865917226571E-4, - 5.94058303753167793257E-3, - 1.54850516649762399335E-2, - 2.39089602715924892727E-2, - 3.01204715227604046988E-2, - 3.73774314173823228969E-2, - 4.88280347570998239232E-2, - 7.03124996963957469739E-2, - 1.24999999999870820058E-1, - 4.99999999999999999821E-1 -}; - -static double C1 = 1.3862943611198906188E0; /* log(4) */ - -extern double MACHEP; - -double ellpk(double x) -{ - - if (x < 0.0) { - sf_error("ellpk", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - if (x > 1.0) { - if (cephes_isinf(x)) { - return 0.0; - } - return ellpk(1/x)/sqrt(x); - } - - if (x > MACHEP) { - return (polevl(x, P, 10) - log(x) * polevl(x, Q, 10)); - } - else { - if (x == 0.0) { - sf_error("ellpk", SF_ERROR_SINGULAR, NULL); - return (INFINITY); - } - else { - return (C1 - 0.5 * log(x)); - } - } -} diff --git a/gtsam/3rdparty/cephes/cephes/erfinv.c b/gtsam/3rdparty/cephes/cephes/erfinv.c deleted file mode 100644 index f7f49284c1..0000000000 --- a/gtsam/3rdparty/cephes/cephes/erfinv.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * mconf configures NANS, INFINITYs etc. for cephes and includes some standard - * headers. Although erfinv and erfcinv are not defined in cephes, erf and erfc - * are. We want to keep the behaviour consistent for the inverse functions and - * so need to include mconf. - */ -#include "mconf.h" - -/* - * Inverse of the error function. - * - * Computes the inverse of the error function on the restricted domain - * -1 < y < 1. This restriction ensures the existence of a unique result - * such that erf(erfinv(y)) = y. - */ -double erfinv(double y) { - const double domain_lb = -1; - const double domain_ub = 1; - - const double thresh = 1e-7; - - /* - * For small arguments, use the Taylor expansion - * erf(y) = 2/\sqrt{\pi} (y - y^3 / 3 + O(y^5)), y\to 0 - * where we only retain the linear term. - * Otherwise, y + 1 loses precision for |y| << 1. - */ - if ((-thresh < y) && (y < thresh)){ - return y / M_2_SQRTPI; - } - if ((domain_lb < y) && (y < domain_ub)) { - return ndtri(0.5 * (y+1)) * M_SQRT1_2; - } - else if (y == domain_lb) { - return -INFINITY; - } - else if (y == domain_ub) { - return INFINITY; - } - else if (cephes_isnan(y)) { - sf_error("erfinv", SF_ERROR_DOMAIN, NULL); - return y; - } - else { - sf_error("erfinv", SF_ERROR_DOMAIN, NULL); - return NAN; - } -} - -/* - * Inverse of the complementary error function. - * - * Computes the inverse of the complimentary error function on the restricted - * domain 0 < y < 2. This restriction ensures the existence of a unique result - * such that erfc(erfcinv(y)) = y. - */ -double erfcinv(double y) { - const double domain_lb = 0; - const double domain_ub = 2; - - if ((domain_lb < y) && (y < domain_ub)) { - return -ndtri(0.5 * y) * M_SQRT1_2; - } - else if (y == domain_lb) { - return INFINITY; - } - else if (y == domain_ub) { - return -INFINITY; - } - else if (cephes_isnan(y)) { - sf_error("erfcinv", SF_ERROR_DOMAIN, NULL); - return y; - } - else { - sf_error("erfcinv", SF_ERROR_DOMAIN, NULL); - return NAN; - } -} diff --git a/gtsam/3rdparty/cephes/cephes/exp10.c b/gtsam/3rdparty/cephes/cephes/exp10.c deleted file mode 100644 index 0a71d3c52f..0000000000 --- a/gtsam/3rdparty/cephes/cephes/exp10.c +++ /dev/null @@ -1,115 +0,0 @@ -/* exp10.c - * - * Base 10 exponential function - * (Common antilogarithm) - * - * - * - * SYNOPSIS: - * - * double x, y, exp10(); - * - * y = exp10( x ); - * - * - * - * DESCRIPTION: - * - * Returns 10 raised to the x power. - * - * Range reduction is accomplished by expressing the argument - * as 10**x = 2**n 10**f, with |f| < 0.5 log10(2). - * The Pade' form - * - * 1 + 2x P(x**2)/( Q(x**2) - P(x**2) ) - * - * is used to approximate 10**f. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE -307,+307 30000 2.2e-16 5.5e-17 - * - * ERROR MESSAGES: - * - * message condition value returned - * exp10 underflow x < -MAXL10 0.0 - * exp10 overflow x > MAXL10 INFINITY - * - * IEEE arithmetic: MAXL10 = 308.2547155599167. - * - */ - -/* - * Cephes Math Library Release 2.2: January, 1991 - * Copyright 1984, 1991 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - - -#include "mconf.h" - -static double P[] = { - 4.09962519798587023075E-2, - 1.17452732554344059015E1, - 4.06717289936872725516E2, - 2.39423741207388267439E3, -}; - -static double Q[] = { - /* 1.00000000000000000000E0, */ - 8.50936160849306532625E1, - 1.27209271178345121210E3, - 2.07960819286001865907E3, -}; - -/* static double LOG102 = 3.01029995663981195214e-1; */ -static double LOG210 = 3.32192809488736234787e0; -static double LG102A = 3.01025390625000000000E-1; -static double LG102B = 4.60503898119521373889E-6; - -/* static double MAXL10 = 38.230809449325611792; */ -static double MAXL10 = 308.2547155599167; - -double exp10(double x) -{ - double px, xx; - short n; - - if (cephes_isnan(x)) - return (x); - if (x > MAXL10) { - return (INFINITY); - } - - if (x < -MAXL10) { /* Would like to use MINLOG but can't */ - sf_error("exp10", SF_ERROR_UNDERFLOW, NULL); - return (0.0); - } - - /* Express 10**x = 10**g 2**n - * = 10**g 10**( n log10(2) ) - * = 10**( g + n log10(2) ) - */ - px = floor(LOG210 * x + 0.5); - n = px; - x -= px * LG102A; - x -= px * LG102B; - - /* rational approximation for exponential - * of the fractional part: - * 10**x = 1 + 2x P(x**2)/( Q(x**2) - P(x**2) ) - */ - xx = x * x; - px = x * polevl(xx, P, 3); - x = px / (p1evl(xx, Q, 3) - px); - x = 1.0 + ldexp(x, 1); - - /* multiply by power of 2 */ - x = ldexp(x, n); - - return (x); -} diff --git a/gtsam/3rdparty/cephes/cephes/exp2.c b/gtsam/3rdparty/cephes/cephes/exp2.c deleted file mode 100644 index 14911f59c0..0000000000 --- a/gtsam/3rdparty/cephes/cephes/exp2.c +++ /dev/null @@ -1,108 +0,0 @@ -/* exp2.c - * - * Base 2 exponential function - * - * - * - * SYNOPSIS: - * - * double x, y, exp2(); - * - * y = exp2( x ); - * - * - * - * DESCRIPTION: - * - * Returns 2 raised to the x power. - * - * Range reduction is accomplished by separating the argument - * into an integer k and fraction f such that - * x k f - * 2 = 2 2. - * - * A Pade' form - * - * 1 + 2x P(x**2) / (Q(x**2) - x P(x**2) ) - * - * approximates 2**x in the basic range [-0.5, 0.5]. - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE -1022,+1024 30000 1.8e-16 5.4e-17 - * - * - * See exp.c for comments on error amplification. - * - * - * ERROR MESSAGES: - * - * message condition value returned - * exp underflow x < -MAXL2 0.0 - * exp overflow x > MAXL2 INFINITY - * - * For IEEE arithmetic, MAXL2 = 1024. - */ - - -/* - * Cephes Math Library Release 2.3: March, 1995 - * Copyright 1984, 1995 by Stephen L. Moshier - */ - - - -#include "mconf.h" - -static double P[] = { - 2.30933477057345225087E-2, - 2.02020656693165307700E1, - 1.51390680115615096133E3, -}; - -static double Q[] = { - /* 1.00000000000000000000E0, */ - 2.33184211722314911771E2, - 4.36821166879210612817E3, -}; - -#define MAXL2 1024.0 -#define MINL2 -1024.0 - -double exp2(double x) -{ - double px, xx; - short n; - - if (cephes_isnan(x)) - return (x); - if (x > MAXL2) { - return (INFINITY); - } - - if (x < MINL2) { - return (0.0); - } - - xx = x; /* save x */ - /* separate into integer and fractional parts */ - px = floor(x + 0.5); - n = px; - x = x - px; - - /* rational approximation - * exp2(x) = 1 + 2xP(xx)/(Q(xx) - P(xx)) - * where xx = x**2 - */ - xx = x * x; - px = x * polevl(xx, P, 2); - x = px / (p1evl(xx, Q, 2) - px); - x = 1.0 + ldexp(x, 1); - - /* scale by power of 2 */ - x = ldexp(x, n); - return (x); -} diff --git a/gtsam/3rdparty/cephes/cephes/expn.c b/gtsam/3rdparty/cephes/cephes/expn.c deleted file mode 100644 index 2a6ee14c09..0000000000 --- a/gtsam/3rdparty/cephes/cephes/expn.c +++ /dev/null @@ -1,224 +0,0 @@ -/* expn.c - * - * Exponential integral En - * - * - * - * SYNOPSIS: - * - * int n; - * double x, y, expn(); - * - * y = expn( n, x ); - * - * - * - * DESCRIPTION: - * - * Evaluates the exponential integral - * - * inf. - * - - * | | -xt - * | e - * E (x) = | ---- dt. - * n | n - * | | t - * - - * 1 - * - * - * Both n and x must be nonnegative. - * - * The routine employs either a power series, a continued - * fraction, or an asymptotic formula depending on the - * relative values of n and x. - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 10000 1.7e-15 3.6e-16 - * - */ - -/* expn.c */ - -/* Cephes Math Library Release 1.1: March, 1985 - * Copyright 1985 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 */ - -/* Sources - * [1] NIST, "The Digital Library of Mathematical Functions", dlmf.nist.gov - */ - -/* Scipy changes: - * - 09-10-2016: improved asymptotic expansion for large n - */ - -#include "mconf.h" -#include "polevl.h" -#include "expn.h" - -#define EUL 0.57721566490153286060 -#define BIG 1.44115188075855872E+17 -extern double MACHEP, MAXLOG; - -static double expn_large_n(int, double); - - -double expn(int n, double x) -{ - double ans, r, t, yk, xk; - double pk, pkm1, pkm2, qk, qkm1, qkm2; - double psi, z; - int i, k; - static double big = BIG; - - if (isnan(x)) { - return NAN; - } - else if (n < 0 || x < 0) { - sf_error("expn", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (x > MAXLOG) { - return (0.0); - } - - if (x == 0.0) { - if (n < 2) { - sf_error("expn", SF_ERROR_SINGULAR, NULL); - return (INFINITY); - } - else { - return (1.0 / (n - 1.0)); - } - } - - if (n == 0) { - return (exp(-x) / x); - } - - /* Asymptotic expansion for large n, DLMF 8.20(ii) */ - if (n > 50) { - ans = expn_large_n(n, x); - goto done; - } - - if (x > 1.0) { - goto cfrac; - } - - /* Power series expansion, DLMF 8.19.8 */ - psi = -EUL - log(x); - for (i = 1; i < n; i++) { - psi = psi + 1.0 / i; - } - - z = -x; - xk = 0.0; - yk = 1.0; - pk = 1.0 - n; - if (n == 1) { - ans = 0.0; - } else { - ans = 1.0 / pk; - } - do { - xk += 1.0; - yk *= z / xk; - pk += 1.0; - if (pk != 0.0) { - ans += yk / pk; - } - if (ans != 0.0) - t = fabs(yk / ans); - else - t = 1.0; - } while (t > MACHEP); - k = xk; - t = n; - r = n - 1; - ans = (pow(z, r) * psi / Gamma(t)) - ans; - goto done; - - /* Continued fraction, DLMF 8.19.17 */ - cfrac: - k = 1; - pkm2 = 1.0; - qkm2 = x; - pkm1 = 1.0; - qkm1 = x + n; - ans = pkm1 / qkm1; - - do { - k += 1; - if (k & 1) { - yk = 1.0; - xk = n + (k - 1) / 2; - } else { - yk = x; - xk = k / 2; - } - pk = pkm1 * yk + pkm2 * xk; - qk = qkm1 * yk + qkm2 * xk; - if (qk != 0) { - r = pk / qk; - t = fabs((ans - r) / r); - ans = r; - } else { - t = 1.0; - } - pkm2 = pkm1; - pkm1 = pk; - qkm2 = qkm1; - qkm1 = qk; - if (fabs(pk) > big) { - pkm2 /= big; - pkm1 /= big; - qkm2 /= big; - qkm1 /= big; - } - } while (t > MACHEP); - - ans *= exp(-x); - - done: - return (ans); -} - - -/* Asymptotic expansion for large n, DLMF 8.20(ii) */ -static double expn_large_n(int n, double x) -{ - int k; - double p = n; - double lambda = x/p; - double multiplier = 1/p/(lambda + 1)/(lambda + 1); - double fac = 1; - double res = 1; /* A[0] = 1 */ - double expfac, term; - - expfac = exp(-lambda*p)/(lambda + 1)/p; - if (expfac == 0) { - sf_error("expn", SF_ERROR_UNDERFLOW, NULL); - return 0; - } - - /* Do the k = 1 term outside the loop since A[1] = 1 */ - fac *= multiplier; - res += fac; - - for (k = 2; k < nA; k++) { - fac *= multiplier; - term = fac*polevl(lambda, A[k], Adegs[k]); - res += term; - if (fabs(term) < MACHEP*fabs(res)) { - break; - } - } - - return expfac*res; -} diff --git a/gtsam/3rdparty/cephes/cephes/expn.h b/gtsam/3rdparty/cephes/cephes/expn.h deleted file mode 100644 index 8ced026877..0000000000 --- a/gtsam/3rdparty/cephes/cephes/expn.h +++ /dev/null @@ -1,19 +0,0 @@ -/* This file was automatically generated by _precompute/expn_asy.py. - * Do not edit it manually! - */ -#define nA 13 -static const double A0[] = {1.00000000000000000}; -static const double A1[] = {1.00000000000000000}; -static const double A2[] = {-2.00000000000000000, 1.00000000000000000}; -static const double A3[] = {6.00000000000000000, -8.00000000000000000, 1.00000000000000000}; -static const double A4[] = {-24.0000000000000000, 58.0000000000000000, -22.0000000000000000, 1.00000000000000000}; -static const double A5[] = {120.000000000000000, -444.000000000000000, 328.000000000000000, -52.0000000000000000, 1.00000000000000000}; -static const double A6[] = {-720.000000000000000, 3708.00000000000000, -4400.00000000000000, 1452.00000000000000, -114.000000000000000, 1.00000000000000000}; -static const double A7[] = {5040.00000000000000, -33984.0000000000000, 58140.0000000000000, -32120.0000000000000, 5610.00000000000000, -240.000000000000000, 1.00000000000000000}; -static const double A8[] = {-40320.0000000000000, 341136.000000000000, -785304.000000000000, 644020.000000000000, -195800.000000000000, 19950.0000000000000, -494.000000000000000, 1.00000000000000000}; -static const double A9[] = {362880.000000000000, -3733920.00000000000, 11026296.0000000000, -12440064.0000000000, 5765500.00000000000, -1062500.00000000000, 67260.0000000000000, -1004.00000000000000, 1.00000000000000000}; -static const double A10[] = {-3628800.00000000000, 44339040.0000000000, -162186912.000000000, 238904904.000000000, -155357384.000000000, 44765000.0000000000, -5326160.00000000000, 218848.000000000000, -2026.00000000000000, 1.00000000000000000}; -static const double A11[] = {39916800.0000000000, -568356480.000000000, 2507481216.00000000, -4642163952.00000000, 4002695088.00000000, -1648384304.00000000, 314369720.000000000, -25243904.0000000000, 695038.000000000000, -4072.00000000000000, 1.00000000000000000}; -static const double A12[] = {-479001600.000000000, 7827719040.00000000, -40788301824.0000000, 92199790224.0000000, -101180433024.000000, 56041398784.0000000, -15548960784.0000000, 2051482776.00000000, -114876376.000000000, 2170626.00000000000, -8166.00000000000000, 1.00000000000000000}; -static const double *A[] = {A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12}; -static const int Adegs[] = {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; diff --git a/gtsam/3rdparty/cephes/cephes/fdtr.c b/gtsam/3rdparty/cephes/cephes/fdtr.c deleted file mode 100644 index 9c119ed8f7..0000000000 --- a/gtsam/3rdparty/cephes/cephes/fdtr.c +++ /dev/null @@ -1,216 +0,0 @@ -/* fdtr.c - * - * F distribution - * - * - * - * SYNOPSIS: - * - * double df1, df2; - * double x, y, fdtr(); - * - * y = fdtr( df1, df2, x ); - * - * DESCRIPTION: - * - * Returns the area from zero to x under the F density - * function (also known as Snedcor's density or the - * variance ratio density). This is the density - * of x = (u1/df1)/(u2/df2), where u1 and u2 are random - * variables having Chi square distributions with df1 - * and df2 degrees of freedom, respectively. - * - * The incomplete beta integral is used, according to the - * formula - * - * P(x) = incbet( df1/2, df2/2, (df1*x/(df2 + df1*x) ). - * - * - * The arguments a and b are greater than zero, and x is - * nonnegative. - * - * ACCURACY: - * - * Tested at random points (a,b,x). - * - * x a,b Relative error: - * arithmetic domain domain # trials peak rms - * IEEE 0,1 0,100 100000 9.8e-15 1.7e-15 - * IEEE 1,5 0,100 100000 6.5e-15 3.5e-16 - * IEEE 0,1 1,10000 100000 2.2e-11 3.3e-12 - * IEEE 1,5 1,10000 100000 1.1e-11 1.7e-13 - * See also incbet.c. - * - * - * ERROR MESSAGES: - * - * message condition value returned - * fdtr domain a<0, b<0, x<0 0.0 - * - */ - -/* fdtrc() - * - * Complemented F distribution - * - * - * - * SYNOPSIS: - * - * double df1, df2; - * double x, y, fdtrc(); - * - * y = fdtrc( df1, df2, x ); - * - * DESCRIPTION: - * - * Returns the area from x to infinity under the F density - * function (also known as Snedcor's density or the - * variance ratio density). - * - * - * inf. - * - - * 1 | | a-1 b-1 - * 1-P(x) = ------ | t (1-t) dt - * B(a,b) | | - * - - * x - * - * - * The incomplete beta integral is used, according to the - * formula - * - * P(x) = incbet( df2/2, df1/2, (df2/(df2 + df1*x) ). - * - * - * ACCURACY: - * - * Tested at random points (a,b,x) in the indicated intervals. - * x a,b Relative error: - * arithmetic domain domain # trials peak rms - * IEEE 0,1 1,100 100000 3.7e-14 5.9e-16 - * IEEE 1,5 1,100 100000 8.0e-15 1.6e-15 - * IEEE 0,1 1,10000 100000 1.8e-11 3.5e-13 - * IEEE 1,5 1,10000 100000 2.0e-11 3.0e-12 - * See also incbet.c. - * - * ERROR MESSAGES: - * - * message condition value returned - * fdtrc domain a<0, b<0, x<0 0.0 - * - */ - -/* fdtri() - * - * Inverse of F distribution - * - * - * - * SYNOPSIS: - * - * double df1, df2; - * double x, p, fdtri(); - * - * x = fdtri( df1, df2, p ); - * - * DESCRIPTION: - * - * Finds the F density argument x such that the integral - * from -infinity to x of the F density is equal to the - * given probability p. - * - * This is accomplished using the inverse beta integral - * function and the relations - * - * z = incbi( df2/2, df1/2, p ) - * x = df2 (1-z) / (df1 z). - * - * Note: the following relations hold for the inverse of - * the uncomplemented F distribution: - * - * z = incbi( df1/2, df2/2, p ) - * x = df2 z / (df1 (1-z)). - * - * ACCURACY: - * - * Tested at random points (a,b,p). - * - * a,b Relative error: - * arithmetic domain # trials peak rms - * For p between .001 and 1: - * IEEE 1,100 100000 8.3e-15 4.7e-16 - * IEEE 1,10000 100000 2.1e-11 1.4e-13 - * For p between 10^-6 and 10^-3: - * IEEE 1,100 50000 1.3e-12 8.4e-15 - * IEEE 1,10000 50000 3.0e-12 4.8e-14 - * See also fdtrc.c. - * - * ERROR MESSAGES: - * - * message condition value returned - * fdtri domain p <= 0 or p > 1 NaN - * v < 1 - * - */ - -/* - * Cephes Math Library Release 2.3: March, 1995 - * Copyright 1984, 1987, 1995 by Stephen L. Moshier - */ - - -#include "mconf.h" - - -double fdtrc(double a, double b, double x) -{ - double w; - - if ((a <= 0.0) || (b <= 0.0) || (x < 0.0)) { - sf_error("fdtrc", SF_ERROR_DOMAIN, NULL); - return NAN; - } - w = b / (b + a * x); - return incbet(0.5 * b, 0.5 * a, w); -} - - -double fdtr(double a, double b, double x) -{ - double w; - - if ((a <= 0.0) || (b <= 0.0) || (x < 0.0)) { - sf_error("fdtr", SF_ERROR_DOMAIN, NULL); - return NAN; - } - w = a * x; - w = w / (b + w); - return incbet(0.5 * a, 0.5 * b, w); -} - - -double fdtri(double a, double b, double y) -{ - double w, x; - - if ((a <= 0.0) || (b <= 0.0) || (y <= 0.0) || (y > 1.0)) { - sf_error("fdtri", SF_ERROR_DOMAIN, NULL); - return NAN; - } - y = 1.0 - y; - /* Compute probability for x = 0.5. */ - w = incbet(0.5 * b, 0.5 * a, 0.5); - /* If that is greater than y, then the solution w < .5. - * Otherwise, solve at 1-y to remove cancellation in (b - b*w). */ - if (w > y || y < 0.001) { - w = incbi(0.5 * b, 0.5 * a, y); - x = (b - b * w) / (a * w); - } - else { - w = incbi(0.5 * a, 0.5 * b, 1.0 - y); - x = b * w / (a * (1.0 - w)); - } - return x; -} diff --git a/gtsam/3rdparty/cephes/cephes/fresnl.c b/gtsam/3rdparty/cephes/cephes/fresnl.c deleted file mode 100644 index 50620fa2e1..0000000000 --- a/gtsam/3rdparty/cephes/cephes/fresnl.c +++ /dev/null @@ -1,219 +0,0 @@ -/* fresnl.c - * - * Fresnel integral - * - * - * - * SYNOPSIS: - * - * double x, S, C; - * void fresnl(); - * - * fresnl( x, _&S, _&C ); - * - * - * DESCRIPTION: - * - * Evaluates the Fresnel integrals - * - * x - * - - * | | - * C(x) = | cos(pi/2 t**2) dt, - * | | - * - - * 0 - * - * x - * - - * | | - * S(x) = | sin(pi/2 t**2) dt. - * | | - * - - * 0 - * - * - * The integrals are evaluated by a power series for x < 1. - * For x >= 1 auxiliary functions f(x) and g(x) are employed - * such that - * - * C(x) = 0.5 + f(x) sin( pi/2 x**2 ) - g(x) cos( pi/2 x**2 ) - * S(x) = 0.5 - f(x) cos( pi/2 x**2 ) - g(x) sin( pi/2 x**2 ) - * - * - * - * ACCURACY: - * - * Relative error. - * - * Arithmetic function domain # trials peak rms - * IEEE S(x) 0, 10 10000 2.0e-15 3.2e-16 - * IEEE C(x) 0, 10 10000 1.8e-15 3.3e-16 - */ - -/* - * Cephes Math Library Release 2.1: January, 1989 - * Copyright 1984, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -/* S(x) for small x */ -static double sn[6] = { - -2.99181919401019853726E3, - 7.08840045257738576863E5, - -6.29741486205862506537E7, - 2.54890880573376359104E9, - -4.42979518059697779103E10, - 3.18016297876567817986E11, -}; - -static double sd[6] = { - /* 1.00000000000000000000E0, */ - 2.81376268889994315696E2, - 4.55847810806532581675E4, - 5.17343888770096400730E6, - 4.19320245898111231129E8, - 2.24411795645340920940E10, - 6.07366389490084639049E11, -}; - -/* C(x) for small x */ -static double cn[6] = { - -4.98843114573573548651E-8, - 9.50428062829859605134E-6, - -6.45191435683965050962E-4, - 1.88843319396703850064E-2, - -2.05525900955013891793E-1, - 9.99999999999999998822E-1, -}; - -static double cd[7] = { - 3.99982968972495980367E-12, - 9.15439215774657478799E-10, - 1.25001862479598821474E-7, - 1.22262789024179030997E-5, - 8.68029542941784300606E-4, - 4.12142090722199792936E-2, - 1.00000000000000000118E0, -}; - -/* Auxiliary function f(x) */ -static double fn[10] = { - 4.21543555043677546506E-1, - 1.43407919780758885261E-1, - 1.15220955073585758835E-2, - 3.45017939782574027900E-4, - 4.63613749287867322088E-6, - 3.05568983790257605827E-8, - 1.02304514164907233465E-10, - 1.72010743268161828879E-13, - 1.34283276233062758925E-16, - 3.76329711269987889006E-20, -}; - -static double fd[10] = { - /* 1.00000000000000000000E0, */ - 7.51586398353378947175E-1, - 1.16888925859191382142E-1, - 6.44051526508858611005E-3, - 1.55934409164153020873E-4, - 1.84627567348930545870E-6, - 1.12699224763999035261E-8, - 3.60140029589371370404E-11, - 5.88754533621578410010E-14, - 4.52001434074129701496E-17, - 1.25443237090011264384E-20, -}; - -/* Auxiliary function g(x) */ -static double gn[11] = { - 5.04442073643383265887E-1, - 1.97102833525523411709E-1, - 1.87648584092575249293E-2, - 6.84079380915393090172E-4, - 1.15138826111884280931E-5, - 9.82852443688422223854E-8, - 4.45344415861750144738E-10, - 1.08268041139020870318E-12, - 1.37555460633261799868E-15, - 8.36354435630677421531E-19, - 1.86958710162783235106E-22, -}; - -static double gd[11] = { - /* 1.00000000000000000000E0, */ - 1.47495759925128324529E0, - 3.37748989120019970451E-1, - 2.53603741420338795122E-2, - 8.14679107184306179049E-4, - 1.27545075667729118702E-5, - 1.04314589657571990585E-7, - 4.60680728146520428211E-10, - 1.10273215066240270757E-12, - 1.38796531259578871258E-15, - 8.39158816283118707363E-19, - 1.86958710162783236342E-22, -}; - -extern double MACHEP; - -int fresnl(double xxa, double *ssa, double *cca) -{ - double f, g, cc, ss, c, s, t, u; - double x, x2; - - if (cephes_isinf(xxa)) { - cc = 0.5; - ss = 0.5; - goto done; - } - - x = fabs(xxa); - x2 = x * x; - if (x2 < 2.5625) { - t = x2 * x2; - ss = x * x2 * polevl(t, sn, 5) / p1evl(t, sd, 6); - cc = x * polevl(t, cn, 5) / polevl(t, cd, 6); - goto done; - } - - if (x > 36974.0) { - /* - * http://functions.wolfram.com/GammaBetaErf/FresnelC/06/02/ - * http://functions.wolfram.com/GammaBetaErf/FresnelS/06/02/ - */ - cc = 0.5 + 1/(M_PI*x) * sin(M_PI*x*x/2); - ss = 0.5 - 1/(M_PI*x) * cos(M_PI*x*x/2); - goto done; - } - - - /* Asymptotic power series auxiliary functions - * for large argument - */ - x2 = x * x; - t = M_PI * x2; - u = 1.0 / (t * t); - t = 1.0 / t; - f = 1.0 - u * polevl(u, fn, 9) / p1evl(u, fd, 10); - g = t * polevl(u, gn, 10) / p1evl(u, gd, 11); - - t = M_PI_2 * x2; - c = cos(t); - s = sin(t); - t = M_PI * x; - cc = 0.5 + (f * s - g * c) / t; - ss = 0.5 - (f * c + g * s) / t; - - done: - if (xxa < 0.0) { - cc = -cc; - ss = -ss; - } - - *cca = cc; - *ssa = ss; - return (0); -} diff --git a/gtsam/3rdparty/cephes/cephes/gamma.c b/gtsam/3rdparty/cephes/cephes/gamma.c index 2a61defedb..ee32fc90ae 100644 --- a/gtsam/3rdparty/cephes/cephes/gamma.c +++ b/gtsam/3rdparty/cephes/cephes/gamma.c @@ -157,7 +157,7 @@ static double stirf(double x) } -double Gamma(double x) +double gtsam_cephes_Gamma(double x) { double p, q, z; int i; @@ -173,7 +173,7 @@ double Gamma(double x) p = floor(q); if (p == q) { gamnan: - sf_error("Gamma", SF_ERROR_OVERFLOW, NULL); + gtsam_cephes_sf_error("Gamma", SF_ERROR_OVERFLOW, NULL); return (INFINITY); } i = p; @@ -272,13 +272,13 @@ static double LS2PI = 0.91893853320467274178; /* Logarithm of Gamma function */ -double lgam(double x) +double gtsam_cephes_lgam(double x) { int sign; - return lgam_sgn(x, &sign); + return gtsam_cephes_lgam_sgn(x, &sign); } -double lgam_sgn(double x, int *sign) +double gtsam_cephes_lgam_sgn(double x, int *sign) { double p, q, u, w, z; int i; @@ -290,11 +290,11 @@ double lgam_sgn(double x, int *sign) if (x < -34.0) { q = -x; - w = lgam_sgn(q, sign); + w = gtsam_cephes_lgam_sgn(q, sign); p = floor(q); if (p == q) { lgsing: - sf_error("lgam", SF_ERROR_SINGULAR, NULL); + gtsam_cephes_sf_error("lgam", SF_ERROR_SINGULAR, NULL); return (INFINITY); } i = p; diff --git a/gtsam/3rdparty/cephes/cephes/gammasgn.c b/gtsam/3rdparty/cephes/cephes/gammasgn.c deleted file mode 100644 index 9d74318ff2..0000000000 --- a/gtsam/3rdparty/cephes/cephes/gammasgn.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "mconf.h" - -double gammasgn(double x) -{ - double fx; - - if (isnan(x)) { - return x; - } - if (x > 0) { - return 1.0; - } - else { - fx = floor(x); - if (x - fx == 0.0) { - return 0.0; - } - else if ((int)fx % 2) { - return -1.0; - } - else { - return 1.0; - } - } -} diff --git a/gtsam/3rdparty/cephes/cephes/gdtr.c b/gtsam/3rdparty/cephes/cephes/gdtr.c deleted file mode 100644 index 597c8d4d93..0000000000 --- a/gtsam/3rdparty/cephes/cephes/gdtr.c +++ /dev/null @@ -1,132 +0,0 @@ -/* gdtr.c - * - * Gamma distribution function - * - * - * - * SYNOPSIS: - * - * double a, b, x, y, gdtr(); - * - * y = gdtr( a, b, x ); - * - * - * - * DESCRIPTION: - * - * Returns the integral from zero to x of the Gamma probability - * density function: - * - * - * x - * b - - * a | | b-1 -at - * y = ----- | t e dt - * - | | - * | (b) - - * 0 - * - * The incomplete Gamma integral is used, according to the - * relation - * - * y = igam( b, ax ). - * - * - * ACCURACY: - * - * See igam(). - * - * ERROR MESSAGES: - * - * message condition value returned - * gdtr domain x < 0 0.0 - * - */ - /* gdtrc.c - * - * Complemented Gamma distribution function - * - * - * - * SYNOPSIS: - * - * double a, b, x, y, gdtrc(); - * - * y = gdtrc( a, b, x ); - * - * - * - * DESCRIPTION: - * - * Returns the integral from x to infinity of the Gamma - * probability density function: - * - * - * inf. - * b - - * a | | b-1 -at - * y = ----- | t e dt - * - | | - * | (b) - - * x - * - * The incomplete Gamma integral is used, according to the - * relation - * - * y = igamc( b, ax ). - * - * - * ACCURACY: - * - * See igamc(). - * - * ERROR MESSAGES: - * - * message condition value returned - * gdtrc domain x < 0 0.0 - * - */ - -/* gdtr() */ - - -/* - * Cephes Math Library Release 2.3: March,1995 - * Copyright 1984, 1987, 1995 by Stephen L. Moshier - */ - -#include "mconf.h" - - -double gdtr(double a, double b, double x) -{ - - if (x < 0.0) { - sf_error("gdtr", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - return (igam(b, a * x)); -} - - -double gdtrc(double a, double b, double x) -{ - - if (x < 0.0) { - sf_error("gdtrc", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - return (igamc(b, a * x)); -} - - -double gdtri(double a, double b, double y) -{ - - if ((y < 0.0) || (y > 1.0) || (a <= 0.0) || (b < 0.0)) { - sf_error("gdtri", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - return (igamci(b, 1.0 - y) / a); -} diff --git a/gtsam/3rdparty/cephes/cephes/hyp2f1.c b/gtsam/3rdparty/cephes/cephes/hyp2f1.c deleted file mode 100644 index 7f0a84d02a..0000000000 --- a/gtsam/3rdparty/cephes/cephes/hyp2f1.c +++ /dev/null @@ -1,569 +0,0 @@ -/* hyp2f1.c - * - * Gauss hypergeometric function F - * 2 1 - * - * - * SYNOPSIS: - * - * double a, b, c, x, y, hyp2f1(); - * - * y = hyp2f1( a, b, c, x ); - * - * - * DESCRIPTION: - * - * - * hyp2f1( a, b, c, x ) = F ( a, b; c; x ) - * 2 1 - * - * inf. - * - a(a+1)...(a+k) b(b+1)...(b+k) k+1 - * = 1 + > ----------------------------- x . - * - c(c+1)...(c+k) (k+1)! - * k = 0 - * - * Cases addressed are - * Tests and escapes for negative integer a, b, or c - * Linear transformation if c - a or c - b negative integer - * Special case c = a or c = b - * Linear transformation for x near +1 - * Transformation for x < -0.5 - * Psi function expansion if x > 0.5 and c - a - b integer - * Conditionally, a recurrence on c to make c-a-b > 0 - * - * x < -1 AMS 15.3.7 transformation applied (Travis Oliphant) - * valid for b,a,c,(b-a) != integer and (c-a),(c-b) != negative integer - * - * x >= 1 is rejected (unless special cases are present) - * - * The parameters a, b, c are considered to be integer - * valued if they are within 1.0e-14 of the nearest integer - * (1.0e-13 for IEEE arithmetic). - * - * ACCURACY: - * - * - * Relative error (-1 < x < 1): - * arithmetic domain # trials peak rms - * IEEE -1,7 230000 1.2e-11 5.2e-14 - * - * Several special cases also tested with a, b, c in - * the range -7 to 7. - * - * ERROR MESSAGES: - * - * A "partial loss of precision" message is printed if - * the internally estimated relative error exceeds 1^-12. - * A "singularity" message is printed on overflow or - * in cases not addressed (such as x < -1). - */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1992, 2000 by Stephen L. Moshier - */ - -#include -#include -#include - -#include "mconf.h" - -#define EPS 1.0e-13 -#define EPS2 1.0e-10 - -#define ETHRESH 1.0e-12 - -#define MAX_ITERATIONS 10000 - -extern double MACHEP; - -/* hys2f1 and hyp2f1ra depend on each other, so we need this prototype */ -static double hyp2f1ra(double a, double b, double c, double x, double *loss); - -/* Defining power series expansion of Gauss hypergeometric function */ -/* The `loss` parameter estimates loss of significance */ -static double hys2f1(double a, double b, double c, double x, double *loss) { - double f, g, h, k, m, s, u, umax; - int i; - int ib, intflag = 0; - - if (fabs(b) > fabs(a)) { - /* Ensure that |a| > |b| ... */ - f = b; - b = a; - a = f; - } - - ib = round(b); - - if (fabs(b - ib) < EPS && ib <= 0 && fabs(b) < fabs(a)) { - /* .. except when `b` is a smaller negative integer */ - f = b; - b = a; - a = f; - intflag = 1; - } - - if ((fabs(a) > fabs(c) + 1 || intflag) && fabs(c - a) > 2 && fabs(a) > 2) { - /* |a| >> |c| implies that large cancellation error is to be expected. - * - * We try to reduce it with the recurrence relations - */ - return hyp2f1ra(a, b, c, x, loss); - } - - i = 0; - umax = 0.0; - f = a; - g = b; - h = c; - s = 1.0; - u = 1.0; - k = 0.0; - do { - if (fabs(h) < EPS) { - *loss = 1.0; - return INFINITY; - } - m = k + 1.0; - u = u * ((f + k) * (g + k) * x / ((h + k) * m)); - s += u; - k = fabs(u); /* remember largest term summed */ - if (k > umax) umax = k; - k = m; - if (++i > MAX_ITERATIONS) { /* should never happen */ - *loss = 1.0; - return (s); - } - } while (s == 0 || fabs(u / s) > MACHEP); - - /* return estimated relative error */ - *loss = (MACHEP * umax) / fabs(s) + (MACHEP * i); - - return (s); -} - -/* Apply transformations for |x| near 1 then call the power series */ -static double hyt2f1(double a, double b, double c, double x, double *loss) { - double p, q, r, s, t, y, w, d, err, err1; - double ax, id, d1, d2, e, y1; - int i, aid, sign; - - int ia, ib, neg_int_a = 0, neg_int_b = 0; - - ia = round(a); - ib = round(b); - - if (a <= 0 && fabs(a - ia) < EPS) { /* a is a negative integer */ - neg_int_a = 1; - } - - if (b <= 0 && fabs(b - ib) < EPS) { /* b is a negative integer */ - neg_int_b = 1; - } - - err = 0.0; - s = 1.0 - x; - if (x < -0.5 && !(neg_int_a || neg_int_b)) { - if (b > a) - y = pow(s, -a) * hys2f1(a, c - b, c, -x / s, &err); - - else - y = pow(s, -b) * hys2f1(c - a, b, c, -x / s, &err); - - goto done; - } - - d = c - a - b; - id = round(d); /* nearest integer to d */ - - if (x > 0.9 && !(neg_int_a || neg_int_b)) { - if (fabs(d - id) > EPS) { - int sgngam; - - /* test for integer c-a-b */ - /* Try the power series first */ - y = hys2f1(a, b, c, x, &err); - if (err < ETHRESH) goto done; - /* If power series fails, then apply AMS55 #15.3.6 */ - q = hys2f1(a, b, 1.0 - d, s, &err); - sign = 1; - w = lgam_sgn(d, &sgngam); - sign *= sgngam; - w -= lgam_sgn(c - a, &sgngam); - sign *= sgngam; - w -= lgam_sgn(c - b, &sgngam); - sign *= sgngam; - q *= sign * exp(w); - r = pow(s, d) * hys2f1(c - a, c - b, d + 1.0, s, &err1); - sign = 1; - w = lgam_sgn(-d, &sgngam); - sign *= sgngam; - w -= lgam_sgn(a, &sgngam); - sign *= sgngam; - w -= lgam_sgn(b, &sgngam); - sign *= sgngam; - r *= sign * exp(w); - y = q + r; - - q = fabs(q); /* estimate cancellation error */ - r = fabs(r); - if (q > r) r = q; - err += err1 + (MACHEP * r) / y; - - y *= gamma(c); - goto done; - } else { - /* Psi function expansion, AMS55 #15.3.10, #15.3.11, #15.3.12 - * - * Although AMS55 does not explicitly state it, this expansion fails - * for negative integer a or b, since the psi and Gamma functions - * involved have poles. - */ - - if (id >= 0.0) { - e = d; - d1 = d; - d2 = 0.0; - aid = id; - } else { - e = -d; - d1 = 0.0; - d2 = d; - aid = -id; - } - - ax = log(s); - - /* sum for t = 0 */ - y = psi(1.0) + psi(1.0 + e) - psi(a + d1) - psi(b + d1) - ax; - y /= gamma(e + 1.0); - - p = (a + d1) * (b + d1) * s / gamma(e + 2.0); /* Poch for t=1 */ - t = 1.0; - do { - r = psi(1.0 + t) + psi(1.0 + t + e) - psi(a + t + d1) - - psi(b + t + d1) - ax; - q = p * r; - y += q; - p *= s * (a + t + d1) / (t + 1.0); - p *= (b + t + d1) / (t + 1.0 + e); - t += 1.0; - if (t > MAX_ITERATIONS) { /* should never happen */ - sf_error("hyp2f1", SF_ERROR_SLOW, NULL); - *loss = 1.0; - return NAN; - } - } while (y == 0 || fabs(q / y) > EPS); - - if (id == 0.0) { - y *= gamma(c) / (gamma(a) * gamma(b)); - goto psidon; - } - - y1 = 1.0; - - if (aid == 1) goto nosum; - - t = 0.0; - p = 1.0; - for (i = 1; i < aid; i++) { - r = 1.0 - e + t; - p *= s * (a + t + d2) * (b + t + d2) / r; - t += 1.0; - p /= t; - y1 += p; - } - nosum: - p = gamma(c); - y1 *= gamma(e) * p / (gamma(a + d1) * gamma(b + d1)); - - y *= p / (gamma(a + d2) * gamma(b + d2)); - if ((aid & 1) != 0) y = -y; - - q = pow(s, id); /* s to the id power */ - if (id > 0.0) - y *= q; - else - y1 *= q; - - y += y1; - psidon: - goto done; - } - } - - /* Use defining power series if no special cases */ - y = hys2f1(a, b, c, x, &err); - -done: - *loss = err; - return (y); -} - -/* - 15.4.2 Abramowitz & Stegun. -*/ -static double hyp2f1_neg_c_equal_bc(double a, double b, double x) { - double k; - double collector = 1; - double sum = 1; - double collector_max = 1; - - if (!(fabs(b) < 1e5)) { - return NAN; - } - - for (k = 1; k <= -b; k++) { - collector *= (a + k - 1) * x / k; - collector_max = fmax(fabs(collector), collector_max); - sum += collector; - } - - if (1e-16 * (1 + collector_max / fabs(sum)) > 1e-7) { - return NAN; - } - - return sum; -} - -double hyp2f1(double a, double b, double c, double x) { - double d, d1, d2, e; - double p, q, r, s, y, ax; - double ia, ib, ic, id, err; - double t1; - int i, aid; - int neg_int_a = 0, neg_int_b = 0; - int neg_int_ca_or_cb = 0; - - err = 0.0; - ax = fabs(x); - s = 1.0 - x; - ia = round(a); /* nearest integer to a */ - ib = round(b); - - if (x == 0.0) { - return 1.0; - } - - d = c - a - b; - id = round(d); - - if ((a == 0 || b == 0) && c != 0) { - return 1.0; - } - - if (a <= 0 && fabs(a - ia) < EPS) { /* a is a negative integer */ - neg_int_a = 1; - } - - if (b <= 0 && fabs(b - ib) < EPS) { /* b is a negative integer */ - neg_int_b = 1; - } - - if (d <= -1 && !(fabs(d - id) > EPS && s < 0) && !(neg_int_a || neg_int_b)) { - return pow(s, d) * hyp2f1(c - a, c - b, c, x); - } - if (d <= 0 && x == 1 && !(neg_int_a || neg_int_b)) goto hypdiv; - - if (ax < 1.0 || x == -1.0) { - /* 2F1(a,b;b;x) = (1-x)**(-a) */ - if (fabs(b - c) < EPS) { /* b = c */ - if (neg_int_b) { - y = hyp2f1_neg_c_equal_bc(a, b, x); - } else { - y = pow(s, -a); /* s to the -a power */ - } - goto hypdon; - } - if (fabs(a - c) < EPS) { /* a = c */ - y = pow(s, -b); /* s to the -b power */ - goto hypdon; - } - } - - if (c <= 0.0) { - ic = round(c); /* nearest integer to c */ - if (fabs(c - ic) < EPS) { /* c is a negative integer */ - /* check if termination before explosion */ - if (neg_int_a && (ia > ic)) goto hypok; - if (neg_int_b && (ib > ic)) goto hypok; - goto hypdiv; - } - } - - if (neg_int_a || neg_int_b) /* function is a polynomial */ - goto hypok; - - t1 = fabs(b - a); - if (x < -2.0 && fabs(t1 - round(t1)) > EPS) { - /* This transform has a pole for b-a integer, and - * may produce large cancellation errors for |1/x| close 1 - */ - p = hyp2f1(a, 1 - c + a, 1 - b + a, 1.0 / x); - q = hyp2f1(b, 1 - c + b, 1 - a + b, 1.0 / x); - p *= pow(-x, -a); - q *= pow(-x, -b); - t1 = gamma(c); - s = t1 * gamma(b - a) / (gamma(b) * gamma(c - a)); - y = t1 * gamma(a - b) / (gamma(a) * gamma(c - b)); - return s * p + y * q; - } else if (x < -1.0) { - if (fabs(a) < fabs(b)) { - return pow(s, -a) * hyp2f1(a, c - b, c, x / (x - 1)); - } else { - return pow(s, -b) * hyp2f1(b, c - a, c, x / (x - 1)); - } - } - - if (ax > 1.0) /* series diverges */ - goto hypdiv; - - p = c - a; - ia = round(p); /* nearest integer to c-a */ - if ((ia <= 0.0) && (fabs(p - ia) < EPS)) /* negative int c - a */ - neg_int_ca_or_cb = 1; - - r = c - b; - ib = round(r); /* nearest integer to c-b */ - if ((ib <= 0.0) && (fabs(r - ib) < EPS)) /* negative int c - b */ - neg_int_ca_or_cb = 1; - - id = round(d); /* nearest integer to d */ - q = fabs(d - id); - - /* Thanks to Christian Burger - * for reporting a bug here. */ - if (fabs(ax - 1.0) < EPS) { /* |x| == 1.0 */ - if (x > 0.0) { - if (neg_int_ca_or_cb) { - if (d >= 0.0) - goto hypf; - else - goto hypdiv; - } - if (d <= 0.0) goto hypdiv; - y = gamma(c) * gamma(d) / (gamma(p) * gamma(r)); - goto hypdon; - } - if (d <= -1.0) goto hypdiv; - } - - /* Conditionally make d > 0 by recurrence on c - * AMS55 #15.2.27 - */ - if (d < 0.0) { - /* Try the power series first */ - y = hyt2f1(a, b, c, x, &err); - if (err < ETHRESH) goto hypdon; - /* Apply the recurrence if power series fails */ - err = 0.0; - aid = 2 - id; - e = c + aid; - d2 = hyp2f1(a, b, e, x); - d1 = hyp2f1(a, b, e + 1.0, x); - q = a + b + 1.0; - for (i = 0; i < aid; i++) { - r = e - 1.0; - y = (e * (r - (2.0 * e - q) * x) * d2 + (e - a) * (e - b) * x * d1) / - (e * r * s); - e = r; - d1 = d2; - d2 = y; - } - goto hypdon; - } - - if (neg_int_ca_or_cb) goto hypf; /* negative integer c-a or c-b */ - -hypok: - y = hyt2f1(a, b, c, x, &err); - -hypdon: - if (err > ETHRESH) { - sf_error("hyp2f1", SF_ERROR_LOSS, NULL); - /* printf( "Estimated err = %.2e\n", err ); */ - } - return (y); - - /* The transformation for c-a or c-b negative integer - * AMS55 #15.3.3 - */ -hypf: - y = pow(s, d) * hys2f1(c - a, c - b, c, x, &err); - goto hypdon; - - /* The alarm exit */ -hypdiv: - sf_error("hyp2f1", SF_ERROR_OVERFLOW, NULL); - return INFINITY; -} - -/* - * Evaluate hypergeometric function by two-term recurrence in `a`. - * - * This avoids some of the loss of precision in the strongly alternating - * hypergeometric series, and can be used to reduce the `a` and `b` parameters - * to smaller values. - * - * AMS55 #15.2.10 - */ -static double hyp2f1ra(double a, double b, double c, double x, double *loss) { - double f2, f1, f0; - int n; - double t, err, da; - - /* Don't cross c or zero */ - if ((c < 0 && a <= c) || (c >= 0 && a >= c)) { - da = round(a - c); - } else { - da = round(a); - } - t = a - da; - - *loss = 0; - - assert(da != 0); - - if (fabs(da) > MAX_ITERATIONS) { - /* Too expensive to compute this value, so give up */ - sf_error("hyp2f1", SF_ERROR_NO_RESULT, NULL); - *loss = 1.0; - return NAN; - } - - if (da < 0) { - /* Recurse down */ - f2 = 0; - f1 = hys2f1(t, b, c, x, &err); - *loss += err; - f0 = hys2f1(t - 1, b, c, x, &err); - *loss += err; - t -= 1; - for (n = 1; n < -da; ++n) { - f2 = f1; - f1 = f0; - f0 = -(2 * t - c - t * x + b * x) / (c - t) * f1 - - t * (x - 1) / (c - t) * f2; - t -= 1; - } - } else { - /* Recurse up */ - f2 = 0; - f1 = hys2f1(t, b, c, x, &err); - *loss += err; - f0 = hys2f1(t + 1, b, c, x, &err); - *loss += err; - t += 1; - for (n = 1; n < da; ++n) { - f2 = f1; - f1 = f0; - f0 = -((2 * t - c - t * x + b * x) * f1 + (c - t) * f2) / (t * (x - 1)); - t += 1; - } - } - - return f0; -} diff --git a/gtsam/3rdparty/cephes/cephes/hyperg.c b/gtsam/3rdparty/cephes/cephes/hyperg.c deleted file mode 100644 index ac23e71339..0000000000 --- a/gtsam/3rdparty/cephes/cephes/hyperg.c +++ /dev/null @@ -1,362 +0,0 @@ -/* hyperg.c - * - * Confluent hypergeometric function - * - * - * - * SYNOPSIS: - * - * double a, b, x, y, hyperg(); - * - * y = hyperg( a, b, x ); - * - * - * - * DESCRIPTION: - * - * Computes the confluent hypergeometric function - * - * 1 2 - * a x a(a+1) x - * F ( a,b;x ) = 1 + ---- + --------- + ... - * 1 1 b 1! b(b+1) 2! - * - * Many higher transcendental functions are special cases of - * this power series. - * - * As is evident from the formula, b must not be a negative - * integer or zero unless a is an integer with 0 >= a > b. - * - * The routine attempts both a direct summation of the series - * and an asymptotic expansion. In each case error due to - * roundoff, cancellation, and nonconvergence is estimated. - * The result with smaller estimated error is returned. - * - * - * - * ACCURACY: - * - * Tested at random points (a, b, x), all three variables - * ranging from 0 to 30. - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,30 30000 1.8e-14 1.1e-15 - * - * Larger errors can be observed when b is near a negative - * integer or zero. Certain combinations of arguments yield - * serious cancellation error in the power series summation - * and also are not in the region of near convergence of the - * asymptotic series. An error message is printed if the - * self-estimated relative error is greater than 1.0e-12. - * - */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1988, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" -#include - -extern double MACHEP; - - -/* the `type` parameter determines what converging factor to use */ -static double hyp2f0(double a, double b, double x, int type, double *err) -{ - double a0, alast, t, tlast, maxt; - double n, an, bn, u, sum, temp; - - an = a; - bn = b; - a0 = 1.0e0; - alast = 1.0e0; - sum = 0.0; - n = 1.0e0; - t = 1.0e0; - tlast = 1.0e9; - maxt = 0.0; - - do { - if (an == 0) - goto pdone; - if (bn == 0) - goto pdone; - - u = an * (bn * x / n); - - /* check for blowup */ - temp = fabs(u); - if ((temp > 1.0) && (maxt > (DBL_MAX / temp))) - goto error; - - a0 *= u; - t = fabs(a0); - - /* terminating condition for asymptotic series: - * the series is divergent (if a or b is not a negative integer), - * but its leading part can be used as an asymptotic expansion - */ - if (t > tlast) - goto ndone; - - tlast = t; - sum += alast; /* the sum is one term behind */ - alast = a0; - - if (n > 200) - goto ndone; - - an += 1.0e0; - bn += 1.0e0; - n += 1.0e0; - if (t > maxt) - maxt = t; - } - while (t > MACHEP); - - - pdone: /* series converged! */ - - /* estimate error due to roundoff and cancellation */ - *err = fabs(MACHEP * (n + maxt)); - - alast = a0; - goto done; - - ndone: /* series did not converge */ - - /* The following "Converging factors" are supposed to improve accuracy, - * but do not actually seem to accomplish very much. */ - - n -= 1.0; - x = 1.0 / x; - - switch (type) { /* "type" given as subroutine argument */ - case 1: - alast *= - (0.5 + (0.125 + 0.25 * b - 0.5 * a + 0.25 * x - 0.25 * n) / x); - break; - - case 2: - alast *= 2.0 / 3.0 - b + 2.0 * a + x - n; - break; - - default: - ; - } - - /* estimate error due to roundoff, cancellation, and nonconvergence */ - *err = MACHEP * (n + maxt) + fabs(a0); - - done: - sum += alast; - return (sum); - - /* series blew up: */ - error: - *err = INFINITY; - sf_error("hyperg", SF_ERROR_NO_RESULT, NULL); - return (sum); -} - - -/* asymptotic formula for hypergeometric function: - * - * ( -a - * -- ( |z| - * | (b) ( -------- 2f0( a, 1+a-b, -1/x ) - * ( -- - * ( | (b-a) - * - * - * x a-b ) - * e |x| ) - * + -------- 2f0( b-a, 1-a, 1/x ) ) - * -- ) - * | (a) ) - */ - -static double hy1f1a(double a, double b, double x, double *err) -{ - double h1, h2, t, u, temp, acanc, asum, err1, err2; - - if (x == 0) { - acanc = 1.0; - asum = INFINITY; - goto adone; - } - temp = log(fabs(x)); - t = x + temp * (a - b); - u = -temp * a; - - if (b > 0) { - temp = lgam(b); - t += temp; - u += temp; - } - - h1 = hyp2f0(a, a - b + 1, -1.0 / x, 1, &err1); - - temp = exp(u) / gamma(b - a); - h1 *= temp; - err1 *= temp; - - h2 = hyp2f0(b - a, 1.0 - a, 1.0 / x, 2, &err2); - - if (a < 0) - temp = exp(t) / gamma(a); - else - temp = exp(t - lgam(a)); - - h2 *= temp; - err2 *= temp; - - if (x < 0.0) - asum = h1; - else - asum = h2; - - acanc = fabs(err1) + fabs(err2); - - if (b < 0) { - temp = gamma(b); - asum *= temp; - acanc *= fabs(temp); - } - - - if (asum != 0.0) - acanc /= fabs(asum); - - if (acanc != acanc) - /* nan */ - acanc = 1.0; - - if (asum == INFINITY || asum == -INFINITY) - /* infinity */ - acanc = 0; - - acanc *= 30.0; /* fudge factor, since error of asymptotic formula - * often seems this much larger than advertised */ - - adone: - *err = acanc; - return (asum); -} - - -/* Power series summation for confluent hypergeometric function */ -static double hy1f1p(double a, double b, double x, double *err) -{ - double n, a0, sum, t, u, temp, maxn; - double an, bn, maxt; - double y, c, sumc; - - - /* set up for power series summation */ - an = a; - bn = b; - a0 = 1.0; - sum = 1.0; - c = 0.0; - n = 1.0; - t = 1.0; - maxt = 0.0; - *err = 1.0; - - maxn = 200.0 + 2 * fabs(a) + 2 * fabs(b); - - while (t > MACHEP) { - if (bn == 0) { /* check bn first since if both */ - sf_error("hyperg", SF_ERROR_SINGULAR, NULL); - return (INFINITY); /* an and bn are zero it is */ - } - if (an == 0) /* a singularity */ - return (sum); - if (n > maxn) { - /* too many terms; take the last one as error estimate */ - c = fabs(c) + fabs(t) * 50.0; - goto pdone; - } - u = x * (an / (bn * n)); - - /* check for blowup */ - temp = fabs(u); - if ((temp > 1.0) && (maxt > (DBL_MAX / temp))) { - *err = 1.0; /* blowup: estimate 100% error */ - return sum; - } - - a0 *= u; - - y = a0 - c; - sumc = sum + y; - c = (sumc - sum) - y; - sum = sumc; - - t = fabs(a0); - - an += 1.0; - bn += 1.0; - n += 1.0; - } - - pdone: - - /* estimate error due to roundoff and cancellation */ - if (sum != 0.0) { - *err = fabs(c / sum); - } - else { - *err = fabs(c); - } - - if (*err != *err) { - /* nan */ - *err = 1.0; - } - - return (sum); -} - - - -double hyperg(double a, double b, double x) -{ - double asum, psum, acanc, pcanc, temp; - - /* See if a Kummer transformation will help */ - temp = b - a; - if (fabs(temp) < 0.001 * fabs(a)) - return (exp(x) * hyperg(temp, b, -x)); - - - /* Try power & asymptotic series, starting from the one that is likely OK */ - if (fabs(x) < 10 + fabs(a) + fabs(b)) { - psum = hy1f1p(a, b, x, &pcanc); - if (pcanc < 1.0e-15) - goto done; - asum = hy1f1a(a, b, x, &acanc); - } - else { - psum = hy1f1a(a, b, x, &pcanc); - if (pcanc < 1.0e-15) - goto done; - asum = hy1f1p(a, b, x, &acanc); - } - - /* Pick the result with less estimated error */ - - if (acanc < pcanc) { - pcanc = acanc; - psum = asum; - } - - done: - if (pcanc > 1.0e-12) - sf_error("hyperg", SF_ERROR_LOSS, NULL); - - return (psum); -} diff --git a/gtsam/3rdparty/cephes/cephes/i0.c b/gtsam/3rdparty/cephes/cephes/i0.c deleted file mode 100644 index 4e85d556ef..0000000000 --- a/gtsam/3rdparty/cephes/cephes/i0.c +++ /dev/null @@ -1,180 +0,0 @@ -/* i0.c - * - * Modified Bessel function of order zero - * - * - * - * SYNOPSIS: - * - * double x, y, i0(); - * - * y = i0( x ); - * - * - * - * DESCRIPTION: - * - * Returns modified Bessel function of order zero of the - * argument. - * - * The function is defined as i0(x) = j0( ix ). - * - * The range is partitioned into the two intervals [0,8] and - * (8, infinity). Chebyshev polynomial expansions are employed - * in each interval. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,30 30000 5.8e-16 1.4e-16 - * - */ - /* i0e.c - * - * Modified Bessel function of order zero, - * exponentially scaled - * - * - * - * SYNOPSIS: - * - * double x, y, i0e(); - * - * y = i0e( x ); - * - * - * - * DESCRIPTION: - * - * Returns exponentially scaled modified Bessel function - * of order zero of the argument. - * - * The function is defined as i0e(x) = exp(-|x|) j0( ix ). - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,30 30000 5.4e-16 1.2e-16 - * See i0(). - * - */ - -/* i0.c */ - - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" - -/* Chebyshev coefficients for exp(-x) I0(x) - * in the interval [0,8]. - * - * lim(x->0){ exp(-x) I0(x) } = 1. - */ -static double A[] = { - -4.41534164647933937950E-18, - 3.33079451882223809783E-17, - -2.43127984654795469359E-16, - 1.71539128555513303061E-15, - -1.16853328779934516808E-14, - 7.67618549860493561688E-14, - -4.85644678311192946090E-13, - 2.95505266312963983461E-12, - -1.72682629144155570723E-11, - 9.67580903537323691224E-11, - -5.18979560163526290666E-10, - 2.65982372468238665035E-9, - -1.30002500998624804212E-8, - 6.04699502254191894932E-8, - -2.67079385394061173391E-7, - 1.11738753912010371815E-6, - -4.41673835845875056359E-6, - 1.64484480707288970893E-5, - -5.75419501008210370398E-5, - 1.88502885095841655729E-4, - -5.76375574538582365885E-4, - 1.63947561694133579842E-3, - -4.32430999505057594430E-3, - 1.05464603945949983183E-2, - -2.37374148058994688156E-2, - 4.93052842396707084878E-2, - -9.49010970480476444210E-2, - 1.71620901522208775349E-1, - -3.04682672343198398683E-1, - 6.76795274409476084995E-1 -}; - -/* Chebyshev coefficients for exp(-x) sqrt(x) I0(x) - * in the inverted interval [8,infinity]. - * - * lim(x->inf){ exp(-x) sqrt(x) I0(x) } = 1/sqrt(2pi). - */ -static double B[] = { - -7.23318048787475395456E-18, - -4.83050448594418207126E-18, - 4.46562142029675999901E-17, - 3.46122286769746109310E-17, - -2.82762398051658348494E-16, - -3.42548561967721913462E-16, - 1.77256013305652638360E-15, - 3.81168066935262242075E-15, - -9.55484669882830764870E-15, - -4.15056934728722208663E-14, - 1.54008621752140982691E-14, - 3.85277838274214270114E-13, - 7.18012445138366623367E-13, - -1.79417853150680611778E-12, - -1.32158118404477131188E-11, - -3.14991652796324136454E-11, - 1.18891471078464383424E-11, - 4.94060238822496958910E-10, - 3.39623202570838634515E-9, - 2.26666899049817806459E-8, - 2.04891858946906374183E-7, - 2.89137052083475648297E-6, - 6.88975834691682398426E-5, - 3.36911647825569408990E-3, - 8.04490411014108831608E-1 -}; - -double i0(double x) -{ - double y; - - if (x < 0) - x = -x; - if (x <= 8.0) { - y = (x / 2.0) - 2.0; - return (exp(x) * chbevl(y, A, 30)); - } - - return (exp(x) * chbevl(32.0 / x - 2.0, B, 25) / sqrt(x)); - -} - - - - -double i0e(double x) -{ - double y; - - if (x < 0) - x = -x; - if (x <= 8.0) { - y = (x / 2.0) - 2.0; - return (chbevl(y, A, 30)); - } - - return (chbevl(32.0 / x - 2.0, B, 25) / sqrt(x)); - -} diff --git a/gtsam/3rdparty/cephes/cephes/i1.c b/gtsam/3rdparty/cephes/cephes/i1.c deleted file mode 100644 index 4553873f2c..0000000000 --- a/gtsam/3rdparty/cephes/cephes/i1.c +++ /dev/null @@ -1,184 +0,0 @@ -/* i1.c - * - * Modified Bessel function of order one - * - * - * - * SYNOPSIS: - * - * double x, y, i1(); - * - * y = i1( x ); - * - * - * - * DESCRIPTION: - * - * Returns modified Bessel function of order one of the - * argument. - * - * The function is defined as i1(x) = -i j1( ix ). - * - * The range is partitioned into the two intervals [0,8] and - * (8, infinity). Chebyshev polynomial expansions are employed - * in each interval. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 1.9e-15 2.1e-16 - * - * - */ - /* i1e.c - * - * Modified Bessel function of order one, - * exponentially scaled - * - * - * - * SYNOPSIS: - * - * double x, y, i1e(); - * - * y = i1e( x ); - * - * - * - * DESCRIPTION: - * - * Returns exponentially scaled modified Bessel function - * of order one of the argument. - * - * The function is defined as i1(x) = -i exp(-|x|) j1( ix ). - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 2.0e-15 2.0e-16 - * See i1(). - * - */ - -/* i1.c 2 */ - - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1985, 1987, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" - -/* Chebyshev coefficients for exp(-x) I1(x) / x - * in the interval [0,8]. - * - * lim(x->0){ exp(-x) I1(x) / x } = 1/2. - */ - -static double A[] = { - 2.77791411276104639959E-18, - -2.11142121435816608115E-17, - 1.55363195773620046921E-16, - -1.10559694773538630805E-15, - 7.60068429473540693410E-15, - -5.04218550472791168711E-14, - 3.22379336594557470981E-13, - -1.98397439776494371520E-12, - 1.17361862988909016308E-11, - -6.66348972350202774223E-11, - 3.62559028155211703701E-10, - -1.88724975172282928790E-9, - 9.38153738649577178388E-9, - -4.44505912879632808065E-8, - 2.00329475355213526229E-7, - -8.56872026469545474066E-7, - 3.47025130813767847674E-6, - -1.32731636560394358279E-5, - 4.78156510755005422638E-5, - -1.61760815825896745588E-4, - 5.12285956168575772895E-4, - -1.51357245063125314899E-3, - 4.15642294431288815669E-3, - -1.05640848946261981558E-2, - 2.47264490306265168283E-2, - -5.29459812080949914269E-2, - 1.02643658689847095384E-1, - -1.76416518357834055153E-1, - 2.52587186443633654823E-1 -}; - -/* Chebyshev coefficients for exp(-x) sqrt(x) I1(x) - * in the inverted interval [8,infinity]. - * - * lim(x->inf){ exp(-x) sqrt(x) I1(x) } = 1/sqrt(2pi). - */ -static double B[] = { - 7.51729631084210481353E-18, - 4.41434832307170791151E-18, - -4.65030536848935832153E-17, - -3.20952592199342395980E-17, - 2.96262899764595013876E-16, - 3.30820231092092828324E-16, - -1.88035477551078244854E-15, - -3.81440307243700780478E-15, - 1.04202769841288027642E-14, - 4.27244001671195135429E-14, - -2.10154184277266431302E-14, - -4.08355111109219731823E-13, - -7.19855177624590851209E-13, - 2.03562854414708950722E-12, - 1.41258074366137813316E-11, - 3.25260358301548823856E-11, - -1.89749581235054123450E-11, - -5.58974346219658380687E-10, - -3.83538038596423702205E-9, - -2.63146884688951950684E-8, - -2.51223623787020892529E-7, - -3.88256480887769039346E-6, - -1.10588938762623716291E-4, - -9.76109749136146840777E-3, - 7.78576235018280120474E-1 -}; - -double i1(double x) -{ - double y, z; - - z = fabs(x); - if (z <= 8.0) { - y = (z / 2.0) - 2.0; - z = chbevl(y, A, 29) * z * exp(z); - } - else { - z = exp(z) * chbevl(32.0 / z - 2.0, B, 25) / sqrt(z); - } - if (x < 0.0) - z = -z; - return (z); -} - -/* i1e() */ - -double i1e(double x) -{ - double y, z; - - z = fabs(x); - if (z <= 8.0) { - y = (z / 2.0) - 2.0; - z = chbevl(y, A, 29) * z; - } - else { - z = chbevl(32.0 / z - 2.0, B, 25) / sqrt(z); - } - if (x < 0.0) - z = -z; - return (z); -} diff --git a/gtsam/3rdparty/cephes/cephes/igam.c b/gtsam/3rdparty/cephes/cephes/igam.c index 75f871ec51..b3e9bbd847 100644 --- a/gtsam/3rdparty/cephes/cephes/igam.c +++ b/gtsam/3rdparty/cephes/cephes/igam.c @@ -125,12 +125,12 @@ static double igamc_series(double, double); static double asymptotic_series(double, double, int); -double igam(double a, double x) +double gtsam_cephes_igam(double a, double x) { double absxma_a; if (x < 0 || a < 0) { - sf_error("gammainc", SF_ERROR_DOMAIN, NULL); + gtsam_cephes_sf_error("gammainc", SF_ERROR_DOMAIN, NULL); return NAN; } else if (a == 0) { if (x > 0) { @@ -159,19 +159,19 @@ double igam(double a, double x) } if ((x > 1.0) && (x > a)) { - return (1.0 - igamc(a, x)); + return (1.0 - gtsam_cephes_igamc(a, x)); } return igam_series(a, x); } -double igamc(double a, double x) +double gtsam_cephes_igamc(double a, double x) { double absxma_a; if (x < 0 || a < 0) { - sf_error("gammaincc", SF_ERROR_DOMAIN, NULL); + gtsam_cephes_sf_error("gammaincc", SF_ERROR_DOMAIN, NULL); return NAN; } else if (a == 0) { if (x > 0) { @@ -228,27 +228,27 @@ double igamc(double a, double x) * corrected from (15) and (16) in [2] by replacing exp(x - a) with * exp(a - x). */ -double igam_fac(double a, double x) +double gtsam_cephes_igam_fac(double a, double x) { double ax, fac, res, num; if (fabs(a - x) > 0.4 * fabs(a)) { - ax = a * log(x) - x - lgam(a); + ax = a * log(x) - x - gtsam_cephes_lgam(a); if (ax < -MAXLOG) { - sf_error("igam", SF_ERROR_UNDERFLOW, NULL); + gtsam_cephes_sf_error("igam", SF_ERROR_UNDERFLOW, NULL); return 0.0; } return exp(ax); } fac = a + lanczos_g - 0.5; - res = sqrt(fac / exp(1)) / lanczos_sum_expg_scaled(a); + res = sqrt(fac / exp(1)) / gtsam_cephes_lanczos_sum_expg_scaled(a); if ((a < 200) && (x < 200)) { res *= exp(a - x) * pow(x / fac, a); } else { num = x - a - lanczos_g + 0.5; - res *= exp(a * log1pmx(num / fac) + x * (0.5 - lanczos_g) / fac); + res *= exp(a * gtsam_cephes_log1pmx(num / fac) + x * (0.5 - lanczos_g) / fac); } return res; @@ -262,7 +262,7 @@ static double igamc_continued_fraction(double a, double x) double ans, ax, c, yc, r, t, y, z; double pk, pkm1, pkm2, qk, qkm1, qkm2; - ax = igam_fac(a, x); + ax = gtsam_cephes_igam_fac(a, x); if (ax == 0.0) { return 0.0; } @@ -316,7 +316,7 @@ static double igam_series(double a, double x) int i; double ans, ax, c, r; - ax = igam_fac(a, x); + ax = gtsam_cephes_igam_fac(a, x); if (ax == 0.0) { return 0.0; } @@ -359,8 +359,8 @@ static double igamc_series(double a, double x) } logx = log(x); - term = -expm1(a * logx - lgam1p(a)); - return term - exp(a * logx - lgam(a)) * sum; + term = -expm1(a * logx - gtsam_cephes_lgam1p(a)); + return term - exp(a * logx - gtsam_cephes_lgam(a)) * sum; } @@ -384,9 +384,9 @@ static double asymptotic_series(double a, double x, int func) } if (lambda > 1) { - eta = sqrt(-2 * log1pmx(sigma)); + eta = sqrt(-2 * gtsam_cephes_log1pmx(sigma)); } else if (lambda < 1) { - eta = -sqrt(-2 * log1pmx(sigma)); + eta = -sqrt(-2 * gtsam_cephes_log1pmx(sigma)); } else { eta = 0; } diff --git a/gtsam/3rdparty/cephes/cephes/igami.c b/gtsam/3rdparty/cephes/cephes/igami.c index 97fc93ff4d..aec652e9b5 100644 --- a/gtsam/3rdparty/cephes/cephes/igami.c +++ b/gtsam/3rdparty/cephes/cephes/igami.c @@ -91,7 +91,7 @@ static double find_inverse_gamma(double a, double p, double q) } } else if (a < 1) { - double g = Gamma(a); + double g = gtsam_cephes_Gamma(a); double b = q * g; if ((b > 0.6) || ((b >= 0.45) && (a >= 0.3))) { @@ -184,7 +184,7 @@ static double find_inverse_gamma(double a, double p, double q) } else { double D = fmax(2, a * (a - 1)); - double lg = lgam(a); + double lg = gtsam_cephes_lgam(a); double lb = log(q) + lg; if (lb < -D * 2.3) { /* DiDonato and Morris Eq 25: */ @@ -228,7 +228,7 @@ static double find_inverse_gamma(double a, double p, double q) double ap2 = a + 2; if (w < 0.15 * ap1) { /* DiDonato and Morris Eq 35: */ - double v = log(p) + lgam(ap1); + double v = log(p) + gtsam_cephes_lgam(ap1); z = exp((v + w) / a); s = log1p(z / ap1 * (1 + z / ap2)); z = exp((v + z - s) / a); @@ -244,7 +244,7 @@ static double find_inverse_gamma(double a, double p, double q) else { /* DiDonato and Morris Eq 36: */ double ls = log(didonato_SN(a, z, 100, 1e-4)); - double v = log(p) + lgam(ap1); + double v = log(p) + gtsam_cephes_lgam(ap1); z = exp((v + z - ls) / a); result = z * (1 - (a * log(z) - z - v + ls) / (a - z)); } @@ -254,7 +254,7 @@ static double find_inverse_gamma(double a, double p, double q) } -double igami(double a, double p) +double gtsam_cephes_igami(double a, double p) { int i; double x, fac, f_fp, fpp_fp; @@ -263,7 +263,7 @@ double igami(double a, double p) return NAN; } else if ((a < 0) || (p < 0) || (p > 1)) { - sf_error("gammaincinv", SF_ERROR_DOMAIN, NULL); + gtsam_cephes_sf_error("gammaincinv", SF_ERROR_DOMAIN, NULL); } else if (p == 0.0) { return 0.0; @@ -272,17 +272,17 @@ double igami(double a, double p) return INFINITY; } else if (p > 0.9) { - return igamci(a, 1 - p); + return gtsam_cephes_igamci(a, 1 - p); } x = find_inverse_gamma(a, p, 1 - p); /* Halley's method */ for (i = 0; i < 3; i++) { - fac = igam_fac(a, x); + fac = gtsam_cephes_igam_fac(a, x); if (fac == 0.0) { return x; } - f_fp = (igam(a, x) - p) * x / fac; + f_fp = (gtsam_cephes_igam(a, x) - p) * x / fac; /* The ratio of the first and second derivatives simplifies */ fpp_fp = -1.0 + (a - 1) / x; if (isinf(fpp_fp)) { @@ -298,7 +298,7 @@ double igami(double a, double p) } -double igamci(double a, double q) +double gtsam_cephes_igamci(double a, double q) { int i; double x, fac, f_fp, fpp_fp; @@ -307,7 +307,7 @@ double igamci(double a, double q) return NAN; } else if ((a < 0.0) || (q < 0.0) || (q > 1.0)) { - sf_error("gammainccinv", SF_ERROR_DOMAIN, NULL); + gtsam_cephes_sf_error("gammainccinv", SF_ERROR_DOMAIN, NULL); } else if (q == 0.0) { return INFINITY; @@ -316,16 +316,16 @@ double igamci(double a, double q) return 0.0; } else if (q > 0.9) { - return igami(a, 1 - q); + return gtsam_cephes_igami(a, 1 - q); } x = find_inverse_gamma(a, 1 - q, q); for (i = 0; i < 3; i++) { - fac = igam_fac(a, x); + fac = gtsam_cephes_igam_fac(a, x); if (fac == 0.0) { return x; } - f_fp = (igamc(a, x) - q) * x / (-fac); + f_fp = (gtsam_cephes_igamc(a, x) - q) * x / (-fac); fpp_fp = -1.0 + (a - 1) / x; if (isinf(fpp_fp)) { x = x - f_fp; diff --git a/gtsam/3rdparty/cephes/cephes/incbet.c b/gtsam/3rdparty/cephes/cephes/incbet.c deleted file mode 100644 index b03427f4f7..0000000000 --- a/gtsam/3rdparty/cephes/cephes/incbet.c +++ /dev/null @@ -1,369 +0,0 @@ -/* incbet.c - * - * Incomplete beta integral - * - * - * SYNOPSIS: - * - * double a, b, x, y, incbet(); - * - * y = incbet( a, b, x ); - * - * - * DESCRIPTION: - * - * Returns incomplete beta integral of the arguments, evaluated - * from zero to x. The function is defined as - * - * x - * - - - * | (a+b) | | a-1 b-1 - * ----------- | t (1-t) dt. - * - - | | - * | (a) | (b) - - * 0 - * - * The domain of definition is 0 <= x <= 1. In this - * implementation a and b are restricted to positive values. - * The integral from x to 1 may be obtained by the symmetry - * relation - * - * 1 - incbet( a, b, x ) = incbet( b, a, 1-x ). - * - * The integral is evaluated by a continued fraction expansion - * or, when b*x is small, by a power series. - * - * ACCURACY: - * - * Tested at uniformly distributed random points (a,b,x) with a and b - * in "domain" and x between 0 and 1. - * Relative error - * arithmetic domain # trials peak rms - * IEEE 0,5 10000 6.9e-15 4.5e-16 - * IEEE 0,85 250000 2.2e-13 1.7e-14 - * IEEE 0,1000 30000 5.3e-12 6.3e-13 - * IEEE 0,10000 250000 9.3e-11 7.1e-12 - * IEEE 0,100000 10000 8.7e-10 4.8e-11 - * Outputs smaller than the IEEE gradual underflow threshold - * were excluded from these statistics. - * - * ERROR MESSAGES: - * message condition value returned - * incbet domain x<0, x>1 0.0 - * incbet underflow 0.0 - */ - - -/* - * Cephes Math Library, Release 2.3: March, 1995 - * Copyright 1984, 1995 by Stephen L. Moshier - */ - -#include "mconf.h" - -#define MAXGAM 171.624376956302725 - -extern double MACHEP, MINLOG, MAXLOG; - -static double big = 4.503599627370496e15; -static double biginv = 2.22044604925031308085e-16; - - -/* Power series for incomplete beta integral. - * Use when b*x is small and x not too close to 1. */ - -static double pseries(double a, double b, double x) -{ - double s, t, u, v, n, t1, z, ai; - - ai = 1.0 / a; - u = (1.0 - b) * x; - v = u / (a + 1.0); - t1 = v; - t = u; - n = 2.0; - s = 0.0; - z = MACHEP * ai; - while (fabs(v) > z) { - u = (n - b) * x / n; - t *= u; - v = t / (a + n); - s += v; - n += 1.0; - } - s += t1; - s += ai; - - u = a * log(x); - if ((a + b) < MAXGAM && fabs(u) < MAXLOG) { - t = 1.0 / beta(a, b); - s = s * t * pow(x, a); - } - else { - t = -lbeta(a,b) + u + log(s); - if (t < MINLOG) - s = 0.0; - else - s = exp(t); - } - return (s); -} - - -/* Continued fraction expansion #1 for incomplete beta integral */ - -static double incbcf(double a, double b, double x) -{ - double xk, pk, pkm1, pkm2, qk, qkm1, qkm2; - double k1, k2, k3, k4, k5, k6, k7, k8; - double r, t, ans, thresh; - int n; - - k1 = a; - k2 = a + b; - k3 = a; - k4 = a + 1.0; - k5 = 1.0; - k6 = b - 1.0; - k7 = k4; - k8 = a + 2.0; - - pkm2 = 0.0; - qkm2 = 1.0; - pkm1 = 1.0; - qkm1 = 1.0; - ans = 1.0; - r = 1.0; - n = 0; - thresh = 3.0 * MACHEP; - do { - - xk = -(x * k1 * k2) / (k3 * k4); - pk = pkm1 + pkm2 * xk; - qk = qkm1 + qkm2 * xk; - pkm2 = pkm1; - pkm1 = pk; - qkm2 = qkm1; - qkm1 = qk; - - xk = (x * k5 * k6) / (k7 * k8); - pk = pkm1 + pkm2 * xk; - qk = qkm1 + qkm2 * xk; - pkm2 = pkm1; - pkm1 = pk; - qkm2 = qkm1; - qkm1 = qk; - - if (qk != 0) - r = pk / qk; - if (r != 0) { - t = fabs((ans - r) / r); - ans = r; - } - else - t = 1.0; - - if (t < thresh) - goto cdone; - - k1 += 1.0; - k2 += 1.0; - k3 += 2.0; - k4 += 2.0; - k5 += 1.0; - k6 -= 1.0; - k7 += 2.0; - k8 += 2.0; - - if ((fabs(qk) + fabs(pk)) > big) { - pkm2 *= biginv; - pkm1 *= biginv; - qkm2 *= biginv; - qkm1 *= biginv; - } - if ((fabs(qk) < biginv) || (fabs(pk) < biginv)) { - pkm2 *= big; - pkm1 *= big; - qkm2 *= big; - qkm1 *= big; - } - } - while (++n < 300); - - cdone: - return (ans); -} - - -/* Continued fraction expansion #2 for incomplete beta integral */ - -static double incbd(double a, double b, double x) -{ - double xk, pk, pkm1, pkm2, qk, qkm1, qkm2; - double k1, k2, k3, k4, k5, k6, k7, k8; - double r, t, ans, z, thresh; - int n; - - k1 = a; - k2 = b - 1.0; - k3 = a; - k4 = a + 1.0; - k5 = 1.0; - k6 = a + b; - k7 = a + 1.0;; - k8 = a + 2.0; - - pkm2 = 0.0; - qkm2 = 1.0; - pkm1 = 1.0; - qkm1 = 1.0; - z = x / (1.0 - x); - ans = 1.0; - r = 1.0; - n = 0; - thresh = 3.0 * MACHEP; - do { - - xk = -(z * k1 * k2) / (k3 * k4); - pk = pkm1 + pkm2 * xk; - qk = qkm1 + qkm2 * xk; - pkm2 = pkm1; - pkm1 = pk; - qkm2 = qkm1; - qkm1 = qk; - - xk = (z * k5 * k6) / (k7 * k8); - pk = pkm1 + pkm2 * xk; - qk = qkm1 + qkm2 * xk; - pkm2 = pkm1; - pkm1 = pk; - qkm2 = qkm1; - qkm1 = qk; - - if (qk != 0) - r = pk / qk; - if (r != 0) { - t = fabs((ans - r) / r); - ans = r; - } - else - t = 1.0; - - if (t < thresh) - goto cdone; - - k1 += 1.0; - k2 -= 1.0; - k3 += 2.0; - k4 += 2.0; - k5 += 1.0; - k6 += 1.0; - k7 += 2.0; - k8 += 2.0; - - if ((fabs(qk) + fabs(pk)) > big) { - pkm2 *= biginv; - pkm1 *= biginv; - qkm2 *= biginv; - qkm1 *= biginv; - } - if ((fabs(qk) < biginv) || (fabs(pk) < biginv)) { - pkm2 *= big; - pkm1 *= big; - qkm2 *= big; - qkm1 *= big; - } - } - while (++n < 300); - cdone: - return (ans); -} - - -double incbet(double aa, double bb, double xx) -{ - double a, b, t, x, xc, w, y; - int flag; - - if (aa <= 0.0 || bb <= 0.0) - goto domerr; - - if ((xx <= 0.0) || (xx >= 1.0)) { - if (xx == 0.0) - return (0.0); - if (xx == 1.0) - return (1.0); - domerr: - sf_error("incbet", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - flag = 0; - if ((bb * xx) <= 1.0 && xx <= 0.95) { - t = pseries(aa, bb, xx); - goto done; - } - - w = 1.0 - xx; - - /* Reverse a and b if x is greater than the mean. */ - if (xx > (aa / (aa + bb))) { - flag = 1; - a = bb; - b = aa; - xc = xx; - x = w; - } - else { - a = aa; - b = bb; - xc = w; - x = xx; - } - - if (flag == 1 && (b * x) <= 1.0 && x <= 0.95) { - t = pseries(a, b, x); - goto done; - } - - /* Choose expansion for better convergence. */ - y = x * (a + b - 2.0) - (a - 1.0); - if (y < 0.0) - w = incbcf(a, b, x); - else - w = incbd(a, b, x) / xc; - - /* Multiply w by the factor - * a b _ _ _ - * x (1-x) | (a+b) / ( a | (a) | (b) ) . */ - - y = a * log(x); - t = b * log(xc); - if ((a + b) < MAXGAM && fabs(y) < MAXLOG && fabs(t) < MAXLOG) { - t = pow(xc, b); - t *= pow(x, a); - t /= a; - t *= w; - t *= 1.0 / beta(a, b); - goto done; - } - /* Resort to logarithms. */ - y += t - lbeta(a,b); - y += log(w / a); - if (y < MINLOG) - t = 0.0; - else - t = exp(y); - - done: - - if (flag == 1) { - if (t <= MACHEP) - t = 1.0 - MACHEP; - else - t = 1.0 - t; - } - return (t); -} - - diff --git a/gtsam/3rdparty/cephes/cephes/incbi.c b/gtsam/3rdparty/cephes/cephes/incbi.c deleted file mode 100644 index 747c43f538..0000000000 --- a/gtsam/3rdparty/cephes/cephes/incbi.c +++ /dev/null @@ -1,275 +0,0 @@ -/* incbi() - * - * Inverse of incomplete beta integral - * - * - * - * SYNOPSIS: - * - * double a, b, x, y, incbi(); - * - * x = incbi( a, b, y ); - * - * - * - * DESCRIPTION: - * - * Given y, the function finds x such that - * - * incbet( a, b, x ) = y . - * - * The routine performs interval halving or Newton iterations to find the - * root of incbet(a,b,x) - y = 0. - * - * - * ACCURACY: - * - * Relative error: - * x a,b - * arithmetic domain domain # trials peak rms - * IEEE 0,1 .5,10000 50000 5.8e-12 1.3e-13 - * IEEE 0,1 .25,100 100000 1.8e-13 3.9e-15 - * IEEE 0,1 0,5 50000 1.1e-12 5.5e-15 - * VAX 0,1 .5,100 25000 3.5e-14 1.1e-15 - * With a and b constrained to half-integer or integer values: - * IEEE 0,1 .5,10000 50000 5.8e-12 1.1e-13 - * IEEE 0,1 .5,100 100000 1.7e-14 7.9e-16 - * With a = .5, b constrained to half-integer or integer values: - * IEEE 0,1 .5,10000 10000 8.3e-11 1.0e-11 - */ - - -/* - * Cephes Math Library Release 2.4: March,1996 - * Copyright 1984, 1996 by Stephen L. Moshier - */ - -#include "mconf.h" - -extern double MACHEP, MAXLOG, MINLOG; - -double incbi(double aa, double bb, double yy0) -{ - double a, b, y0, d, y, x, x0, x1, lgm, yp, di, dithresh, yl, yh, xt; - int i, rflg, dir, nflg; - - - i = 0; - if (yy0 <= 0) - return (0.0); - if (yy0 >= 1.0) - return (1.0); - x0 = 0.0; - yl = 0.0; - x1 = 1.0; - yh = 1.0; - nflg = 0; - - if (aa <= 1.0 || bb <= 1.0) { - dithresh = 1.0e-6; - rflg = 0; - a = aa; - b = bb; - y0 = yy0; - x = a / (a + b); - y = incbet(a, b, x); - goto ihalve; - } - else { - dithresh = 1.0e-4; - } - /* approximation to inverse function */ - - yp = -ndtri(yy0); - - if (yy0 > 0.5) { - rflg = 1; - a = bb; - b = aa; - y0 = 1.0 - yy0; - yp = -yp; - } - else { - rflg = 0; - a = aa; - b = bb; - y0 = yy0; - } - - lgm = (yp * yp - 3.0) / 6.0; - x = 2.0 / (1.0 / (2.0 * a - 1.0) + 1.0 / (2.0 * b - 1.0)); - d = yp * sqrt(x + lgm) / x - - (1.0 / (2.0 * b - 1.0) - 1.0 / (2.0 * a - 1.0)) - * (lgm + 5.0 / 6.0 - 2.0 / (3.0 * x)); - d = 2.0 * d; - if (d < MINLOG) { - x = 1.0; - goto under; - } - x = a / (a + b * exp(d)); - y = incbet(a, b, x); - yp = (y - y0) / y0; - if (fabs(yp) < 0.2) - goto newt; - - /* Resort to interval halving if not close enough. */ - ihalve: - - dir = 0; - di = 0.5; - for (i = 0; i < 100; i++) { - if (i != 0) { - x = x0 + di * (x1 - x0); - if (x == 1.0) - x = 1.0 - MACHEP; - if (x == 0.0) { - di = 0.5; - x = x0 + di * (x1 - x0); - if (x == 0.0) - goto under; - } - y = incbet(a, b, x); - yp = (x1 - x0) / (x1 + x0); - if (fabs(yp) < dithresh) - goto newt; - yp = (y - y0) / y0; - if (fabs(yp) < dithresh) - goto newt; - } - if (y < y0) { - x0 = x; - yl = y; - if (dir < 0) { - dir = 0; - di = 0.5; - } - else if (dir > 3) - di = 1.0 - (1.0 - di) * (1.0 - di); - else if (dir > 1) - di = 0.5 * di + 0.5; - else - di = (y0 - y) / (yh - yl); - dir += 1; - if (x0 > 0.75) { - if (rflg == 1) { - rflg = 0; - a = aa; - b = bb; - y0 = yy0; - } - else { - rflg = 1; - a = bb; - b = aa; - y0 = 1.0 - yy0; - } - x = 1.0 - x; - y = incbet(a, b, x); - x0 = 0.0; - yl = 0.0; - x1 = 1.0; - yh = 1.0; - goto ihalve; - } - } - else { - x1 = x; - if (rflg == 1 && x1 < MACHEP) { - x = 0.0; - goto done; - } - yh = y; - if (dir > 0) { - dir = 0; - di = 0.5; - } - else if (dir < -3) - di = di * di; - else if (dir < -1) - di = 0.5 * di; - else - di = (y - y0) / (yh - yl); - dir -= 1; - } - } - sf_error("incbi", SF_ERROR_LOSS, NULL); - if (x0 >= 1.0) { - x = 1.0 - MACHEP; - goto done; - } - if (x <= 0.0) { - under: - sf_error("incbi", SF_ERROR_UNDERFLOW, NULL); - x = 0.0; - goto done; - } - - newt: - - if (nflg) - goto done; - nflg = 1; - lgm = lgam(a + b) - lgam(a) - lgam(b); - - for (i = 0; i < 8; i++) { - /* Compute the function at this point. */ - if (i != 0) - y = incbet(a, b, x); - if (y < yl) { - x = x0; - y = yl; - } - else if (y > yh) { - x = x1; - y = yh; - } - else if (y < y0) { - x0 = x; - yl = y; - } - else { - x1 = x; - yh = y; - } - if (x == 1.0 || x == 0.0) - break; - /* Compute the derivative of the function at this point. */ - d = (a - 1.0) * log(x) + (b - 1.0) * log(1.0 - x) + lgm; - if (d < MINLOG) - goto done; - if (d > MAXLOG) - break; - d = exp(d); - /* Compute the step to the next approximation of x. */ - d = (y - y0) / d; - xt = x - d; - if (xt <= x0) { - y = (x - x0) / (x1 - x0); - xt = x0 + 0.5 * y * (x - x0); - if (xt <= 0.0) - break; - } - if (xt >= x1) { - y = (x1 - x) / (x1 - x0); - xt = x1 - 0.5 * y * (x1 - x); - if (xt >= 1.0) - break; - } - x = xt; - if (fabs(d / x) < 128.0 * MACHEP) - goto done; - } - /* Did not converge. */ - dithresh = 256.0 * MACHEP; - goto ihalve; - - done: - - if (rflg) { - if (x <= MACHEP) - x = 1.0 - MACHEP; - else - x = 1.0 - x; - } - return (x); -} diff --git a/gtsam/3rdparty/cephes/cephes/j0.c b/gtsam/3rdparty/cephes/cephes/j0.c deleted file mode 100644 index 094ef6cef1..0000000000 --- a/gtsam/3rdparty/cephes/cephes/j0.c +++ /dev/null @@ -1,246 +0,0 @@ -/* j0.c - * - * Bessel function of order zero - * - * - * - * SYNOPSIS: - * - * double x, y, j0(); - * - * y = j0( x ); - * - * - * - * DESCRIPTION: - * - * Returns Bessel function of order zero of the argument. - * - * The domain is divided into the intervals [0, 5] and - * (5, infinity). In the first interval the following rational - * approximation is used: - * - * - * 2 2 - * (w - r ) (w - r ) P (w) / Q (w) - * 1 2 3 8 - * - * 2 - * where w = x and the two r's are zeros of the function. - * - * In the second interval, the Hankel asymptotic expansion - * is employed with two rational functions of degree 6/6 - * and 7/7. - * - * - * - * ACCURACY: - * - * Absolute error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 60000 4.2e-16 1.1e-16 - * - */ - /* y0.c - * - * Bessel function of the second kind, order zero - * - * - * - * SYNOPSIS: - * - * double x, y, y0(); - * - * y = y0( x ); - * - * - * - * DESCRIPTION: - * - * Returns Bessel function of the second kind, of order - * zero, of the argument. - * - * The domain is divided into the intervals [0, 5] and - * (5, infinity). In the first interval a rational approximation - * R(x) is employed to compute - * y0(x) = R(x) + 2 * log(x) * j0(x) / M_PI. - * Thus a call to j0() is required. - * - * In the second interval, the Hankel asymptotic expansion - * is employed with two rational functions of degree 6/6 - * and 7/7. - * - * - * - * ACCURACY: - * - * Absolute error, when y0(x) < 1; else relative error: - * - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 1.3e-15 1.6e-16 - * - */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1989, 2000 by Stephen L. Moshier - */ - -/* Note: all coefficients satisfy the relative error criterion - * except YP, YQ which are designed for absolute error. */ - -#include "mconf.h" - -static double PP[7] = { - 7.96936729297347051624E-4, - 8.28352392107440799803E-2, - 1.23953371646414299388E0, - 5.44725003058768775090E0, - 8.74716500199817011941E0, - 5.30324038235394892183E0, - 9.99999999999999997821E-1, -}; - -static double PQ[7] = { - 9.24408810558863637013E-4, - 8.56288474354474431428E-2, - 1.25352743901058953537E0, - 5.47097740330417105182E0, - 8.76190883237069594232E0, - 5.30605288235394617618E0, - 1.00000000000000000218E0, -}; - -static double QP[8] = { - -1.13663838898469149931E-2, - -1.28252718670509318512E0, - -1.95539544257735972385E1, - -9.32060152123768231369E1, - -1.77681167980488050595E2, - -1.47077505154951170175E2, - -5.14105326766599330220E1, - -6.05014350600728481186E0, -}; - -static double QQ[7] = { - /* 1.00000000000000000000E0, */ - 6.43178256118178023184E1, - 8.56430025976980587198E2, - 3.88240183605401609683E3, - 7.24046774195652478189E3, - 5.93072701187316984827E3, - 2.06209331660327847417E3, - 2.42005740240291393179E2, -}; - -static double YP[8] = { - 1.55924367855235737965E4, - -1.46639295903971606143E7, - 5.43526477051876500413E9, - -9.82136065717911466409E11, - 8.75906394395366999549E13, - -3.46628303384729719441E15, - 4.42733268572569800351E16, - -1.84950800436986690637E16, -}; - -static double YQ[7] = { - /* 1.00000000000000000000E0, */ - 1.04128353664259848412E3, - 6.26107330137134956842E5, - 2.68919633393814121987E8, - 8.64002487103935000337E10, - 2.02979612750105546709E13, - 3.17157752842975028269E15, - 2.50596256172653059228E17, -}; - -/* 5.783185962946784521175995758455807035071 */ -static double DR1 = 5.78318596294678452118E0; - -/* 30.47126234366208639907816317502275584842 */ -static double DR2 = 3.04712623436620863991E1; - -static double RP[4] = { - -4.79443220978201773821E9, - 1.95617491946556577543E12, - -2.49248344360967716204E14, - 9.70862251047306323952E15, -}; - -static double RQ[8] = { - /* 1.00000000000000000000E0, */ - 4.99563147152651017219E2, - 1.73785401676374683123E5, - 4.84409658339962045305E7, - 1.11855537045356834862E10, - 2.11277520115489217587E12, - 3.10518229857422583814E14, - 3.18121955943204943306E16, - 1.71086294081043136091E18, -}; - -extern double SQ2OPI; - -double j0(double x) -{ - double w, z, p, q, xn; - - if (x < 0) - x = -x; - - if (x <= 5.0) { - z = x * x; - if (x < 1.0e-5) - return (1.0 - z / 4.0); - - p = (z - DR1) * (z - DR2); - p = p * polevl(z, RP, 3) / p1evl(z, RQ, 8); - return (p); - } - - w = 5.0 / x; - q = 25.0 / (x * x); - p = polevl(q, PP, 6) / polevl(q, PQ, 6); - q = polevl(q, QP, 7) / p1evl(q, QQ, 7); - xn = x - M_PI_4; - p = p * cos(xn) - w * q * sin(xn); - return (p * SQ2OPI / sqrt(x)); -} - -/* y0() 2 */ -/* Bessel function of second kind, order zero */ - -/* Rational approximation coefficients YP[], YQ[] are used here. - * The function computed is y0(x) - 2 * log(x) * j0(x) / M_PI, - * whose value at x = 0 is 2 * ( log(0.5) + EUL ) / M_PI - * = 0.073804295108687225. - */ - -double y0(double x) -{ - double w, z, p, q, xn; - - if (x <= 5.0) { - if (x == 0.0) { - sf_error("y0", SF_ERROR_SINGULAR, NULL); - return -INFINITY; - } - else if (x < 0.0) { - sf_error("y0", SF_ERROR_DOMAIN, NULL); - return NAN; - } - z = x * x; - w = polevl(z, YP, 7) / p1evl(z, YQ, 7); - w += M_2_PI * log(x) * j0(x); - return (w); - } - - w = 5.0 / x; - z = 25.0 / (x * x); - p = polevl(z, PP, 6) / polevl(z, PQ, 6); - q = polevl(z, QP, 7) / p1evl(z, QQ, 7); - xn = x - M_PI_4; - p = p * sin(xn) + w * q * cos(xn); - return (p * SQ2OPI / sqrt(x)); -} diff --git a/gtsam/3rdparty/cephes/cephes/j1.c b/gtsam/3rdparty/cephes/cephes/j1.c deleted file mode 100644 index 123194de84..0000000000 --- a/gtsam/3rdparty/cephes/cephes/j1.c +++ /dev/null @@ -1,225 +0,0 @@ -/* j1.c - * - * Bessel function of order one - * - * - * - * SYNOPSIS: - * - * double x, y, j1(); - * - * y = j1( x ); - * - * - * - * DESCRIPTION: - * - * Returns Bessel function of order one of the argument. - * - * The domain is divided into the intervals [0, 8] and - * (8, infinity). In the first interval a 24 term Chebyshev - * expansion is used. In the second, the asymptotic - * trigonometric representation is employed using two - * rational functions of degree 5/5. - * - * - * - * ACCURACY: - * - * Absolute error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 2.6e-16 1.1e-16 - * - * - */ - /* y1.c - * - * Bessel function of second kind of order one - * - * - * - * SYNOPSIS: - * - * double x, y, y1(); - * - * y = y1( x ); - * - * - * - * DESCRIPTION: - * - * Returns Bessel function of the second kind of order one - * of the argument. - * - * The domain is divided into the intervals [0, 8] and - * (8, infinity). In the first interval a 25 term Chebyshev - * expansion is used, and a call to j1() is required. - * In the second, the asymptotic trigonometric representation - * is employed using two rational functions of degree 5/5. - * - * - * - * ACCURACY: - * - * Absolute error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 1.0e-15 1.3e-16 - * - * (error criterion relative when |y1| > 1). - * - */ - - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1989, 2000 by Stephen L. Moshier - */ - -/* - * #define PIO4 .78539816339744830962 - * #define THPIO4 2.35619449019234492885 - * #define SQ2OPI .79788456080286535588 - */ - -#include "mconf.h" - -static double RP[4] = { - -8.99971225705559398224E8, - 4.52228297998194034323E11, - -7.27494245221818276015E13, - 3.68295732863852883286E15, -}; - -static double RQ[8] = { - /* 1.00000000000000000000E0, */ - 6.20836478118054335476E2, - 2.56987256757748830383E5, - 8.35146791431949253037E7, - 2.21511595479792499675E10, - 4.74914122079991414898E12, - 7.84369607876235854894E14, - 8.95222336184627338078E16, - 5.32278620332680085395E18, -}; - -static double PP[7] = { - 7.62125616208173112003E-4, - 7.31397056940917570436E-2, - 1.12719608129684925192E0, - 5.11207951146807644818E0, - 8.42404590141772420927E0, - 5.21451598682361504063E0, - 1.00000000000000000254E0, -}; - -static double PQ[7] = { - 5.71323128072548699714E-4, - 6.88455908754495404082E-2, - 1.10514232634061696926E0, - 5.07386386128601488557E0, - 8.39985554327604159757E0, - 5.20982848682361821619E0, - 9.99999999999999997461E-1, -}; - -static double QP[8] = { - 5.10862594750176621635E-2, - 4.98213872951233449420E0, - 7.58238284132545283818E1, - 3.66779609360150777800E2, - 7.10856304998926107277E2, - 5.97489612400613639965E2, - 2.11688757100572135698E2, - 2.52070205858023719784E1, -}; - -static double QQ[7] = { - /* 1.00000000000000000000E0, */ - 7.42373277035675149943E1, - 1.05644886038262816351E3, - 4.98641058337653607651E3, - 9.56231892404756170795E3, - 7.99704160447350683650E3, - 2.82619278517639096600E3, - 3.36093607810698293419E2, -}; - -static double YP[6] = { - 1.26320474790178026440E9, - -6.47355876379160291031E11, - 1.14509511541823727583E14, - -8.12770255501325109621E15, - 2.02439475713594898196E17, - -7.78877196265950026825E17, -}; - -static double YQ[8] = { - /* 1.00000000000000000000E0, */ - 5.94301592346128195359E2, - 2.35564092943068577943E5, - 7.34811944459721705660E7, - 1.87601316108706159478E10, - 3.88231277496238566008E12, - 6.20557727146953693363E14, - 6.87141087355300489866E16, - 3.97270608116560655612E18, -}; - - -static double Z1 = 1.46819706421238932572E1; -static double Z2 = 4.92184563216946036703E1; - -extern double THPIO4, SQ2OPI; - -double j1(double x) -{ - double w, z, p, q, xn; - - w = x; - if (x < 0) - return -j1(-x); - - if (w <= 5.0) { - z = x * x; - w = polevl(z, RP, 3) / p1evl(z, RQ, 8); - w = w * x * (z - Z1) * (z - Z2); - return (w); - } - - w = 5.0 / x; - z = w * w; - p = polevl(z, PP, 6) / polevl(z, PQ, 6); - q = polevl(z, QP, 7) / p1evl(z, QQ, 7); - xn = x - THPIO4; - p = p * cos(xn) - w * q * sin(xn); - return (p * SQ2OPI / sqrt(x)); -} - - -double y1(double x) -{ - double w, z, p, q, xn; - - if (x <= 5.0) { - if (x == 0.0) { - sf_error("y1", SF_ERROR_SINGULAR, NULL); - return -INFINITY; - } - else if (x <= 0.0) { - sf_error("y1", SF_ERROR_DOMAIN, NULL); - return NAN; - } - z = x * x; - w = x * (polevl(z, YP, 5) / p1evl(z, YQ, 8)); - w += M_2_PI * (j1(x) * log(x) - 1.0 / x); - return (w); - } - - w = 5.0 / x; - z = w * w; - p = polevl(z, PP, 6) / polevl(z, PQ, 6); - q = polevl(z, QP, 7) / p1evl(z, QQ, 7); - xn = x - THPIO4; - p = p * sin(xn) + w * q * cos(xn); - return (p * SQ2OPI / sqrt(x)); -} diff --git a/gtsam/3rdparty/cephes/cephes/jv.c b/gtsam/3rdparty/cephes/cephes/jv.c deleted file mode 100644 index 3434c18f31..0000000000 --- a/gtsam/3rdparty/cephes/cephes/jv.c +++ /dev/null @@ -1,841 +0,0 @@ -/* jv.c - * - * Bessel function of noninteger order - * - * - * - * SYNOPSIS: - * - * double v, x, y, jv(); - * - * y = jv( v, x ); - * - * - * - * DESCRIPTION: - * - * Returns Bessel function of order v of the argument, - * where v is real. Negative x is allowed if v is an integer. - * - * Several expansions are included: the ascending power - * series, the Hankel expansion, and two transitional - * expansions for large v. If v is not too large, it - * is reduced by recurrence to a region of best accuracy. - * The transitional expansions give 12D accuracy for v > 500. - * - * - * - * ACCURACY: - * Results for integer v are indicated by *, where x and v - * both vary from -125 to +125. Otherwise, - * x ranges from 0 to 125, v ranges as indicated by "domain." - * Error criterion is absolute, except relative when |jv()| > 1. - * - * arithmetic v domain x domain # trials peak rms - * IEEE 0,125 0,125 100000 4.6e-15 2.2e-16 - * IEEE -125,0 0,125 40000 5.4e-11 3.7e-13 - * IEEE 0,500 0,500 20000 4.4e-15 4.0e-16 - * Integer v: - * IEEE -125,125 -125,125 50000 3.5e-15* 1.9e-16* - * - */ - - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1989, 1992, 2000 by Stephen L. Moshier - */ - - -#include "mconf.h" -#define CEPHES_DEBUG 0 - -#if CEPHES_DEBUG -#include -#endif - -#define MAXGAM 171.624376956302725 - -extern double MACHEP, MINLOG, MAXLOG; - -#define BIG 1.44115188075855872E+17 - -static double jvs(double n, double x); -static double hankel(double n, double x); -static double recur(double *n, double x, double *newn, int cancel); -static double jnx(double n, double x); -static double jnt(double n, double x); - -double jv(double n, double x) -{ - double k, q, t, y, an; - int i, sign, nint; - - nint = 0; /* Flag for integer n */ - sign = 1; /* Flag for sign inversion */ - an = fabs(n); - y = floor(an); - if (y == an) { - nint = 1; - i = an - 16384.0 * floor(an / 16384.0); - if (n < 0.0) { - if (i & 1) - sign = -sign; - n = an; - } - if (x < 0.0) { - if (i & 1) - sign = -sign; - x = -x; - } - if (n == 0.0) - return (j0(x)); - if (n == 1.0) - return (sign * j1(x)); - } - - if ((x < 0.0) && (y != an)) { - sf_error("Jv", SF_ERROR_DOMAIN, NULL); - y = NAN; - goto done; - } - - if (x == 0 && n < 0 && !nint) { - sf_error("Jv", SF_ERROR_OVERFLOW, NULL); - return INFINITY / gamma(n + 1); - } - - y = fabs(x); - - if (y * y < fabs(n + 1) * MACHEP) { - return pow(0.5 * x, n) / gamma(n + 1); - } - - k = 3.6 * sqrt(y); - t = 3.6 * sqrt(an); - if ((y < t) && (an > 21.0)) - return (sign * jvs(n, x)); - if ((an < k) && (y > 21.0)) - return (sign * hankel(n, x)); - - if (an < 500.0) { - /* Note: if x is too large, the continued fraction will fail; but then the - * Hankel expansion can be used. */ - if (nint != 0) { - k = 0.0; - q = recur(&n, x, &k, 1); - if (k == 0.0) { - y = j0(x) / q; - goto done; - } - if (k == 1.0) { - y = j1(x) / q; - goto done; - } - } - - if (an > 2.0 * y) - goto rlarger; - - if ((n >= 0.0) && (n < 20.0) - && (y > 6.0) && (y < 20.0)) { - /* Recur backwards from a larger value of n */ - rlarger: - k = n; - - y = y + an + 1.0; - if (y < 30.0) - y = 30.0; - y = n + floor(y - n); - q = recur(&y, x, &k, 0); - y = jvs(y, x) * q; - goto done; - } - - if (k <= 30.0) { - k = 2.0; - } - else if (k < 90.0) { - k = (3 * k) / 4; - } - if (an > (k + 3.0)) { - if (n < 0.0) - k = -k; - q = n - floor(n); - k = floor(k) + q; - if (n > 0.0) - q = recur(&n, x, &k, 1); - else { - t = k; - k = n; - q = recur(&t, x, &k, 1); - k = t; - } - if (q == 0.0) { - y = 0.0; - goto done; - } - } - else { - k = n; - q = 1.0; - } - - /* boundary between convergence of - * power series and Hankel expansion - */ - y = fabs(k); - if (y < 26.0) - t = (0.0083 * y + 0.09) * y + 12.9; - else - t = 0.9 * y; - - if (x > t) - y = hankel(k, x); - else - y = jvs(k, x); -#if CEPHES_DEBUG - printf("y = %.16e, recur q = %.16e\n", y, q); -#endif - if (n > 0.0) - y /= q; - else - y *= q; - } - - else { - /* For large n, use the uniform expansion or the transitional expansion. - * But if x is of the order of n**2, these may blow up, whereas the - * Hankel expansion will then work. - */ - if (n < 0.0) { - sf_error("Jv", SF_ERROR_LOSS, NULL); - y = NAN; - goto done; - } - t = x / n; - t /= n; - if (t > 0.3) - y = hankel(n, x); - else - y = jnx(n, x); - } - - done:return (sign * y); -} - -/* Reduce the order by backward recurrence. - * AMS55 #9.1.27 and 9.1.73. - */ - -static double recur(double *n, double x, double *newn, int cancel) -{ - double pkm2, pkm1, pk, qkm2, qkm1; - - /* double pkp1; */ - double k, ans, qk, xk, yk, r, t, kf; - static double big = BIG; - int nflag, ctr; - int miniter, maxiter; - - /* Continued fraction for Jn(x)/Jn-1(x) - * AMS 9.1.73 - * - * x -x^2 -x^2 - * ------ --------- --------- ... - * 2 n + 2(n+1) + 2(n+2) + - * - * Compute it with the simplest possible algorithm. - * - * This continued fraction starts to converge when (|n| + m) > |x|. - * Hence, at least |x|-|n| iterations are necessary before convergence is - * achieved. There is a hard limit set below, m <= 30000, which is chosen - * so that no branch in `jv` requires more iterations to converge. - * The exact maximum number is (500/3.6)^2 - 500 ~ 19000 - */ - - maxiter = 22000; - miniter = fabs(x) - fabs(*n); - if (miniter < 1) - miniter = 1; - - if (*n < 0.0) - nflag = 1; - else - nflag = 0; - - fstart: - -#if CEPHES_DEBUG - printf("recur: n = %.6e, newn = %.6e, cfrac = ", *n, *newn); -#endif - - pkm2 = 0.0; - qkm2 = 1.0; - pkm1 = x; - qkm1 = *n + *n; - xk = -x * x; - yk = qkm1; - ans = 0.0; /* ans=0.0 ensures that t=1.0 in the first iteration */ - ctr = 0; - do { - yk += 2.0; - pk = pkm1 * yk + pkm2 * xk; - qk = qkm1 * yk + qkm2 * xk; - pkm2 = pkm1; - pkm1 = pk; - qkm2 = qkm1; - qkm1 = qk; - - /* check convergence */ - if (qk != 0 && ctr > miniter) - r = pk / qk; - else - r = 0.0; - - if (r != 0) { - t = fabs((ans - r) / r); - ans = r; - } - else { - t = 1.0; - } - - if (++ctr > maxiter) { - sf_error("jv", SF_ERROR_UNDERFLOW, NULL); - goto done; - } - if (t < MACHEP) - goto done; - - /* renormalize coefficients */ - if (fabs(pk) > big) { - pkm2 /= big; - pkm1 /= big; - qkm2 /= big; - qkm1 /= big; - } - } - while (t > MACHEP); - - done: - if (ans == 0) - ans = 1.0; - -#if CEPHES_DEBUG - printf("%.6e\n", ans); -#endif - - /* Change n to n-1 if n < 0 and the continued fraction is small */ - if (nflag > 0) { - if (fabs(ans) < 0.125) { - nflag = -1; - *n = *n - 1.0; - goto fstart; - } - } - - - kf = *newn; - - /* backward recurrence - * 2k - * J (x) = --- J (x) - J (x) - * k-1 x k k+1 - */ - - pk = 1.0; - pkm1 = 1.0 / ans; - k = *n - 1.0; - r = 2 * k; - do { - pkm2 = (pkm1 * r - pk * x) / x; - /* pkp1 = pk; */ - pk = pkm1; - pkm1 = pkm2; - r -= 2.0; - /* - * t = fabs(pkp1) + fabs(pk); - * if( (k > (kf + 2.5)) && (fabs(pkm1) < 0.25*t) ) - * { - * k -= 1.0; - * t = x*x; - * pkm2 = ( (r*(r+2.0)-t)*pk - r*x*pkp1 )/t; - * pkp1 = pk; - * pk = pkm1; - * pkm1 = pkm2; - * r -= 2.0; - * } - */ - k -= 1.0; - } - while (k > (kf + 0.5)); - - /* Take the larger of the last two iterates - * on the theory that it may have less cancellation error. - */ - - if (cancel) { - if ((kf >= 0.0) && (fabs(pk) > fabs(pkm1))) { - k += 1.0; - pkm2 = pk; - } - } - *newn = k; -#if CEPHES_DEBUG - printf("newn %.6e rans %.6e\n", k, pkm2); -#endif - return (pkm2); -} - - - -/* Ascending power series for Jv(x). - * AMS55 #9.1.10. - */ - -static double jvs(double n, double x) -{ - double t, u, y, z, k; - int ex, sgngam; - - z = -x * x / 4.0; - u = 1.0; - y = u; - k = 1.0; - t = 1.0; - - while (t > MACHEP) { - u *= z / (k * (n + k)); - y += u; - k += 1.0; - if (y != 0) - t = fabs(u / y); - } -#if CEPHES_DEBUG - printf("power series=%.5e ", y); -#endif - t = frexp(0.5 * x, &ex); - ex = ex * n; - if ((ex > -1023) - && (ex < 1023) - && (n > 0.0) - && (n < (MAXGAM - 1.0))) { - t = pow(0.5 * x, n) / gamma(n + 1.0); -#if CEPHES_DEBUG - printf("pow(.5*x, %.4e)/gamma(n+1)=%.5e\n", n, t); -#endif - y *= t; - } - else { -#if CEPHES_DEBUG - z = n * log(0.5 * x); - k = lgam(n + 1.0); - t = z - k; - printf("log pow=%.5e, lgam(%.4e)=%.5e\n", z, n + 1.0, k); -#else - t = n * log(0.5 * x) - lgam_sgn(n + 1.0, &sgngam); -#endif - if (y < 0) { - sgngam = -sgngam; - y = -y; - } - t += log(y); -#if CEPHES_DEBUG - printf("log y=%.5e\n", log(y)); -#endif - if (t < -MAXLOG) { - return (0.0); - } - if (t > MAXLOG) { - sf_error("Jv", SF_ERROR_OVERFLOW, NULL); - return (INFINITY); - } - y = sgngam * exp(t); - } - return (y); -} - -/* Hankel's asymptotic expansion - * for large x. - * AMS55 #9.2.5. - */ - -static double hankel(double n, double x) -{ - double t, u, z, k, sign, conv; - double p, q, j, m, pp, qq; - int flag; - - m = 4.0 * n * n; - j = 1.0; - z = 8.0 * x; - k = 1.0; - p = 1.0; - u = (m - 1.0) / z; - q = u; - sign = 1.0; - conv = 1.0; - flag = 0; - t = 1.0; - pp = 1.0e38; - qq = 1.0e38; - - while (t > MACHEP) { - k += 2.0; - j += 1.0; - sign = -sign; - u *= (m - k * k) / (j * z); - p += sign * u; - k += 2.0; - j += 1.0; - u *= (m - k * k) / (j * z); - q += sign * u; - t = fabs(u / p); - if (t < conv) { - conv = t; - qq = q; - pp = p; - flag = 1; - } - /* stop if the terms start getting larger */ - if ((flag != 0) && (t > conv)) { -#if CEPHES_DEBUG - printf("Hankel: convergence to %.4E\n", conv); -#endif - goto hank1; - } - } - - hank1: - u = x - (0.5 * n + 0.25) * M_PI; - t = sqrt(2.0 / (M_PI * x)) * (pp * cos(u) - qq * sin(u)); -#if CEPHES_DEBUG - printf("hank: %.6e\n", t); -#endif - return (t); -} - - -/* Asymptotic expansion for large n. - * AMS55 #9.3.35. - */ - -static double lambda[] = { - 1.0, - 1.041666666666666666666667E-1, - 8.355034722222222222222222E-2, - 1.282265745563271604938272E-1, - 2.918490264641404642489712E-1, - 8.816272674437576524187671E-1, - 3.321408281862767544702647E+0, - 1.499576298686255465867237E+1, - 7.892301301158651813848139E+1, - 4.744515388682643231611949E+2, - 3.207490090890661934704328E+3 -}; - -static double mu[] = { - 1.0, - -1.458333333333333333333333E-1, - -9.874131944444444444444444E-2, - -1.433120539158950617283951E-1, - -3.172272026784135480967078E-1, - -9.424291479571202491373028E-1, - -3.511203040826354261542798E+0, - -1.572726362036804512982712E+1, - -8.228143909718594444224656E+1, - -4.923553705236705240352022E+2, - -3.316218568547972508762102E+3 -}; - -static double P1[] = { - -2.083333333333333333333333E-1, - 1.250000000000000000000000E-1 -}; - -static double P2[] = { - 3.342013888888888888888889E-1, - -4.010416666666666666666667E-1, - 7.031250000000000000000000E-2 -}; - -static double P3[] = { - -1.025812596450617283950617E+0, - 1.846462673611111111111111E+0, - -8.912109375000000000000000E-1, - 7.324218750000000000000000E-2 -}; - -static double P4[] = { - 4.669584423426247427983539E+0, - -1.120700261622299382716049E+1, - 8.789123535156250000000000E+0, - -2.364086914062500000000000E+0, - 1.121520996093750000000000E-1 -}; - -static double P5[] = { - -2.8212072558200244877E1, - 8.4636217674600734632E1, - -9.1818241543240017361E1, - 4.2534998745388454861E1, - -7.3687943594796316964E0, - 2.27108001708984375E-1 -}; - -static double P6[] = { - 2.1257013003921712286E2, - -7.6525246814118164230E2, - 1.0599904525279998779E3, - -6.9957962737613254123E2, - 2.1819051174421159048E2, - -2.6491430486951555525E1, - 5.7250142097473144531E-1 -}; - -static double P7[] = { - -1.9194576623184069963E3, - 8.0617221817373093845E3, - -1.3586550006434137439E4, - 1.1655393336864533248E4, - -5.3056469786134031084E3, - 1.2009029132163524628E3, - -1.0809091978839465550E2, - 1.7277275025844573975E0 -}; - - -static double jnx(double n, double x) -{ - double zeta, sqz, zz, zp, np; - double cbn, n23, t, z, sz; - double pp, qq, z32i, zzi; - double ak, bk, akl, bkl; - int sign, doa, dob, nflg, k, s, tk, tkp1, m; - static double u[8]; - static double ai, aip, bi, bip; - - /* Test for x very close to n. Use expansion for transition region if so. */ - cbn = cbrt(n); - z = (x - n) / cbn; - if (fabs(z) <= 0.7) - return (jnt(n, x)); - - z = x / n; - zz = 1.0 - z * z; - if (zz == 0.0) - return (0.0); - - if (zz > 0.0) { - sz = sqrt(zz); - t = 1.5 * (log((1.0 + sz) / z) - sz); /* zeta ** 3/2 */ - zeta = cbrt(t * t); - nflg = 1; - } - else { - sz = sqrt(-zz); - t = 1.5 * (sz - acos(1.0 / z)); - zeta = -cbrt(t * t); - nflg = -1; - } - z32i = fabs(1.0 / t); - sqz = cbrt(t); - - /* Airy function */ - n23 = cbrt(n * n); - t = n23 * zeta; - -#if CEPHES_DEBUG - printf("zeta %.5E, Airy(%.5E)\n", zeta, t); -#endif - airy(t, &ai, &aip, &bi, &bip); - - /* polynomials in expansion */ - u[0] = 1.0; - zzi = 1.0 / zz; - u[1] = polevl(zzi, P1, 1) / sz; - u[2] = polevl(zzi, P2, 2) / zz; - u[3] = polevl(zzi, P3, 3) / (sz * zz); - pp = zz * zz; - u[4] = polevl(zzi, P4, 4) / pp; - u[5] = polevl(zzi, P5, 5) / (pp * sz); - pp *= zz; - u[6] = polevl(zzi, P6, 6) / pp; - u[7] = polevl(zzi, P7, 7) / (pp * sz); - -#if CEPHES_DEBUG - for (k = 0; k <= 7; k++) - printf("u[%d] = %.5E\n", k, u[k]); -#endif - - pp = 0.0; - qq = 0.0; - np = 1.0; - /* flags to stop when terms get larger */ - doa = 1; - dob = 1; - akl = INFINITY; - bkl = INFINITY; - - for (k = 0; k <= 3; k++) { - tk = 2 * k; - tkp1 = tk + 1; - zp = 1.0; - ak = 0.0; - bk = 0.0; - for (s = 0; s <= tk; s++) { - if (doa) { - if ((s & 3) > 1) - sign = nflg; - else - sign = 1; - ak += sign * mu[s] * zp * u[tk - s]; - } - - if (dob) { - m = tkp1 - s; - if (((m + 1) & 3) > 1) - sign = nflg; - else - sign = 1; - bk += sign * lambda[s] * zp * u[m]; - } - zp *= z32i; - } - - if (doa) { - ak *= np; - t = fabs(ak); - if (t < akl) { - akl = t; - pp += ak; - } - else - doa = 0; - } - - if (dob) { - bk += lambda[tkp1] * zp * u[0]; - bk *= -np / sqz; - t = fabs(bk); - if (t < bkl) { - bkl = t; - qq += bk; - } - else - dob = 0; - } -#if CEPHES_DEBUG - printf("a[%d] %.5E, b[%d] %.5E\n", k, ak, k, bk); -#endif - if (np < MACHEP) - break; - np /= n * n; - } - - /* normalizing factor ( 4*zeta/(1 - z**2) )**1/4 */ - t = 4.0 * zeta / zz; - t = sqrt(sqrt(t)); - - t *= ai * pp / cbrt(n) + aip * qq / (n23 * n); - return (t); -} - -/* Asymptotic expansion for transition region, - * n large and x close to n. - * AMS55 #9.3.23. - */ - -static double PF2[] = { - -9.0000000000000000000e-2, - 8.5714285714285714286e-2 -}; - -static double PF3[] = { - 1.3671428571428571429e-1, - -5.4920634920634920635e-2, - -4.4444444444444444444e-3 -}; - -static double PF4[] = { - 1.3500000000000000000e-3, - -1.6036054421768707483e-1, - 4.2590187590187590188e-2, - 2.7330447330447330447e-3 -}; - -static double PG1[] = { - -2.4285714285714285714e-1, - 1.4285714285714285714e-2 -}; - -static double PG2[] = { - -9.0000000000000000000e-3, - 1.9396825396825396825e-1, - -1.1746031746031746032e-2 -}; - -static double PG3[] = { - 1.9607142857142857143e-2, - -1.5983694083694083694e-1, - 6.3838383838383838384e-3 -}; - - -static double jnt(double n, double x) -{ - double z, zz, z3; - double cbn, n23, cbtwo; - double ai, aip, bi, bip; /* Airy functions */ - double nk, fk, gk, pp, qq; - double F[5], G[4]; - int k; - - cbn = cbrt(n); - z = (x - n) / cbn; - cbtwo = cbrt(2.0); - - /* Airy function */ - zz = -cbtwo * z; - airy(zz, &ai, &aip, &bi, &bip); - - /* polynomials in expansion */ - zz = z * z; - z3 = zz * z; - F[0] = 1.0; - F[1] = -z / 5.0; - F[2] = polevl(z3, PF2, 1) * zz; - F[3] = polevl(z3, PF3, 2); - F[4] = polevl(z3, PF4, 3) * z; - G[0] = 0.3 * zz; - G[1] = polevl(z3, PG1, 1); - G[2] = polevl(z3, PG2, 2) * z; - G[3] = polevl(z3, PG3, 2) * zz; -#if CEPHES_DEBUG - for (k = 0; k <= 4; k++) - printf("F[%d] = %.5E\n", k, F[k]); - for (k = 0; k <= 3; k++) - printf("G[%d] = %.5E\n", k, G[k]); -#endif - pp = 0.0; - qq = 0.0; - nk = 1.0; - n23 = cbrt(n * n); - - for (k = 0; k <= 4; k++) { - fk = F[k] * nk; - pp += fk; - if (k != 4) { - gk = G[k] * nk; - qq += gk; - } -#if CEPHES_DEBUG - printf("fk[%d] %.5E, gk[%d] %.5E\n", k, fk, k, gk); -#endif - nk /= n23; - } - - fk = cbtwo * ai * pp / cbn + cbrt(4.0) * aip * qq / n; - return (fk); -} diff --git a/gtsam/3rdparty/cephes/cephes/k0.c b/gtsam/3rdparty/cephes/cephes/k0.c deleted file mode 100644 index c5b31a1bf1..0000000000 --- a/gtsam/3rdparty/cephes/cephes/k0.c +++ /dev/null @@ -1,178 +0,0 @@ -/* k0.c - * - * Modified Bessel function, third kind, order zero - * - * - * - * SYNOPSIS: - * - * double x, y, k0(); - * - * y = k0( x ); - * - * - * - * DESCRIPTION: - * - * Returns modified Bessel function of the third kind - * of order zero of the argument. - * - * The range is partitioned into the two intervals [0,8] and - * (8, infinity). Chebyshev polynomial expansions are employed - * in each interval. - * - * - * - * ACCURACY: - * - * Tested at 2000 random points between 0 and 8. Peak absolute - * error (relative when K0 > 1) was 1.46e-14; rms, 4.26e-15. - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 1.2e-15 1.6e-16 - * - * ERROR MESSAGES: - * - * message condition value returned - * K0 domain x <= 0 INFINITY - * - */ - /* k0e() - * - * Modified Bessel function, third kind, order zero, - * exponentially scaled - * - * - * - * SYNOPSIS: - * - * double x, y, k0e(); - * - * y = k0e( x ); - * - * - * - * DESCRIPTION: - * - * Returns exponentially scaled modified Bessel function - * of the third kind of order zero of the argument. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 1.4e-15 1.4e-16 - * See k0(). - * - */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" - -/* Chebyshev coefficients for K0(x) + log(x/2) I0(x) - * in the interval [0,2]. The odd order coefficients are all - * zero; only the even order coefficients are listed. - * - * lim(x->0){ K0(x) + log(x/2) I0(x) } = -EUL. - */ - -static double A[] = { - 1.37446543561352307156E-16, - 4.25981614279661018399E-14, - 1.03496952576338420167E-11, - 1.90451637722020886025E-9, - 2.53479107902614945675E-7, - 2.28621210311945178607E-5, - 1.26461541144692592338E-3, - 3.59799365153615016266E-2, - 3.44289899924628486886E-1, - -5.35327393233902768720E-1 -}; - -/* Chebyshev coefficients for exp(x) sqrt(x) K0(x) - * in the inverted interval [2,infinity]. - * - * lim(x->inf){ exp(x) sqrt(x) K0(x) } = sqrt(pi/2). - */ -static double B[] = { - 5.30043377268626276149E-18, - -1.64758043015242134646E-17, - 5.21039150503902756861E-17, - -1.67823109680541210385E-16, - 5.51205597852431940784E-16, - -1.84859337734377901440E-15, - 6.34007647740507060557E-15, - -2.22751332699166985548E-14, - 8.03289077536357521100E-14, - -2.98009692317273043925E-13, - 1.14034058820847496303E-12, - -4.51459788337394416547E-12, - 1.85594911495471785253E-11, - -7.95748924447710747776E-11, - 3.57739728140030116597E-10, - -1.69753450938905987466E-9, - 8.57403401741422608519E-9, - -4.66048989768794782956E-8, - 2.76681363944501510342E-7, - -1.83175552271911948767E-6, - 1.39498137188764993662E-5, - -1.28495495816278026384E-4, - 1.56988388573005337491E-3, - -3.14481013119645005427E-2, - 2.44030308206595545468E0 -}; - -double k0(double x) -{ - double y, z; - - if (x == 0.0) { - sf_error("k0", SF_ERROR_SINGULAR, NULL); - return INFINITY; - } - else if (x < 0.0) { - sf_error("k0", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (x <= 2.0) { - y = x * x - 2.0; - y = chbevl(y, A, 10) - log(0.5 * x) * i0(x); - return (y); - } - z = 8.0 / x - 2.0; - y = exp(-x) * chbevl(z, B, 25) / sqrt(x); - return (y); -} - - - - -double k0e(double x) -{ - double y; - - if (x == 0.0) { - sf_error("k0e", SF_ERROR_SINGULAR, NULL); - return INFINITY; - } - else if (x < 0.0) { - sf_error("k0e", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (x <= 2.0) { - y = x * x - 2.0; - y = chbevl(y, A, 10) - log(0.5 * x) * i0(x); - return (y * exp(x)); - } - - y = chbevl(8.0 / x - 2.0, B, 25) / sqrt(x); - return (y); -} diff --git a/gtsam/3rdparty/cephes/cephes/k1.c b/gtsam/3rdparty/cephes/cephes/k1.c deleted file mode 100644 index fc33e5c0ee..0000000000 --- a/gtsam/3rdparty/cephes/cephes/k1.c +++ /dev/null @@ -1,179 +0,0 @@ -/* k1.c - * - * Modified Bessel function, third kind, order one - * - * - * - * SYNOPSIS: - * - * double x, y, k1(); - * - * y = k1( x ); - * - * - * - * DESCRIPTION: - * - * Computes the modified Bessel function of the third kind - * of order one of the argument. - * - * The range is partitioned into the two intervals [0,2] and - * (2, infinity). Chebyshev polynomial expansions are employed - * in each interval. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 1.2e-15 1.6e-16 - * - * ERROR MESSAGES: - * - * message condition value returned - * k1 domain x <= 0 INFINITY - * - */ - /* k1e.c - * - * Modified Bessel function, third kind, order one, - * exponentially scaled - * - * - * - * SYNOPSIS: - * - * double x, y, k1e(); - * - * y = k1e( x ); - * - * - * - * DESCRIPTION: - * - * Returns exponentially scaled modified Bessel function - * of the third kind of order one of the argument: - * - * k1e(x) = exp(x) * k1(x). - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 7.8e-16 1.2e-16 - * See k1(). - * - */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" - -/* Chebyshev coefficients for x(K1(x) - log(x/2) I1(x)) - * in the interval [0,2]. - * - * lim(x->0){ x(K1(x) - log(x/2) I1(x)) } = 1. - */ - -static double A[] = { - -7.02386347938628759343E-18, - -2.42744985051936593393E-15, - -6.66690169419932900609E-13, - -1.41148839263352776110E-10, - -2.21338763073472585583E-8, - -2.43340614156596823496E-6, - -1.73028895751305206302E-4, - -6.97572385963986435018E-3, - -1.22611180822657148235E-1, - -3.53155960776544875667E-1, - 1.52530022733894777053E0 -}; - -/* Chebyshev coefficients for exp(x) sqrt(x) K1(x) - * in the interval [2,infinity]. - * - * lim(x->inf){ exp(x) sqrt(x) K1(x) } = sqrt(pi/2). - */ -static double B[] = { - -5.75674448366501715755E-18, - 1.79405087314755922667E-17, - -5.68946255844285935196E-17, - 1.83809354436663880070E-16, - -6.05704724837331885336E-16, - 2.03870316562433424052E-15, - -7.01983709041831346144E-15, - 2.47715442448130437068E-14, - -8.97670518232499435011E-14, - 3.34841966607842919884E-13, - -1.28917396095102890680E-12, - 5.13963967348173025100E-12, - -2.12996783842756842877E-11, - 9.21831518760500529508E-11, - -4.19035475934189648750E-10, - 2.01504975519703286596E-9, - -1.03457624656780970260E-8, - 5.74108412545004946722E-8, - -3.50196060308781257119E-7, - 2.40648494783721712015E-6, - -1.93619797416608296024E-5, - 1.95215518471351631108E-4, - -2.85781685962277938680E-3, - 1.03923736576817238437E-1, - 2.72062619048444266945E0 -}; - -extern double MINLOG; - -double k1(double x) -{ - double y, z; - - if (x == 0.0) { - sf_error("k1", SF_ERROR_SINGULAR, NULL); - return INFINITY; - } - else if (x < 0.0) { - sf_error("k1", SF_ERROR_DOMAIN, NULL); - return NAN; - } - z = 0.5 * x; - - if (x <= 2.0) { - y = x * x - 2.0; - y = log(z) * i1(x) + chbevl(y, A, 11) / x; - return (y); - } - - return (exp(-x) * chbevl(8.0 / x - 2.0, B, 25) / sqrt(x)); -} - - - - -double k1e(double x) -{ - double y; - - if (x == 0.0) { - sf_error("k1e", SF_ERROR_SINGULAR, NULL); - return INFINITY; - } - else if (x < 0.0) { - sf_error("k1e", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (x <= 2.0) { - y = x * x - 2.0; - y = log(0.5 * x) * i1(x) + chbevl(y, A, 11) / x; - return (y * exp(x)); - } - - return (chbevl(8.0 / x - 2.0, B, 25) / sqrt(x)); -} diff --git a/gtsam/3rdparty/cephes/cephes/kn.c b/gtsam/3rdparty/cephes/cephes/kn.c deleted file mode 100644 index ff7584a154..0000000000 --- a/gtsam/3rdparty/cephes/cephes/kn.c +++ /dev/null @@ -1,235 +0,0 @@ -/* kn.c - * - * Modified Bessel function, third kind, integer order - * - * - * - * SYNOPSIS: - * - * double x, y, kn(); - * int n; - * - * y = kn( n, x ); - * - * - * - * DESCRIPTION: - * - * Returns modified Bessel function of the third kind - * of order n of the argument. - * - * The range is partitioned into the two intervals [0,9.55] and - * (9.55, infinity). An ascending power series is used in the - * low range, and an asymptotic expansion in the high range. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,30 90000 1.8e-8 3.0e-10 - * - * Error is high only near the crossover point x = 9.55 - * between the two expansions used. - */ - - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1988, 2000 by Stephen L. Moshier - */ - - -/* - * Algorithm for Kn. - * n-1 - * -n - (n-k-1)! 2 k - * K (x) = 0.5 (x/2) > -------- (-x /4) - * n - k! - * k=0 - * - * inf. 2 k - * n n - (x /4) - * + (-1) 0.5(x/2) > {p(k+1) + p(n+k+1) - 2log(x/2)} --------- - * - k! (n+k)! - * k=0 - * - * where p(m) is the psi function: p(1) = -EUL and - * - * m-1 - * - - * p(m) = -EUL + > 1/k - * - - * k=1 - * - * For large x, - * 2 2 2 - * u-1 (u-1 )(u-3 ) - * K (z) = sqrt(pi/2z) exp(-z) { 1 + ------- + ------------ + ...} - * v 1 2 - * 1! (8z) 2! (8z) - * asymptotically, where - * - * 2 - * u = 4 v . - * - */ - -#include "mconf.h" -#include - -#define EUL 5.772156649015328606065e-1 -#define MAXFAC 31 -extern double MACHEP, MAXLOG; - -double kn(int nn, double x) -{ - double k, kf, nk1f, nkf, zn, t, s, z0, z; - double ans, fn, pn, pk, zmn, tlg, tox; - int i, n; - - if (nn < 0) - n = -nn; - else - n = nn; - - if (n > MAXFAC) { - overf: - sf_error("kn", SF_ERROR_OVERFLOW, NULL); - return (INFINITY); - } - - if (x <= 0.0) { - if (x < 0.0) { - sf_error("kn", SF_ERROR_DOMAIN, NULL); - return NAN; - } - else { - sf_error("kn", SF_ERROR_SINGULAR, NULL); - return INFINITY; - } - } - - - if (x > 9.55) - goto asymp; - - ans = 0.0; - z0 = 0.25 * x * x; - fn = 1.0; - pn = 0.0; - zmn = 1.0; - tox = 2.0 / x; - - if (n > 0) { - /* compute factorial of n and psi(n) */ - pn = -EUL; - k = 1.0; - for (i = 1; i < n; i++) { - pn += 1.0 / k; - k += 1.0; - fn *= k; - } - - zmn = tox; - - if (n == 1) { - ans = 1.0 / x; - } - else { - nk1f = fn / n; - kf = 1.0; - s = nk1f; - z = -z0; - zn = 1.0; - for (i = 1; i < n; i++) { - nk1f = nk1f / (n - i); - kf = kf * i; - zn *= z; - t = nk1f * zn / kf; - s += t; - if ((DBL_MAX - fabs(t)) < fabs(s)) - goto overf; - if ((tox > 1.0) && ((DBL_MAX / tox) < zmn)) - goto overf; - zmn *= tox; - } - s *= 0.5; - t = fabs(s); - if ((zmn > 1.0) && ((DBL_MAX / zmn) < t)) - goto overf; - if ((t > 1.0) && ((DBL_MAX / t) < zmn)) - goto overf; - ans = s * zmn; - } - } - - - tlg = 2.0 * log(0.5 * x); - pk = -EUL; - if (n == 0) { - pn = pk; - t = 1.0; - } - else { - pn = pn + 1.0 / n; - t = 1.0 / fn; - } - s = (pk + pn - tlg) * t; - k = 1.0; - do { - t *= z0 / (k * (k + n)); - pk += 1.0 / k; - pn += 1.0 / (k + n); - s += (pk + pn - tlg) * t; - k += 1.0; - } - while (fabs(t / s) > MACHEP); - - s = 0.5 * s / zmn; - if (n & 1) - s = -s; - ans += s; - - return (ans); - - - - /* Asymptotic expansion for Kn(x) */ - /* Converges to 1.4e-17 for x > 18.4 */ - - asymp: - - if (x > MAXLOG) { - sf_error("kn", SF_ERROR_UNDERFLOW, NULL); - return (0.0); - } - k = n; - pn = 4.0 * k * k; - pk = 1.0; - z0 = 8.0 * x; - fn = 1.0; - t = 1.0; - s = t; - nkf = INFINITY; - i = 0; - do { - z = pn - pk * pk; - t = t * z / (fn * z0); - nk1f = fabs(t); - if ((i >= n) && (nk1f > nkf)) { - goto adone; - } - nkf = nk1f; - s += t; - fn += 1.0; - pk += 2.0; - i += 1; - } - while (fabs(t / s) > MACHEP); - - adone: - ans = exp(-x) * sqrt(M_PI / (2.0 * x)) * s; - return (ans); -} diff --git a/gtsam/3rdparty/cephes/cephes/kolmogorov.c b/gtsam/3rdparty/cephes/cephes/kolmogorov.c deleted file mode 100644 index 2135e0ebbd..0000000000 --- a/gtsam/3rdparty/cephes/cephes/kolmogorov.c +++ /dev/null @@ -1,1147 +0,0 @@ -/* File altered for inclusion in cephes module for Python: - * Main loop commented out.... */ -/* Travis Oliphant Nov. 1998 */ - -/* Re Kolmogorov statistics, here is Birnbaum and Tingey's (actually it was already present - * in Smirnov's paper) formula for the - * distribution of D+, the maximum of all positive deviations between a - * theoretical distribution function P(x) and an empirical one Sn(x) - * from n samples. - * - * + - * D = sup [P(x) - S (x)] - * n -inf < x < inf n - * - * - * [n(1-d)] - * + - v-1 n-v - * Pr{D > d} = > C d (d + v/n) (1 - d - v/n) - * n - n v - * v=0 - * - * (also equals the following sum, but note the terms may be large and alternating in sign) - * See Smirnov 1944, Dwass 1959 - * n - * - v-1 n-v - * = 1 - > C d (d + v/n) (1 - d - v/n) - * - n v - * v=[n(1-d)]+1 - * - * [n(1-d)] is the largest integer not exceeding n(1-d). - * nCv is the number of combinations of n things taken v at a time. - - * Sources: - * [1] Smirnov, N.V. "Approximate laws of distribution of random variables from empirical data" - * Usp. Mat. Nauk, 1944. http://mi.mathnet.ru/umn8798 - * [2] Birnbaum, Z. W. and Tingey, Fred H. - * "One-Sided Confidence Contours for Probability Distribution Functions", - * Ann. Math. Statist. 1951. https://doi.org/10.1214/aoms/1177729550 - * [3] Dwass, Meyer, "The Distribution of a Generalized $\mathrm{D}^+_n$ Statistic", - * Ann. Math. Statist., 1959. https://doi.org/10.1214/aoms/1177706085 - * [4] van Mulbregt, Paul, "Computing the Cumulative Distribution Function and Quantiles of the One-sided Kolmogorov-Smirnov Statistic" - * http://arxiv.org/abs/1802.06966 - * [5] van Mulbregt, Paul, "Computing the Cumulative Distribution Function and Quantiles of the limit of the Two-sided Kolmogorov-Smirnov Statistic" - * https://arxiv.org/abs/1803.00426 - * - */ - -#include "mconf.h" -#include -#include -#include - - -/* ************************************************************************ */ -/* Algorithm Configuration */ - -/* - * Kolmogorov Two-sided: - * Switchover between the two series to compute K(x) - * 0 <= x <= KOLMOG_CUTOVER and - * KOLMOG_CUTOVER < x < infty - */ -#define KOLMOG_CUTOVER 0.82 - - -/* - * Smirnov One-sided: - * n larger than SMIRNOV_MAX_COMPUTE_N will result in an approximation - */ -const int SMIRNOV_MAX_COMPUTE_N = 1000000; - -/* - * Use the upper sum formula, if the number of terms is at most SM_UPPER_MAX_TERMS, - * and n is at least SM_UPPERSUM_MIN_N - * Don't use the upper sum if lots of terms are involved as the series alternates - * sign and the terms get much bigger than 1. - */ -#define SM_UPPER_MAX_TERMS 3 -#define SM_UPPERSUM_MIN_N 10 - -/* ************************************************************************ */ -/* ************************************************************************ */ - -/* Assuming LOW and HIGH are constants. */ -#define CLIP(X, LOW, HIGH) ((X) < LOW ? LOW : MIN(X, HIGH)) -#ifndef MIN -#define MIN(a,b) (((a) < (b)) ? (a) : (b)) -#endif -#ifndef MAX -#define MAX(a,b) (((a) < (b)) ? (b) : (a)) -#endif - -/* from cephes constants */ -extern double MINLOG; - -/* exp() of anything below this returns 0 */ -static const int MIN_EXPABLE = (-708 - 38); - -#ifndef LOGSQRT2PI -#define LOGSQRT2PI 0.91893853320467274178032973640561764 -#endif - -/* Struct to hold the CDF, SF and PDF, which are computed simultaneously */ -typedef struct ThreeProbs { - double sf; - double cdf; - double pdf; -} ThreeProbs; - -#define RETURN_3PROBS(PSF, PCDF, PDF) \ - ret.cdf = (PCDF); \ - ret.sf = (PSF); \ - ret.pdf = (PDF); \ - return ret; - -static const double _xtol = DBL_EPSILON; -static const double _rtol = 2*DBL_EPSILON; - -static int -_within_tol(double x, double y, double atol, double rtol) -{ - double diff = fabs(x-y); - int result = (diff <= (atol + rtol * fabs(y))); - return result; -} - -#include "dd_real.h" - -/* Shorten some of the double-double names for readibility */ -#define valueD dd_to_double -#define add_dd dd_add_d_d -#define sub_dd dd_sub_d_d -#define mul_dd dd_mul_d_d -#define neg_D dd_neg -#define div_dd dd_div_d_d -#define add_DD dd_add -#define sub_DD dd_sub -#define mul_DD dd_mul -#define div_DD dd_div -#define add_Dd dd_add_dd_d -#define add_dD dd_add_d_dd -#define sub_Dd dd_sub_dd_d -#define sub_dD dd_sub_d_dd -#define mul_Dd dd_mul_dd_d -#define mul_dD dd_mul_d_dd -#define div_Dd dd_div_dd_d -#define div_dD dd_div_d_dd -#define frexpD dd_frexp -#define ldexpD dd_ldexp -#define logD dd_log -#define log1pD dd_log1p - - -/* ************************************************************************ */ -/* Kolmogorov : Two-sided **************************** */ -/* ************************************************************************ */ - -static ThreeProbs -_kolmogorov(double x) -{ - double P = 1.0; - double D = 0; - double sf, cdf, pdf; - ThreeProbs ret; - - if (isnan(x)) { - RETURN_3PROBS(NAN, NAN, NAN); - } - if (x <= 0) { - RETURN_3PROBS(1.0, 0.0, 0); - } - /* x <= 0.040611972203751713 */ - if (x <= (double)M_PI/sqrt(-MIN_EXPABLE * 8)) { - RETURN_3PROBS(1.0, 0.0, 0); - } - - P = 1.0; - if (x <= KOLMOG_CUTOVER) { - /* - * u = e^(-pi^2/(8x^2)) - * w = sqrt(2pi)/x - * P = w*u * (1 + u^8 + u^24 + u^48 + ...) - */ - double w = sqrt(2 * M_PI)/x; - double logu8 = -M_PI * M_PI/(x * x); /* log(u^8) */ - double u = exp(logu8/8); - if (u == 0) { - /* - * P = w*u, but u < 1e-308, and w > 1, - * so compute as logs, then exponentiate - */ - double logP = logu8/8 + log(w); - P = exp(logP); - } else { - /* Just unroll the loop, 3 iterations */ - double u8 = exp(logu8); - double u8cub = pow(u8, 3); - P = 1 + u8cub * P; - D = 5*5 + u8cub * D; - P = 1 + u8*u8 * P; - D = 3*3 + u8*u8 * D; - P = 1 + u8 * P; - D = 1*1 + u8 * D; - - D = M_PI * M_PI/4/(x*x) * D - P; - D *= w * u/x; - P = w * u * P; - } - cdf = P; - sf = 1-P; - pdf = D; - } - else { - /* - * v = e^(-2x^2) - * P = 2 (v - v^4 + v^9 - v^16 + ...) - * = 2v(1 - v^3*(1 - v^5*(1 - v^7*(1 - ...))) - */ - double logv = -2*x*x; - double v = exp(logv); - /* - * Want q^((2k-1)^2)(1-q^(4k-1)) / q(1-q^3) < epsilon to break out of loop. - * With KOLMOG_CUTOVER ~ 0.82, k <= 4. Just unroll the loop, 4 iterations - */ - double vsq = v*v; - double v3 = pow(v, 3); - double vpwr; - - vpwr = v3*v3*v; /* v**7 */ - P = 1 - vpwr * P; /* P <- 1 - (1-v**(2k-1)) * P */ - D = 3*3 - vpwr * D; - - vpwr = v3*vsq; - P = 1 - vpwr * P; - D = 2*2 - vpwr * D; - - vpwr = v3; - P = 1 - vpwr * P; - D = 1*1 - vpwr * D; - - P = 2 * v * P; - D = 8 * v * x * D; - sf = P; - cdf = 1 - sf; - pdf = D; - } - pdf = MAX(0, pdf); - cdf = CLIP(cdf, 0, 1); - sf = CLIP(sf, 0, 1); - RETURN_3PROBS(sf, cdf, pdf); -} - - -/* Find x such kolmogorov(x)=psf, kolmogc(x)=pcdf */ -static double -_kolmogi(double psf, double pcdf) -{ - double x, t; - double xmin = 0; - double xmax = INFINITY; - int iterations; - double a = xmin, b = xmax; - - if (!(psf >= 0.0 && pcdf >= 0.0 && pcdf <= 1.0 && psf <= 1.0)) { - sf_error("kolmogi", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - if (fabs(1.0 - pcdf - psf) > 4* DBL_EPSILON) { - sf_error("kolmogi", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - if (pcdf == 0.0) { - return 0.0; - } - if (psf == 0.0) { - return INFINITY; - } - - if (pcdf <= 0.5) { - /* p ~ (sqrt(2pi)/x) *exp(-pi^2/8x^2). Generate lower and upper bounds */ - double logpcdf = log(pcdf); - const double SQRT2 = M_SQRT2; - /* Now that 1 >= x >= sqrt(p) */ - /* Iterate twice: x <- pi/(sqrt(8) sqrt(log(sqrt(2pi)) - log(x) - log(pdf))) */ - a = M_PI / (2 * SQRT2 * sqrt(-(logpcdf + logpcdf/2 - LOGSQRT2PI))); - b = M_PI / (2 * SQRT2 * sqrt(-(logpcdf + 0 - LOGSQRT2PI))); - a = M_PI / (2 * SQRT2 * sqrt(-(logpcdf + log(a) - LOGSQRT2PI))); - b = M_PI / (2 * SQRT2 * sqrt(-(logpcdf + log(b) - LOGSQRT2PI))); - x = (a + b) / 2.0; - } - else { - /* - * Based on the approximation p ~ 2 exp(-2x^2) - * Found that needed to replace psf with a slightly smaller number in the second element - * as otherwise _kolmogorov(b) came back as a very small number but with - * the same sign as _kolmogorov(a) - * kolmogi(0.5) = 0.82757355518990772 - * so (1-q^(-(4-1)*2*x^2)) = (1-exp(-6*0.8275^2) ~ (1-exp(-4.1) - */ - const double jiggerb = 256 * DBL_EPSILON; - double pba = psf/(1.0 - exp(-4))/2, pbb = psf * (1 - jiggerb)/2; - double q0; - a = sqrt(-0.5 * log(pba)); - b = sqrt(-0.5 * log(pbb)); - /* - * Use inversion of - * p = q - q^4 + q^9 - q^16 + ...: - * q = p + p^4 + 4p^7 - p^9 + 22p^10 - 13p^12 + 140*p^13 ... - */ - { - double p = psf/2.0; - double p2 = p*p; - double p3 = p*p*p; - q0 = 1 + p3 * (1 + p3 * (4 + p2 *(-1 + p*(22 + p2* (-13 + 140 * p))))); - q0 *= p; - } - x = sqrt(-log(q0) / 2); - if (x < a || x > b) { - x = (a+b)/2; - } - } - assert(a <= b); - - iterations = 0; - do { - double x0 = x; - ThreeProbs probs = _kolmogorov(x0); - double df = ((pcdf < 0.5) ? (pcdf - probs.cdf) : (probs.sf - psf)); - double dfdx; - - if (fabs(df) == 0) { - break; - } - /* Update the bracketing interval */ - if (df > 0 && x > a) { - a = x; - } else if (df < 0 && x < b) { - b = x; - } - - dfdx = -probs.pdf; - if (fabs(dfdx) <= 0.0) { - x = (a+b)/2; - t = x0 - x; - } else { - t = df/dfdx; - x = x0 - t; - } - - /* - * Check out-of-bounds. - * Not expecting this to happen often --- kolmogorov is convex near x=infinity and - * concave near x=0, and we should be approaching from the correct side. - * If out-of-bounds, replace x with a midpoint of the bracket. - */ - if (x >= a && x <= b) { - if (_within_tol(x, x0, _xtol, _rtol)) { - break; - } - if ((x == a) || (x == b)) { - x = (a + b) / 2.0; - /* If the bracket is already so small ... */ - if (x == a || x == b) { - break; - } - } - } else { - x = (a + b) / 2.0; - if (_within_tol(x, x0, _xtol, _rtol)) { - break; - } - } - - if (++iterations > MAXITER) { - sf_error("kolmogi", SF_ERROR_SLOW, NULL); - break; - } - } while(1); - return (x); -} - - -double -kolmogorov(double x) -{ - if (isnan(x)) { - return NAN; - } - return _kolmogorov(x).sf; -} - -double -kolmogc(double x) -{ - if (isnan(x)) { - return NAN; - } - return _kolmogorov(x).cdf; -} - -double -kolmogp(double x) -{ - if (isnan(x)) { - return NAN; - } - if (x <= 0) { - return -0.0; - } - return -_kolmogorov(x).pdf; -} - -/* Functional inverse of Kolmogorov survival statistic for two-sided test. - * Finds x such that kolmogorov(x) = p. - */ -double -kolmogi(double p) -{ - if (isnan(p)) { - return NAN; - } - return _kolmogi(p, 1-p); -} - -/* Functional inverse of Kolmogorov cumulative statistic for two-sided test. - * Finds x such that kolmogc(x) = p = (or kolmogorov(x) = 1-p). - */ -double -kolmogci(double p) -{ - if (isnan(p)) { - return NAN; - } - return _kolmogi(1-p, p); -} - - - -/* ************************************************************************ */ -/* ********** Smirnov : One-sided ***************************************** */ -/* ************************************************************************ */ - -static double -nextPowerOf2(double x) -{ - double q = ldexp(x, 1-DBL_MANT_DIG); - double L = fabs(q+x); - if (L == 0) { - L = fabs(x); - } else { - int Lint = (int)(L); - if (Lint == L) { - L = Lint; - } - } - return L; -} - -static double -modNX(int n, double x, int *pNXFloor, double *pNX) -{ - /* - * Compute floor(n*x) and remainder *exactly*. - * If remainder is too close to 1 (E.g. (1, -DBL_EPSILON/2)) - * round up and adjust */ - double2 alphaD, nxD, nxfloorD; - int nxfloor; - double alpha; - - nxD = mul_dd(n, x); - nxfloorD = dd_floor(nxD); - alphaD = sub_DD(nxD, nxfloorD); - alpha = dd_hi(alphaD); - nxfloor = dd_to_int(nxfloorD); - assert(alpha >= 0); - assert(alpha <= 1); - if (alpha == 1) { - nxfloor += 1; - alpha = 0; - } - assert(alpha < 1.0); - *pNX = dd_to_double(nxD); - *pNXFloor = nxfloor; - return alpha; -} - -/* - * The binomial coefficient C overflows a 64 bit double, as the 11-bit - * exponent is too small. - * Store C as (Cman:double2, Cexpt:int). - * I.e a Mantissa/significand, and an exponent. - * Cman lies between 0.5 and 1, and the exponent has >=32-bit. - */ -static void -updateBinomial(double2 *Cman, int *Cexpt, int n, int j) -{ - int expt; - double2 rat = div_dd(n - j, j + 1.0); - double2 man2 = mul_DD(*Cman, rat); - man2 = frexpD(man2, &expt); - assert (!dd_is_zero(man2)); - *Cexpt += expt; - *Cman = man2; -} - - -static double2 -pow_D(double2 a, int m) -{ - /* - * Using dd_npwr() here would be quite time-consuming. - * Tradeoff accuracy-time by using pow(). - */ - double ans, r, adj; - if (m <= 0) { - if (m == 0) { - return DD_C_ONE; - } - return dd_inv(pow_D(a, -m)); - } - if (dd_is_zero(a)) { - return DD_C_ZERO; - } - ans = pow(a.x[0], m); - r = a.x[1]/a.x[0]; - adj = m*r; - if (fabs(adj) > 1e-8) { - if (fabs(adj) < 1e-4) { - /* Take 1st two terms of Taylor Series for (1+r)^m */ - adj += (m*r) * ((m-1)/2.0 * r); - } else { - /* Take exp of scaled log */ - adj = expm1(m*log1p(r)); - } - } - return dd_add_d_d(ans, ans*adj); -} - -static double -pow2(double a, double b, int m) -{ - return dd_to_double(pow_D(add_dd(a, b), m)); -} - -/* - * Not 1024 as too big. Want _MAX_EXPONENT < 1023-52 so as to keep both - * elements of the double2 normalized - */ -#define _MAX_EXPONENT 960 - -#define RETURN_M_E(MAND, EXPT) \ - *pExponent = EXPT;\ - return MAND; - - -static double2 -pow2Scaled_D(double2 a, int m, int *pExponent) -{ - /* Compute a^m = significand*2^expt and return as (significand, expt) */ - double2 ans, y; - int ansE, yE; - int maxExpt = _MAX_EXPONENT; - int q, r, y2mE, y2rE, y2mqE; - double2 y2r, y2m, y2mq; - - if (m <= 0) - { - int aE1, aE2; - if (m == 0) { - RETURN_M_E(DD_C_ONE, 0); - } - ans = pow2Scaled_D(a, -m, &aE1); - ans = frexpD(dd_inv(ans), &aE2); - ansE = -aE1 + aE2; - RETURN_M_E(ans, ansE); - } - y = frexpD(a, &yE); - if (m == 1) { - RETURN_M_E(y, yE); - } - /* - * y ^ maxExpt >= 2^{-960} - * => maxExpt = 960 / log2(y.x[0]) = 708 / log(y.x[0]) - * = 665/((1-y.x[0] + y.x[0]^2/2 - ...) - * <= 665/(1-y.x[0]) - * Quick check to see if we might need to break up the exponentiation - */ - if (m*(y.x[0]-1) / y.x[0] < -_MAX_EXPONENT * M_LN2) { - /* Now do it carefully, calling log() */ - double lg2y = log(y.x[0]) / M_LN2; - double lgAns = m * lg2y; - if (lgAns <= -_MAX_EXPONENT) { - maxExpt = (int)(nextPowerOf2(-_MAX_EXPONENT / lg2y + 1)/2); - } - } - if (m <= maxExpt) - { - double2 ans1 = pow_D(y, m); - ans = frexpD(ans1, &ansE); - ansE += m * yE; - RETURN_M_E(ans, ansE); - } - - q = m / maxExpt; - r = m % maxExpt; - /* y^m = (y^maxExpt)^q * y^r */ - y2r = pow2Scaled_D(y, r, &y2rE); - y2m = pow2Scaled_D(y, maxExpt, &y2mE); - y2mq = pow2Scaled_D(y2m, q, &y2mqE); - ans = frexpD(mul_DD(y2r, y2mq), &ansE); - y2mqE += y2mE * q; - ansE += y2mqE + y2rE; - ansE += m * yE; - RETURN_M_E(ans, ansE); -} - - -static double2 -pow4_D(double a, double b, double c, double d, int m) -{ - /* Compute ((a+b)/(c+d)) ^ m */ - double2 A, C, X; - if (m <= 0){ - if (m == 0) { - return DD_C_ONE; - } - return pow4_D(c, d, a, b, -m); - } - A = add_dd(a, b); - C = add_dd(c, d); - if (dd_is_zero(A)) { - return (dd_is_zero(C) ? DD_C_NAN : DD_C_ZERO); - } - if (dd_is_zero(C)) { - return (dd_is_negative(A) ? DD_C_NEGINF : DD_C_INF); - } - X = div_DD(A, C); - return pow_D(X, m); -} - -static double -pow4(double a, double b, double c, double d, int m) -{ - double2 ret = pow4_D(a, b, c, d, m); - return dd_to_double(ret); -} - - -static double2 -logpow4_D(double a, double b, double c, double d, int m) -{ - /* - * Compute log(((a+b)/(c+d)) ^ m) - * == m * log((a+b)/(c+d)) - * == m * log( 1 + (a+b-c-d)/(c+d)) - */ - double2 ans; - double2 A, C, X; - if (m == 0) { - return DD_C_ZERO; - } - A = add_dd(a, b); - C = add_dd(c, d); - if (dd_is_zero(A)) { - return (dd_is_zero(C) ? DD_C_ZERO : DD_C_NEGINF); - } - if (dd_is_zero(C)) { - return DD_C_INF; - } - X = div_DD(A, C); - assert(X.x[0] >= 0); - if (0.5 <= X.x[0] && X.x[0] <= 1.5) { - double2 A1 = sub_DD(A, C); - double2 X1 = div_DD(A1, C); - ans = log1pD(X1); - } else { - ans = logD(X); - } - ans = mul_dD(m, ans); - return ans; -} - -static double -logpow4(double a, double b, double c, double d, int m) -{ - double2 ans = logpow4_D(a, b, c, d, m); - return dd_to_double(ans); -} - -/* - * Compute a single term in the summation, A_v(n, x): - * A_v(n, x) = Binomial(n,v) * (1-x-v/n)^(n-v) * (x+v/n)^(v-1) - */ -static void -computeAv(int n, double x, int v, double2 Cman, int Cexpt, - double2 *pt1, double2 *pt2, double2 *pAv) -{ - int t1E, t2E, ansE; - double2 Av; - double2 t2x = sub_Dd(div_dd(n - v, n), x); /* 1 - x - v/n */ - double2 t2 = pow2Scaled_D(t2x, n-v, &t2E); - double2 t1x = add_Dd(div_dd(v, n), x); /* x + v/n */ - double2 t1 = pow2Scaled_D(t1x, v-1, &t1E); - double2 ans = mul_DD(t1, t2); - ans = mul_DD(ans, Cman); - ansE = Cexpt + t1E + t2E; - Av = ldexpD(ans, ansE); - *pAv = Av; - *pt1 = t1; - *pt2 = t2; -} - - -static ThreeProbs -_smirnov(int n, double x) -{ - double nx, alpha; - double2 AjSum = DD_C_ZERO; - double2 dAjSum = DD_C_ZERO; - double cdf, sf, pdf; - - int bUseUpperSum; - int nxfl, n1mxfl, n1mxceil; - ThreeProbs ret; - - if (!(n > 0 && x >= 0.0 && x <= 1.0)) { - RETURN_3PROBS(NAN, NAN, NAN); - } - if (n == 1) { - RETURN_3PROBS(1-x, x, 1.0); - } - if (x == 0.0) { - RETURN_3PROBS(1.0, 0.0, 1.0); - } - if (x == 1.0) { - RETURN_3PROBS(0.0, 1.0, 0.0); - } - - alpha = modNX(n, x, &nxfl, &nx); - n1mxfl = n - nxfl - (alpha == 0 ? 0 : 1); - n1mxceil = n - nxfl; - /* - * If alpha is 0, don't actually want to include the last term - * in either the lower or upper summations. - */ - if (alpha == 0) { - n1mxfl -= 1; - n1mxceil += 1; - } - - /* Special case: x <= 1/n */ - if (nxfl == 0 || (nxfl == 1 && alpha == 0)) { - double t = pow2(1, x, n-1); - pdf = (nx + 1) * t / (1+x); - cdf = x * t; - sf = 1 - cdf; - /* Adjust if x=1/n *exactly* */ - if (nxfl == 1) { - assert(alpha == 0); - pdf -= 0.5; - } - RETURN_3PROBS(sf, cdf, pdf); - } - /* Special case: x is so big, the sf underflows double64 */ - if (-2 * n * x*x < MINLOG) { - RETURN_3PROBS(0, 1, 0); - } - /* Special case: x >= 1 - 1/n */ - if (nxfl >= n-1) { - sf = pow2(1, -x, n); - cdf = 1 - sf; - pdf = n * sf/(1-x); - RETURN_3PROBS(sf, cdf, pdf); - } - /* Special case: n is so big, take too long to compute */ - if (n > SMIRNOV_MAX_COMPUTE_N) { - /* p ~ e^(-(6nx+1)^2 / 18n) */ - double logp = -pow(6.0*n*x+1, 2)/18.0/n; - /* Maximise precision for small p-value. */ - if (logp < -M_LN2) { - sf = exp(logp); - cdf = 1 - sf; - } else { - cdf = -expm1(logp); - sf = 1 - cdf; - } - pdf = (6.0*n*x+1) * 2 * sf/3; - RETURN_3PROBS(sf, cdf, pdf); - } - { - /* - * Use the upper sum if n is large enough, and x is small enough and - * the number of terms is going to be small enough. - * Otherwise it just drops accuracy, about 1.6bits * nUpperTerms - */ - int nUpperTerms = n - n1mxceil + 1; - bUseUpperSum = (nUpperTerms <= 1 && x < 0.5); - bUseUpperSum = (bUseUpperSum || - ((n >= SM_UPPERSUM_MIN_N) - && (nUpperTerms <= SM_UPPER_MAX_TERMS) - && (x <= 0.5 / sqrt(n)))); - } - - { - int start=0, step=1, nTerms=n1mxfl+1; - int j, firstJ = 0; - int vmid = n/2; - double2 Cman = DD_C_ONE; - int Cexpt = 0; - double2 Aj, dAj, t1, t2, dAjCoeff; - double2 oneOverX = div_dd(1, x); - - if (bUseUpperSum) { - start = n; - step = -1; - nTerms = n - n1mxceil + 1; - - t1 = pow4_D(1, x, 1, 0, n - 1); - t2 = DD_C_ONE; - Aj = t1; - - dAjCoeff = div_dD(n - 1, add_dd(1, x)); - dAjCoeff = add_DD(dAjCoeff, oneOverX); - } else { - t1 = oneOverX; - t2 = pow4_D(1, -x, 1, 0, n); - Aj = div_Dd(t2, x); - - dAjCoeff = div_DD(sub_dD(-1, mul_dd(n - 1, x)), sub_dd(1, x)); - dAjCoeff = div_Dd(dAjCoeff, x); - dAjCoeff = add_DD(dAjCoeff, oneOverX); - } - - dAj = mul_DD(Aj, dAjCoeff); - AjSum = add_DD(AjSum, Aj); - dAjSum = add_DD(dAjSum, dAj); - - updateBinomial(&Cman, &Cexpt, n, 0); - firstJ ++; - - for (j = firstJ; j < nTerms; j += 1) { - int v = start + j * step; - - computeAv(n, x, v, Cman, Cexpt, &t1, &t2, &Aj); - - if (dd_isfinite(Aj) && !dd_is_zero(Aj)) { - /* coeff = 1/x + (j-1)/(x+j/n) - (n-j)/(1-x-j/n) */ - dAjCoeff = sub_DD(div_dD((n * (v - 1)), add_dd(nxfl + v, alpha)), - div_dD(((n - v) * n), sub_dd(n - nxfl - v, alpha))); - dAjCoeff = add_DD(dAjCoeff, oneOverX); - dAj = mul_DD(Aj, dAjCoeff); - - assert(dd_isfinite(Aj)); - AjSum = add_DD(AjSum, Aj); - dAjSum = add_DD(dAjSum, dAj); - } - /* Safe to terminate early? */ - if (!dd_is_zero(Aj)) { - if ((4*(nTerms-j) * fabs(dd_to_double(Aj)) < DBL_EPSILON * dd_to_double(AjSum)) - && (j != nTerms - 1)) { - break; - } - } - else if (j > vmid) { - assert(dd_is_zero(Aj)); - break; - } - - updateBinomial(&Cman, &Cexpt, n, j); - } - assert(dd_isfinite(AjSum)); - assert(dd_isfinite(dAjSum)); - { - double2 derivD = mul_dD(x, dAjSum); - double2 probD = mul_dD(x, AjSum); - double deriv = dd_to_double(derivD); - double prob = dd_to_double(probD); - - assert (nx != 1 || alpha > 0); - if (step < 0) { - cdf = prob; - sf = 1-prob; - pdf = deriv; - } else { - cdf = 1-prob; - sf = prob; - pdf = -deriv; - } - } - } - - pdf = MAX(0, pdf); - cdf = CLIP(cdf, 0, 1); - sf = CLIP(sf, 0, 1); - RETURN_3PROBS(sf, cdf, pdf); -} - -/* - * Functional inverse of Smirnov distribution - * finds x such that smirnov(n, x) = psf; smirnovc(n, x) = pcdf). - */ -static double -_smirnovi(int n, double psf, double pcdf) -{ - /* - * Need to use a bracketing NR algorithm here and be very careful - * about the starting point. - */ - double x, logpcdf; - int iterations = 0; - int function_calls = 0; - double a=0, b=1; - double maxlogpcdf, psfrootn; - double dx, dxold; - - if (!(n > 0 && psf >= 0.0 && pcdf >= 0.0 && pcdf <= 1.0 && psf <= 1.0)) { - sf_error("smirnovi", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - if (fabs(1.0 - pcdf - psf) > 4* DBL_EPSILON) { - sf_error("smirnovi", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - /* STEP 1: Handle psf==0, or pcdf == 0 */ - if (pcdf == 0.0) { - return 0.0; - } - if (psf == 0.0) { - return 1.0; - } - /* STEP 2: Handle n=1 */ - if (n == 1) { - return pcdf; - } - - /* STEP 3 Handle psf *very* close to 0. Correspond to (n-1)/n < x < 1 */ - psfrootn = pow(psf, 1.0 / n); - /* xmin > 1 - 1.0 / n */ - if (n < 150 && n*psfrootn <= 1) { - /* Solve exactly. */ - x = 1 - psfrootn; - return x; - } - - logpcdf = (pcdf < 0.5 ? log(pcdf) : log1p(-psf)); - - /* - * STEP 4 Find bracket and initial estimate for use in N-R - * 4(a) Handle 0 < x <= 1/n: pcdf = x * (1+x)^*(n-1) - */ - maxlogpcdf = logpow4(1, 0.0, n, 0, 1) + logpow4(n, 1, n, 0, n - 1); - if (logpcdf <= maxlogpcdf) { - double xmin = pcdf / SCIPY_El; - double xmax = pcdf; - double P1 = pow4(n, 1, n, 0, n - 1) / n; - double R = pcdf/P1; - double z0 = R; - /* - * Do one iteration of N-R solving: z*e^(z-1) = R, with z0=pcdf/P1 - * z <- z - (z exp(z-1) - pcdf)/((z+1)exp(z-1)) - * If z_0 = R, z_1 = R(1-exp(1-R))/(R+1) - */ - if (R >= 1) { - /* - * R=1 is OK; - * R>1 can happen due to truncation error for x = (1-1/n)+-eps - */ - R = 1; - x = R/n; - return x; - } - z0 = (z0*z0 + R * exp(1-z0))/(1+z0); - x = z0/n; - a = xmin*(1 - 4 * DBL_EPSILON); - a = MAX(a, 0); - b = xmax * (1 + 4 * DBL_EPSILON); - b = MIN(b, 1.0/n); - x = CLIP(x, a, b); - } - else - { - /* 4(b) : 1/n < x < (n-1)/n */ - double xmin = 1 - psfrootn; - double logpsf = (psf < 0.5 ? log(psf) : log1p(-pcdf)); - double xmax = sqrt(-logpsf / (2.0L * n)); - double xmax6 = xmax - 1.0L / (6 * n); - a = xmin; - b = xmax; - /* Allow for a little rounding error */ - a *= 1 - 4 * DBL_EPSILON; - b *= 1 + 4 * DBL_EPSILON; - a = MAX(xmin, 1.0/n); - b = MIN(xmax, 1-1.0/n); - x = xmax6; - } - if (x < a || x > b) { - x = (a + b)/2; - } - assert (x < 1); - - /* - * Skip computing fa, fb as that takes cycles and the exact values - * are not needed. - */ - - /* STEP 5 Run N-R. - * smirnov should be well-enough behaved for NR starting at this location. - * Use smirnov(n, x)-psf, or pcdf - smirnovc(n, x), whichever has smaller p. - */ - dxold = b - a; - dx = dxold; - do { - double dfdx, x0 = x, deltax, df; - assert(x < 1); - assert(x > 0); - { - ThreeProbs probs = _smirnov(n, x0); - ++function_calls; - df = ((pcdf < 0.5) ? (pcdf - probs.cdf) : (probs.sf - psf)); - dfdx = -probs.pdf; - } - if (df == 0) { - return x; - } - /* Update the bracketing interval */ - if (df > 0 && x > a) { - a = x; - } else if (df < 0 && x < b) { - b = x; - } - - if (dfdx == 0) { - /* - * x was not within tolerance, but now we hit a 0 derivative. - * This implies that x >> 1/sqrt(n), and even then |smirnovp| >= |smirnov| - * so this condition is unexpected. Do a bisection step. - */ - x = (a+b)/2; - deltax = x0 - x; - } else { - deltax = df / dfdx; - x = x0 - deltax; - } - /* - * Check out-of-bounds. - * Not expecting this to happen ofen --- smirnov is convex near x=1 and - * concave near x=0, and we should be approaching from the correct side. - * If out-of-bounds, replace x with a midpoint of the bracket. - * Also check fast enough convergence. - */ - if ((a <= x) && (x <= b) && (fabs(2 * deltax) <= fabs(dxold) || fabs(dxold) < 256 * DBL_EPSILON)) { - dxold = dx; - dx = deltax; - } else { - dxold = dx; - dx = dx / 2; - x = (a + b) / 2; - deltax = x0 - x; - } - /* - * Note that if psf is close to 1, f(x) -> 1, f'(x) -> -1. - * => abs difference |x-x0| is approx |f(x)-p| >= DBL_EPSILON, - * => |x-x0|/x >= DBL_EPSILON/x. - * => cannot use a purely relative criteria as it will fail for x close to 0. - */ - if (_within_tol(x, x0, (psf < 0.5 ? 0 : _xtol), _rtol)) { - break; - } - if (++iterations > MAXITER) { - sf_error("smirnovi", SF_ERROR_SLOW, NULL); - return (x); - } - } while (1); - return x; -} - - -double -smirnov(int n, double d) -{ - ThreeProbs probs; - if (isnan(d)) { - return NAN; - } - probs = _smirnov(n, d); - return probs.sf; -} - -double -smirnovc(int n, double d) -{ - ThreeProbs probs; - if (isnan(d)) { - return NAN; - } - probs = _smirnov(n, d); - return probs.cdf; -} - - -/* - * Derivative of smirnov(n, d) - * One interior point of discontinuity at d=1/n. -*/ -double -smirnovp(int n, double d) -{ - ThreeProbs probs; - if (!(n > 0 && d >= 0.0 && d <= 1.0)) { - return (NAN); - } - if (n == 1) { - /* Slope is always -1 for n=1, even at d = 1.0 */ - return -1.0; - } - if (d == 1.0) { - return -0.0; - } - /* - * If d is 0, the derivative is discontinuous, but approaching - * from the right the limit is -1 - */ - if (d == 0.0) { - return -1.0; - } - probs = _smirnov(n, d); - return -probs.pdf; -} - - -double -smirnovi(int n, double p) -{ - if (isnan(p)) { - return NAN; - } - return _smirnovi(n, p, 1-p); -} - -double -smirnovci(int n, double p) -{ - if (isnan(p)) { - return NAN; - } - return _smirnovi(n, 1-p, p); -} diff --git a/gtsam/3rdparty/cephes/cephes/lanczos.c b/gtsam/3rdparty/cephes/cephes/lanczos.c index f92a8d2088..4a4ad3a05f 100644 --- a/gtsam/3rdparty/cephes/cephes/lanczos.c +++ b/gtsam/3rdparty/cephes/cephes/lanczos.c @@ -22,7 +22,7 @@ static double lanczos_sum(double x) } -double lanczos_sum_expg_scaled(double x) +double gtsam_cephes_lanczos_sum_expg_scaled(double x) { return ratevl(x, lanczos_sum_expg_scaled_num, sizeof(lanczos_sum_expg_scaled_num) / sizeof(lanczos_sum_expg_scaled_num[0]) - 1, diff --git a/gtsam/3rdparty/cephes/cephes/nbdtr.c b/gtsam/3rdparty/cephes/cephes/nbdtr.c deleted file mode 100644 index 7697f257ee..0000000000 --- a/gtsam/3rdparty/cephes/cephes/nbdtr.c +++ /dev/null @@ -1,207 +0,0 @@ -/* nbdtr.c - * - * Negative binomial distribution - * - * - * - * SYNOPSIS: - * - * int k, n; - * double p, y, nbdtr(); - * - * y = nbdtr( k, n, p ); - * - * DESCRIPTION: - * - * Returns the sum of the terms 0 through k of the negative - * binomial distribution: - * - * k - * -- ( n+j-1 ) n j - * > ( ) p (1-p) - * -- ( j ) - * j=0 - * - * In a sequence of Bernoulli trials, this is the probability - * that k or fewer failures precede the nth success. - * - * The terms are not computed individually; instead the incomplete - * beta integral is employed, according to the formula - * - * y = nbdtr( k, n, p ) = incbet( n, k+1, p ). - * - * The arguments must be positive, with p ranging from 0 to 1. - * - * ACCURACY: - * - * Tested at random points (a,b,p), with p between 0 and 1. - * - * a,b Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,100 100000 1.7e-13 8.8e-15 - * See also incbet.c. - * - */ - /* nbdtrc.c - * - * Complemented negative binomial distribution - * - * - * - * SYNOPSIS: - * - * int k, n; - * double p, y, nbdtrc(); - * - * y = nbdtrc( k, n, p ); - * - * DESCRIPTION: - * - * Returns the sum of the terms k+1 to infinity of the negative - * binomial distribution: - * - * inf - * -- ( n+j-1 ) n j - * > ( ) p (1-p) - * -- ( j ) - * j=k+1 - * - * The terms are not computed individually; instead the incomplete - * beta integral is employed, according to the formula - * - * y = nbdtrc( k, n, p ) = incbet( k+1, n, 1-p ). - * - * The arguments must be positive, with p ranging from 0 to 1. - * - * ACCURACY: - * - * Tested at random points (a,b,p), with p between 0 and 1. - * - * a,b Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,100 100000 1.7e-13 8.8e-15 - * See also incbet.c. - */ - -/* nbdtrc - * - * Complemented negative binomial distribution - * - * - * - * SYNOPSIS: - * - * int k, n; - * double p, y, nbdtrc(); - * - * y = nbdtrc( k, n, p ); - * - * DESCRIPTION: - * - * Returns the sum of the terms k+1 to infinity of the negative - * binomial distribution: - * - * inf - * -- ( n+j-1 ) n j - * > ( ) p (1-p) - * -- ( j ) - * j=k+1 - * - * The terms are not computed individually; instead the incomplete - * beta integral is employed, according to the formula - * - * y = nbdtrc( k, n, p ) = incbet( k+1, n, 1-p ). - * - * The arguments must be positive, with p ranging from 0 to 1. - * - * ACCURACY: - * - * See incbet.c. - */ - /* nbdtri - * - * Functional inverse of negative binomial distribution - * - * - * - * SYNOPSIS: - * - * int k, n; - * double p, y, nbdtri(); - * - * p = nbdtri( k, n, y ); - * - * DESCRIPTION: - * - * Finds the argument p such that nbdtr(k,n,p) is equal to y. - * - * ACCURACY: - * - * Tested at random points (a,b,y), with y between 0 and 1. - * - * a,b Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,100 100000 1.5e-14 8.5e-16 - * See also incbi.c. - */ - -/* - * Cephes Math Library Release 2.3: March, 1995 - * Copyright 1984, 1987, 1995 by Stephen L. Moshier - */ - -#include "mconf.h" - -double nbdtrc(int k, int n, double p) -{ - double dk, dn; - - if ((p < 0.0) || (p > 1.0)) - goto domerr; - if (k < 0) { - domerr: - sf_error("nbdtr", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - dk = k + 1; - dn = n; - return (incbet(dk, dn, 1.0 - p)); -} - - - -double nbdtr(int k, int n, double p) -{ - double dk, dn; - - if ((p < 0.0) || (p > 1.0)) - goto domerr; - if (k < 0) { - domerr: - sf_error("nbdtr", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - dk = k + 1; - dn = n; - return (incbet(dn, dk, p)); -} - - - -double nbdtri(int k, int n, double p) -{ - double dk, dn, w; - - if ((p < 0.0) || (p > 1.0)) - goto domerr; - if (k < 0) { - domerr: - sf_error("nbdtri", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - dk = k + 1; - dn = n; - w = incbi(dn, dk, p); - return (w); -} diff --git a/gtsam/3rdparty/cephes/cephes/ndtr.c b/gtsam/3rdparty/cephes/cephes/ndtr.c deleted file mode 100644 index 168e98b5ab..0000000000 --- a/gtsam/3rdparty/cephes/cephes/ndtr.c +++ /dev/null @@ -1,305 +0,0 @@ -/* ndtr.c - * - * Normal distribution function - * - * - * - * SYNOPSIS: - * - * double x, y, ndtr(); - * - * y = ndtr( x ); - * - * - * - * DESCRIPTION: - * - * Returns the area under the Gaussian probability density - * function, integrated from minus infinity to x: - * - * x - * - - * 1 | | 2 - * ndtr(x) = --------- | exp( - t /2 ) dt - * sqrt(2pi) | | - * - - * -inf. - * - * = ( 1 + erf(z) ) / 2 - * = erfc(z) / 2 - * - * where z = x/sqrt(2). Computation is via the functions - * erf and erfc. - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE -13,0 30000 3.4e-14 6.7e-15 - * - * - * ERROR MESSAGES: - * - * message condition value returned - * erfc underflow x > 37.519379347 0.0 - * - */ -/* erf.c - * - * Error function - * - * - * - * SYNOPSIS: - * - * double x, y, erf(); - * - * y = erf( x ); - * - * - * - * DESCRIPTION: - * - * The integral is - * - * x - * - - * 2 | | 2 - * erf(x) = -------- | exp( - t ) dt. - * sqrt(pi) | | - * - - * 0 - * - * For 0 <= |x| < 1, erf(x) = x * P4(x**2)/Q5(x**2); otherwise - * erf(x) = 1 - erfc(x). - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,1 30000 3.7e-16 1.0e-16 - * - */ -/* erfc.c - * - * Complementary error function - * - * - * - * SYNOPSIS: - * - * double x, y, erfc(); - * - * y = erfc( x ); - * - * - * - * DESCRIPTION: - * - * - * 1 - erf(x) = - * - * inf. - * - - * 2 | | 2 - * erfc(x) = -------- | exp( - t ) dt - * sqrt(pi) | | - * - - * x - * - * - * For small x, erfc(x) = 1 - erf(x); otherwise rational - * approximations are computed. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,26.6417 30000 5.7e-14 1.5e-14 - */ - - -/* - * Cephes Math Library Release 2.2: June, 1992 - * Copyright 1984, 1987, 1988, 1992 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include /* DBL_EPSILON */ -#include "mconf.h" - -extern double MAXLOG; - -static double P[] = { - 2.46196981473530512524E-10, - 5.64189564831068821977E-1, - 7.46321056442269912687E0, - 4.86371970985681366614E1, - 1.96520832956077098242E2, - 5.26445194995477358631E2, - 9.34528527171957607540E2, - 1.02755188689515710272E3, - 5.57535335369399327526E2 -}; - -static double Q[] = { - /* 1.00000000000000000000E0, */ - 1.32281951154744992508E1, - 8.67072140885989742329E1, - 3.54937778887819891062E2, - 9.75708501743205489753E2, - 1.82390916687909736289E3, - 2.24633760818710981792E3, - 1.65666309194161350182E3, - 5.57535340817727675546E2 -}; - -static double R[] = { - 5.64189583547755073984E-1, - 1.27536670759978104416E0, - 5.01905042251180477414E0, - 6.16021097993053585195E0, - 7.40974269950448939160E0, - 2.97886665372100240670E0 -}; - -static double S[] = { - /* 1.00000000000000000000E0, */ - 2.26052863220117276590E0, - 9.39603524938001434673E0, - 1.20489539808096656605E1, - 1.70814450747565897222E1, - 9.60896809063285878198E0, - 3.36907645100081516050E0 -}; - -static double T[] = { - 9.60497373987051638749E0, - 9.00260197203842689217E1, - 2.23200534594684319226E3, - 7.00332514112805075473E3, - 5.55923013010394962768E4 -}; - -static double U[] = { - /* 1.00000000000000000000E0, */ - 3.35617141647503099647E1, - 5.21357949780152679795E2, - 4.59432382970980127987E3, - 2.26290000613890934246E4, - 4.92673942608635921086E4 -}; - -#define UTHRESH 37.519379347 - - -double ndtr(double a) -{ - double x, y, z; - - if (cephes_isnan(a)) { - sf_error("ndtr", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - x = a * M_SQRT1_2; - z = fabs(x); - - if (z < M_SQRT1_2) { - y = 0.5 + 0.5 * erf(x); - } - else { - y = 0.5 * erfc(z); - if (x > 0) { - y = 1.0 - y; - } - } - - return y; -} - - -double erfc(double a) -{ - double p, q, x, y, z; - - if (cephes_isnan(a)) { - sf_error("erfc", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (a < 0.0) { - x = -a; - } - else { - x = a; - } - - if (x < 1.0) { - return 1.0 - erf(a); - } - - z = -a * a; - - if (z < -MAXLOG) { - goto under; - } - - z = exp(z); - - if (x < 8.0) { - p = polevl(x, P, 8); - q = p1evl(x, Q, 8); - } - else { - p = polevl(x, R, 5); - q = p1evl(x, S, 6); - } - y = (z * p) / q; - - if (a < 0) { - y = 2.0 - y; - } - - if (y != 0.0) { - return y; - } - -under: - sf_error("erfc", SF_ERROR_UNDERFLOW, NULL); - if (a < 0) { - return 2.0; - } - else { - return 0.0; - } -} - - - -double erf(double x) -{ - double y, z; - - if (cephes_isnan(x)) { - sf_error("erf", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - if (x < 0.0) { - return -erf(-x); - } - - if (fabs(x) > 1.0) { - return (1.0 - erfc(x)); - } - z = x * x; - - y = x * polevl(z, T, 4) / p1evl(z, U, 5); - return y; -} diff --git a/gtsam/3rdparty/cephes/cephes/ndtri.c b/gtsam/3rdparty/cephes/cephes/ndtri.c deleted file mode 100644 index e7fe5cce04..0000000000 --- a/gtsam/3rdparty/cephes/cephes/ndtri.c +++ /dev/null @@ -1,176 +0,0 @@ -/* ndtri.c - * - * Inverse of Normal distribution function - * - * - * - * SYNOPSIS: - * - * double x, y, ndtri(); - * - * x = ndtri( y ); - * - * - * - * DESCRIPTION: - * - * Returns the argument, x, for which the area under the - * Gaussian probability density function (integrated from - * minus infinity to x) is equal to y. - * - * - * For small arguments 0 < y < exp(-2), the program computes - * z = sqrt( -2.0 * log(y) ); then the approximation is - * x = z - log(z)/z - (1/z) P(1/z) / Q(1/z). - * There are two rational functions P/Q, one for 0 < y < exp(-32) - * and the other for y up to exp(-2). For larger arguments, - * w = y - 0.5, and x/sqrt(2pi) = w + w**3 R(w**2)/S(w**2)). - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0.125, 1 20000 7.2e-16 1.3e-16 - * IEEE 3e-308, 0.135 50000 4.6e-16 9.8e-17 - * - * - * ERROR MESSAGES: - * - * message condition value returned - * ndtri domain x < 0 NAN - * ndtri domain x > 1 NAN - * - */ - - -/* - * Cephes Math Library Release 2.1: January, 1989 - * Copyright 1984, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -/* sqrt(2pi) */ -static double s2pi = 2.50662827463100050242E0; - -/* approximation for 0 <= |y - 0.5| <= 3/8 */ -static double P0[5] = { - -5.99633501014107895267E1, - 9.80010754185999661536E1, - -5.66762857469070293439E1, - 1.39312609387279679503E1, - -1.23916583867381258016E0, -}; - -static double Q0[8] = { - /* 1.00000000000000000000E0, */ - 1.95448858338141759834E0, - 4.67627912898881538453E0, - 8.63602421390890590575E1, - -2.25462687854119370527E2, - 2.00260212380060660359E2, - -8.20372256168333339912E1, - 1.59056225126211695515E1, - -1.18331621121330003142E0, -}; - -/* Approximation for interval z = sqrt(-2 log y ) between 2 and 8 - * i.e., y between exp(-2) = .135 and exp(-32) = 1.27e-14. - */ -static double P1[9] = { - 4.05544892305962419923E0, - 3.15251094599893866154E1, - 5.71628192246421288162E1, - 4.40805073893200834700E1, - 1.46849561928858024014E1, - 2.18663306850790267539E0, - -1.40256079171354495875E-1, - -3.50424626827848203418E-2, - -8.57456785154685413611E-4, -}; - -static double Q1[8] = { - /* 1.00000000000000000000E0, */ - 1.57799883256466749731E1, - 4.53907635128879210584E1, - 4.13172038254672030440E1, - 1.50425385692907503408E1, - 2.50464946208309415979E0, - -1.42182922854787788574E-1, - -3.80806407691578277194E-2, - -9.33259480895457427372E-4, -}; - -/* Approximation for interval z = sqrt(-2 log y ) between 8 and 64 - * i.e., y between exp(-32) = 1.27e-14 and exp(-2048) = 3.67e-890. - */ - -static double P2[9] = { - 3.23774891776946035970E0, - 6.91522889068984211695E0, - 3.93881025292474443415E0, - 1.33303460815807542389E0, - 2.01485389549179081538E-1, - 1.23716634817820021358E-2, - 3.01581553508235416007E-4, - 2.65806974686737550832E-6, - 6.23974539184983293730E-9, -}; - -static double Q2[8] = { - /* 1.00000000000000000000E0, */ - 6.02427039364742014255E0, - 3.67983563856160859403E0, - 1.37702099489081330271E0, - 2.16236993594496635890E-1, - 1.34204006088543189037E-2, - 3.28014464682127739104E-4, - 2.89247864745380683936E-6, - 6.79019408009981274425E-9, -}; - -double ndtri(double y0) -{ - double x, y, z, y2, x0, x1; - int code; - - if (y0 == 0.0) { - return -INFINITY; - } - if (y0 == 1.0) { - return INFINITY; - } - if (y0 < 0.0 || y0 > 1.0) { - sf_error("ndtri", SF_ERROR_DOMAIN, NULL); - return NAN; - } - code = 1; - y = y0; - if (y > (1.0 - 0.13533528323661269189)) { /* 0.135... = exp(-2) */ - y = 1.0 - y; - code = 0; - } - - if (y > 0.13533528323661269189) { - y = y - 0.5; - y2 = y * y; - x = y + y * (y2 * polevl(y2, P0, 4) / p1evl(y2, Q0, 8)); - x = x * s2pi; - return (x); - } - - x = sqrt(-2.0 * log(y)); - x0 = x - log(x) / x; - - z = 1.0 / x; - if (x < 8.0) /* y > exp(-32) = 1.2664165549e-14 */ - x1 = z * polevl(z, P1, 8) / p1evl(z, Q1, 8); - else - x1 = z * polevl(z, P2, 8) / p1evl(z, Q2, 8); - x = x0 - x1; - if (code != 0) - x = -x; - return (x); -} diff --git a/gtsam/3rdparty/cephes/cephes/owens_t.c b/gtsam/3rdparty/cephes/cephes/owens_t.c deleted file mode 100644 index 6eb063510e..0000000000 --- a/gtsam/3rdparty/cephes/cephes/owens_t.c +++ /dev/null @@ -1,364 +0,0 @@ -/* Copyright Benjamin Sobotta 2012 - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) - */ - -/* - * Reference: - * Mike Patefield, David Tandy - * FAST AND ACCURATE CALCULATION OF OWEN'S T-FUNCTION - * Journal of Statistical Software, 5 (5), 1-25 - */ -#include "mconf.h" - -static const int SELECT_METHOD[] = { - 0, 0, 1, 12, 12, 12, 12, 12, 12, 12, 12, 15, 15, 15, 8, - 0, 1, 1, 2, 2, 4, 4, 13, 13, 14, 14, 15, 15, 15, 8, - 1, 1, 2, 2, 2, 4, 4, 14, 14, 14, 14, 15, 15, 15, 9, - 1, 1, 2, 4, 4, 4, 4, 6, 6, 15, 15, 15, 15, 15, 9, - 1, 2 , 2, 4, 4, 5 , 5, 7, 7, 16 ,16, 16, 11, 11, 10, - 1, 2 , 4, 4 , 4, 5 , 5, 7, 7, 16, 16, 16, 11, 11, 11, - 1, 2 , 3, 3, 5, 5 , 7, 7, 16, 16, 16, 16, 16, 11, 11, - 1, 2 , 3 , 3 , 5, 5, 17, 17, 17, 17, 16, 16, 16, 11, 11 -}; - -static const double HRANGE[] = {0.02, 0.06, 0.09, 0.125, 0.26, 0.4, 0.6, 1.6, - 1.7, 2.33, 2.4, 3.36, 3.4, 4.8}; - -static const double ARANGE[] = {0.025, 0.09, 0.15, 0.36, 0.5, 0.9, 0.99999}; - -static const double ORD[] = {2, 3, 4, 5, 7, 10, 12, 18, 10, 20, 30, 0, 4, 7, - 8, 20, 0, 0}; - -static const int METHODS[] = {1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4, 4, - 5, 6}; - -static const double C[] = { - 0.99999999999999999999999729978162447266851932041876728736094298092917625009873, - -0.99999999999999999999467056379678391810626533251885323416799874878563998732905968, - 0.99999999999999999824849349313270659391127814689133077036298754586814091034842536, - -0.9999999999999997703859616213643405880166422891953033591551179153879839440241685, - 0.99999999999998394883415238173334565554173013941245103172035286759201504179038147, - -0.9999999999993063616095509371081203145247992197457263066869044528823599399470977, - 0.9999999999797336340409464429599229870590160411238245275855903767652432017766116267, - -0.999999999574958412069046680119051639753412378037565521359444170241346845522403274, - 0.9999999933226234193375324943920160947158239076786103108097456617750134812033362048, - -0.9999999188923242461073033481053037468263536806742737922476636768006622772762168467, - 0.9999992195143483674402853783549420883055129680082932629160081128947764415749728967, - -0.999993935137206712830997921913316971472227199741857386575097250553105958772041501, - 0.99996135597690552745362392866517133091672395614263398912807169603795088421057688716, - -0.99979556366513946026406788969630293820987757758641211293079784585126692672425362469, - 0.999092789629617100153486251423850590051366661947344315423226082520411961968929483, - -0.996593837411918202119308620432614600338157335862888580671450938858935084316004769854, - 0.98910017138386127038463510314625339359073956513420458166238478926511821146316469589567, - -0.970078558040693314521331982203762771512160168582494513347846407314584943870399016019, - 0.92911438683263187495758525500033707204091967947532160289872782771388170647150321633673, - -0.8542058695956156057286980736842905011429254735181323743367879525470479126968822863, - 0.73796526033030091233118357742803709382964420335559408722681794195743240930748630755, - -0.58523469882837394570128599003785154144164680587615878645171632791404210655891158, - 0.415997776145676306165661663581868460503874205343014196580122174949645271353372263, - -0.2588210875241943574388730510317252236407805082485246378222935376279663808416534365, - 0.1375535825163892648504646951500265585055789019410617565727090346559210218472356689, - -0.0607952766325955730493900985022020434830339794955745989150270485056436844239206648, - 0.0216337683299871528059836483840390514275488679530797294557060229266785853764115, - -0.00593405693455186729876995814181203900550014220428843483927218267309209471516256, - 0.0011743414818332946510474576182739210553333860106811865963485870668929503649964142, - -1.489155613350368934073453260689881330166342484405529981510694514036264969925132E-4, - 9.072354320794357587710929507988814669454281514268844884841547607134260303118208E-6 -}; - -static const double PTS[] = { - 0.35082039676451715489E-02, 0.31279042338030753740E-01, - 0.85266826283219451090E-01, 0.16245071730812277011E+00, - 0.25851196049125434828E+00, 0.36807553840697533536E+00, - 0.48501092905604697475E+00, 0.60277514152618576821E+00, - 0.71477884217753226516E+00, 0.81475510988760098605E+00, - 0.89711029755948965867E+00, 0.95723808085944261843E+00, - 0.99178832974629703586E+00 -}; - -static const double WTS[] = { - 0.18831438115323502887E-01, 0.18567086243977649478E-01, - 0.18042093461223385584E-01, 0.17263829606398753364E-01, - 0.16243219975989856730E-01, 0.14994592034116704829E-01, - 0.13535474469662088392E-01, 0.11886351605820165233E-01, - 0.10070377242777431897E-01, 0.81130545742299586629E-02, - 0.60419009528470238773E-02, 0.38862217010742057883E-02, - 0.16793031084546090448E-02 -}; - - -static int get_method(double h, double a) { - int ihint, iaint, i; - - ihint = 14; - iaint = 7; - - for (i = 0; i < 14; i++) { - if (h <= HRANGE[i]) { - ihint = i; - break; - } - } - - for (i = 0; i < 7; i++) { - if (a <= ARANGE[i]) { - iaint = i; - break; - } - } - return SELECT_METHOD[iaint * 15 + ihint]; -} - - -static double owens_t_norm1(double x) { - return erf(x / sqrt(2)) / 2; -} - - -static double owens_t_norm2(double x) { - return erfc(x / sqrt(2)) / 2; -} - - -static double owensT1(double h, double a, double m) { - int j = 1; - int jj = 1; - - double hs = -0.5 * h * h; - double dhs = exp(hs); - double as = a * a; - double aj = a / (2 * M_PI); - double dj = expm1(hs); - double gj = hs * dhs; - - double val = atan(a) / (2 * M_PI); - - while (1) { - val += dj*aj / jj; - - if (m <= j) { - break; - } - j++; - jj += 2; - aj *= as; - dj = gj - dj; - gj *= hs / j; - } - - return val; -} - - -static double owensT2(double h, double a, double ah, double m) { - int i = 1; - int maxi = 2 * m + 1; - double hs = h * h; - double as = -a * a; - double y = 1.0 / hs; - double val = 0.0; - double vi = a*exp(-0.5 * ah * ah) / sqrt(2 * M_PI); - double z = (ndtr(ah) - 0.5) / h; - - while (1) { - val += z; - if (maxi <= i) { - break; - } - z = y * (vi - i * z); - vi *= as; - i += 2; - } - val *= exp(-0.5 * hs) / sqrt(2 * M_PI); - - return val; -} - - -static double owensT3(double h, double a, double ah) { - double aa, hh, y, vi, zi, result; - int i; - - aa = a * a; - hh = h * h; - y = 1 / hh; - - vi = a * exp(-ah * ah/ 2) / sqrt(2 * M_PI); - zi = owens_t_norm1(ah) / h; - result = 0; - - for(i = 0; i<= 30; i++) { - result += zi * C[i]; - zi = y * ((2 * i + 1) * zi - vi); - vi *= aa; - } - - result *= exp(-hh / 2) / sqrt(2 * M_PI); - - return result; -} - - -static double owensT4(double h, double a, double m) { - double maxi, hh, naa, ai, yi, result; - int i; - - maxi = 2 * m + 1; - hh = h * h; - naa = -a * a; - - i = 1; - ai = a * exp(-hh * (1 - naa) / 2) / (2 * M_PI); - yi = 1; - result = 0; - - while (1) { - result += ai * yi; - - if (maxi <= i) { - break; - } - - i += 2; - yi = (1 - hh * yi) / i; - ai *= naa; - } - - return result; -} - - -static double owensT5(double h, double a) { - double result, r, aa, nhh; - int i; - - result = 0; - r = 0; - aa = a * a; - nhh = -0.5 * h * h; - - for (i = 1; i < 14; i++) { - r = 1 + aa * PTS[i - 1]; - result += WTS[i - 1] * exp(nhh * r) / r; - } - - result *= a; - - return result; -} - - -static double owensT6(double h, double a) { - double normh, y, r, result; - - normh = owens_t_norm2(h); - y = 1 - a; - r = atan2(y, (1 + a)); - result = normh * (1 - normh) / 2; - - if (r != 0) { - result -= r * exp(-y * h * h / (2 * r)) / (2 * M_PI); - } - - return result; -} - - -static double owens_t_dispatch(double h, double a, double ah) { - int index, meth_code; - double m, result; - - if (h == 0) { - return atan(a) / (2 * M_PI); - } - if (a == 0) { - return 0; - } - if (a == 1) { - return owens_t_norm2(-h) * owens_t_norm2(h) / 2; - } - - index = get_method(h, a); - m = ORD[index]; - meth_code = METHODS[index]; - - switch(meth_code) { - case 1: - result = owensT1(h, a, m); - break; - case 2: - result = owensT2(h, a, ah, m); - break; - case 3: - result = owensT3(h, a, ah); - break; - case 4: - result = owensT4(h, a, m); - break; - case 5: - result = owensT5(h, a); - break; - case 6: - result = owensT6(h, a); - break; - default: - result = NAN; - } - - return result; -} - - -double owens_t(double h, double a) { - double result, fabs_a, fabs_ah, normh, normah; - - if (cephes_isnan(h) || cephes_isnan(a)) { - return NAN; - } - - /* exploit that T(-h,a) == T(h,a) */ - h = fabs(h); - - /* - * Use equation (2) in the paper to remap the arguments such that - * h >= 0 and 0 <= a <= 1 for the call of the actual computation - * routine. - */ - fabs_a = fabs(a); - fabs_ah = fabs_a * h; - - if (fabs_a == INFINITY) { - /* See page 13 in the paper */ - result = 0.5 * owens_t_norm2(h); - } - else if (h == INFINITY) { - result = 0; - } - else if (fabs_a <= 1) { - result = owens_t_dispatch(h, fabs_a, fabs_ah); - } - else { - if (fabs_ah <= 0.67) { - normh = owens_t_norm1(h); - normah = owens_t_norm1(fabs_ah); - result = 0.25 - normh * normah - - owens_t_dispatch(fabs_ah, (1 / fabs_a), h); - } - else { - normh = owens_t_norm2(h); - normah = owens_t_norm2(fabs_ah); - result = (normh + normah) / 2 - normh * normah - - owens_t_dispatch(fabs_ah, (1 / fabs_a), h); - } - } - - if (a < 0) { - /* exploit that T(h,-a) == -T(h,a) */ - return -result; - } - - return result; -} diff --git a/gtsam/3rdparty/cephes/cephes/pdtr.c b/gtsam/3rdparty/cephes/cephes/pdtr.c deleted file mode 100644 index 0249074d98..0000000000 --- a/gtsam/3rdparty/cephes/cephes/pdtr.c +++ /dev/null @@ -1,173 +0,0 @@ -/* pdtr.c - * - * Poisson distribution - * - * - * - * SYNOPSIS: - * - * int k; - * double m, y, pdtr(); - * - * y = pdtr( k, m ); - * - * - * - * DESCRIPTION: - * - * Returns the sum of the first k terms of the Poisson - * distribution: - * - * k j - * -- -m m - * > e -- - * -- j! - * j=0 - * - * The terms are not summed directly; instead the incomplete - * Gamma integral is employed, according to the relation - * - * y = pdtr( k, m ) = igamc( k+1, m ). - * - * The arguments must both be nonnegative. - * - * - * - * ACCURACY: - * - * See igamc(). - * - */ -/* pdtrc() - * - * Complemented poisson distribution - * - * - * - * SYNOPSIS: - * - * int k; - * double m, y, pdtrc(); - * - * y = pdtrc( k, m ); - * - * - * - * DESCRIPTION: - * - * Returns the sum of the terms k+1 to infinity of the Poisson - * distribution: - * - * inf. j - * -- -m m - * > e -- - * -- j! - * j=k+1 - * - * The terms are not summed directly; instead the incomplete - * Gamma integral is employed, according to the formula - * - * y = pdtrc( k, m ) = igam( k+1, m ). - * - * The arguments must both be nonnegative. - * - * - * - * ACCURACY: - * - * See igam.c. - * - */ -/* pdtri() - * - * Inverse Poisson distribution - * - * - * - * SYNOPSIS: - * - * int k; - * double m, y, pdtr(); - * - * m = pdtri( k, y ); - * - * - * - * - * DESCRIPTION: - * - * Finds the Poisson variable x such that the integral - * from 0 to x of the Poisson density is equal to the - * given probability y. - * - * This is accomplished using the inverse Gamma integral - * function and the relation - * - * m = igamci( k+1, y ). - * - * - * - * - * ACCURACY: - * - * See igami.c. - * - * ERROR MESSAGES: - * - * message condition value returned - * pdtri domain y < 0 or y >= 1 0.0 - * k < 0 - * - */ - -/* - * Cephes Math Library Release 2.3: March, 1995 - * Copyright 1984, 1987, 1995 by Stephen L. Moshier - */ - -#include "mconf.h" - -double pdtrc(double k, double m) -{ - double v; - - if (k < 0.0 || m < 0.0) { - sf_error("pdtrc", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - if (m == 0.0) { - return 0.0; - } - v = floor(k) + 1; - return (igam(v, m)); -} - - -double pdtr(double k, double m) -{ - double v; - - if (k < 0 || m < 0) { - sf_error("pdtr", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - if (m == 0.0) { - return 1.0; - } - v = floor(k) + 1; - return (igamc(v, m)); -} - - -double pdtri(int k, double y) -{ - double v; - - if ((k < 0) || (y < 0.0) || (y >= 1.0)) { - sf_error("pdtri", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - v = k + 1; - v = igamci(v, y); - return (v); -} diff --git a/gtsam/3rdparty/cephes/cephes/poch.c b/gtsam/3rdparty/cephes/cephes/poch.c deleted file mode 100644 index 4c04fa14eb..0000000000 --- a/gtsam/3rdparty/cephes/cephes/poch.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Pochhammer symbol (a)_m = gamma(a + m) / gamma(a) - */ -#include "mconf.h" - -static double is_nonpos_int(double x) -{ - return x <= 0 && x == ceil(x) && fabs(x) < 1e13; -} - -double poch(double a, double m) -{ - double r; - - r = 1.0; - - /* - * 1. Reduce magnitude of `m` to |m| < 1 by using recurrence relations. - * - * This may end up in over/underflow, but then the function itself either - * diverges or goes to zero. In case the remainder goes to the opposite - * direction, we end up returning 0*INF = NAN, which is OK. - */ - - /* Recurse down */ - while (m >= 1.0) { - if (a + m == 1) { - break; - } - m -= 1.0; - r *= (a + m); - if (!isfinite(r) || r == 0) { - break; - } - } - - /* Recurse up */ - while (m <= -1.0) { - if (a + m == 0) { - break; - } - r /= (a + m); - m += 1.0; - if (!isfinite(r) || r == 0) { - break; - } - } - - /* - * 2. Evaluate function with reduced `m` - * - * Now either `m` is not big, or the `r` product has over/underflown. - * If so, the function itself does similarly. - */ - - if (m == 0) { - /* Easy case */ - return r; - } - else if (a > 1e4 && fabs(m) <= 1) { - /* Avoid loss of precision */ - return r * pow(a, m) * ( - 1 - + m*(m-1)/(2*a) - + m*(m-1)*(m-2)*(3*m-1)/(24*a*a) - + m*m*(m-1)*(m-1)*(m-2)*(m-3)/(48*a*a*a) - ); - } - - /* Check for infinity */ - if (is_nonpos_int(a + m) && !is_nonpos_int(a) && a + m != m) { - return INFINITY; - } - - /* Check for zero */ - if (!is_nonpos_int(a + m) && is_nonpos_int(a)) { - return 0; - } - - return r * exp(lgam(a + m) - lgam(a)) * gammasgn(a + m) * gammasgn(a); -} diff --git a/gtsam/3rdparty/cephes/cephes/psi.c b/gtsam/3rdparty/cephes/cephes/psi.c deleted file mode 100644 index 190c6d1628..0000000000 --- a/gtsam/3rdparty/cephes/cephes/psi.c +++ /dev/null @@ -1,205 +0,0 @@ -/* psi.c - * - * Psi (digamma) function - * - * - * SYNOPSIS: - * - * double x, y, psi(); - * - * y = psi( x ); - * - * - * DESCRIPTION: - * - * d - - * psi(x) = -- ln | (x) - * dx - * - * is the logarithmic derivative of the gamma function. - * For integer x, - * n-1 - * - - * psi(n) = -EUL + > 1/k. - * - - * k=1 - * - * This formula is used for 0 < n <= 10. If x is negative, it - * is transformed to a positive argument by the reflection - * formula psi(1-x) = psi(x) + pi cot(pi x). - * For general positive x, the argument is made greater than 10 - * using the recurrence psi(x+1) = psi(x) + 1/x. - * Then the following asymptotic expansion is applied: - * - * inf. B - * - 2k - * psi(x) = log(x) - 1/2x - > ------- - * - 2k - * k=1 2k x - * - * where the B2k are Bernoulli numbers. - * - * ACCURACY: - * Relative error (except absolute when |psi| < 1): - * arithmetic domain # trials peak rms - * IEEE 0,30 30000 1.3e-15 1.4e-16 - * IEEE -30,0 40000 1.5e-15 2.2e-16 - * - * ERROR MESSAGES: - * message condition value returned - * psi singularity x integer <=0 INFINITY - */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1992, 2000 by Stephen L. Moshier - */ - -/* - * Code for the rational approximation on [1, 2] is: - * - * (C) Copyright John Maddock 2006. - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) - */ - -#include "mconf.h" - -static double A[] = { - 8.33333333333333333333E-2, - -2.10927960927960927961E-2, - 7.57575757575757575758E-3, - -4.16666666666666666667E-3, - 3.96825396825396825397E-3, - -8.33333333333333333333E-3, - 8.33333333333333333333E-2 -}; - - -static double digamma_imp_1_2(double x) -{ - /* - * Rational approximation on [1, 2] taken from Boost. - * - * Now for the approximation, we use the form: - * - * digamma(x) = (x - root) * (Y + R(x-1)) - * - * Where root is the location of the positive root of digamma, - * Y is a constant, and R is optimised for low absolute error - * compared to Y. - * - * Maximum Deviation Found: 1.466e-18 - * At double precision, max error found: 2.452e-17 - */ - double r, g; - - static const float Y = 0.99558162689208984f; - - static const double root1 = 1569415565.0 / 1073741824.0; - static const double root2 = (381566830.0 / 1073741824.0) / 1073741824.0; - static const double root3 = 0.9016312093258695918615325266959189453125e-19; - - static double P[] = { - -0.0020713321167745952, - -0.045251321448739056, - -0.28919126444774784, - -0.65031853770896507, - -0.32555031186804491, - 0.25479851061131551 - }; - static double Q[] = { - -0.55789841321675513e-6, - 0.0021284987017821144, - 0.054151797245674225, - 0.43593529692665969, - 1.4606242909763515, - 2.0767117023730469, - 1.0 - }; - g = x - root1; - g -= root2; - g -= root3; - r = polevl(x - 1.0, P, 5) / polevl(x - 1.0, Q, 6); - - return g * Y + g * r; -} - - -static double psi_asy(double x) -{ - double y, z; - - if (x < 1.0e17) { - z = 1.0 / (x * x); - y = z * polevl(z, A, 6); - } - else { - y = 0.0; - } - - return log(x) - (0.5 / x) - y; -} - - -double psi(double x) -{ - double y = 0.0; - double q, r; - int i, n; - - if (isnan(x)) { - return x; - } - else if (x == INFINITY) { - return x; - } - else if (x == -INFINITY) { - return NAN; - } - else if (x == 0) { - sf_error("psi", SF_ERROR_SINGULAR, NULL); - return copysign(INFINITY, -x); - } - else if (x < 0.0) { - /* argument reduction before evaluating tan(pi * x) */ - r = modf(x, &q); - if (r == 0.0) { - sf_error("psi", SF_ERROR_SINGULAR, NULL); - return NAN; - } - y = -M_PI / tan(M_PI * r); - x = 1.0 - x; - } - - /* check for positive integer up to 10 */ - if ((x <= 10.0) && (x == floor(x))) { - n = (int)x; - for (i = 1; i < n; i++) { - y += 1.0 / i; - } - y -= SCIPY_EULER; - return y; - } - - /* use the recurrence relation to move x into [1, 2] */ - if (x < 1.0) { - y -= 1.0 / x; - x += 1.0; - } - else if (x < 10.0) { - while (x > 2.0) { - x -= 1.0; - y += 1.0 / x; - } - } - if ((1.0 <= x) && (x <= 2.0)) { - y += digamma_imp_1_2(x); - return y; - } - - /* x is large, use the asymptotic series */ - y += psi_asy(x); - return y; -} diff --git a/gtsam/3rdparty/cephes/cephes/rgamma.c b/gtsam/3rdparty/cephes/cephes/rgamma.c deleted file mode 100644 index 6420ccaa94..0000000000 --- a/gtsam/3rdparty/cephes/cephes/rgamma.c +++ /dev/null @@ -1,128 +0,0 @@ -/* rgamma.c - * - * Reciprocal Gamma function - * - * - * - * SYNOPSIS: - * - * double x, y, rgamma(); - * - * y = rgamma( x ); - * - * - * - * DESCRIPTION: - * - * Returns one divided by the Gamma function of the argument. - * - * The function is approximated by a Chebyshev expansion in - * the interval [0,1]. Range reduction is by recurrence - * for arguments between -34.034 and +34.84425627277176174. - * 0 is returned for positive arguments outside this - * range. For arguments less than -34.034 the cosecant - * reflection formula is applied; lograrithms are employed - * to avoid unnecessary overflow. - * - * The reciprocal Gamma function has no singularities, - * but overflow and underflow may occur for large arguments. - * These conditions return either INFINITY or 0 with - * appropriate sign. - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE -30,+30 30000 1.1e-15 2.0e-16 - * For arguments less than -34.034 the peak error is on the - * order of 5e-15 (DEC), excepting overflow or underflow. - */ - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1985, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -/* Chebyshev coefficients for reciprocal Gamma function - * in interval 0 to 1. Function is 1/(x Gamma(x)) - 1 - */ - -static double R[] = { - 3.13173458231230000000E-17, - -6.70718606477908000000E-16, - 2.20039078172259550000E-15, - 2.47691630348254132600E-13, - -6.60074100411295197440E-12, - 5.13850186324226978840E-11, - 1.08965386454418662084E-9, - -3.33964630686836942556E-8, - 2.68975996440595483619E-7, - 2.96001177518801696639E-6, - -8.04814124978471142852E-5, - 4.16609138709688864714E-4, - 5.06579864028608725080E-3, - -6.41925436109158228810E-2, - -4.98558728684003594785E-3, - 1.27546015610523951063E-1 -}; - -static char name[] = "rgamma"; - -extern double MAXLOG; - - -double rgamma(double x) -{ - double w, y, z; - int sign; - - if (x > 34.84425627277176174) { - return exp(-lgam(x)); - } - if (x < -34.034) { - w = -x; - z = sinpi(w); - if (z == 0.0) { - return 0.0; - } - if (z < 0.0) { - sign = 1; - z = -z; - } - else { - sign = -1; - } - - y = log(w * z) - log(M_PI) + lgam(w); - if (y < -MAXLOG) { - sf_error(name, SF_ERROR_UNDERFLOW, NULL); - return (sign * 0.0); - } - if (y > MAXLOG) { - sf_error(name, SF_ERROR_OVERFLOW, NULL); - return (sign * INFINITY); - } - return (sign * exp(y)); - } - z = 1.0; - w = x; - - while (w > 1.0) { /* Downward recurrence */ - w -= 1.0; - z *= w; - } - while (w < 0.0) { /* Upward recurrence */ - z /= w; - w += 1.0; - } - if (w == 0.0) /* Nonpositive integer */ - return (0.0); - if (w == 1.0) /* Other integer */ - return (1.0 / z); - - y = w * (1.0 + chbevl(4.0 * w - 2.0, R, 16)) / z; - return (y); -} diff --git a/gtsam/3rdparty/cephes/cephes/round.c b/gtsam/3rdparty/cephes/cephes/round.c deleted file mode 100644 index 0ed1f1415b..0000000000 --- a/gtsam/3rdparty/cephes/cephes/round.c +++ /dev/null @@ -1,63 +0,0 @@ -/* round.c - * - * Round double to nearest or even integer valued double - * - * - * - * SYNOPSIS: - * - * double x, y, round(); - * - * y = round(x); - * - * - * - * DESCRIPTION: - * - * Returns the nearest integer to x as a double precision - * floating point result. If x ends in 0.5 exactly, the - * nearest even integer is chosen. - * - * - * - * ACCURACY: - * - * If x is greater than 1/(2*MACHEP), its closest machine - * representation is already an integer, so rounding does - * not change it. - */ - -/* - * Cephes Math Library Release 2.1: January, 1989 - * Copyright 1984, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -double round(double x) -{ - double y, r; - - /* Largest integer <= x */ - y = floor(x); - - /* Fractional part */ - r = x - y; - - /* Round up to nearest. */ - if (r > 0.5) - goto rndup; - - /* Round to even */ - if (r == 0.5) { - r = y - 2.0 * floor(0.5 * y); - if (r == 1.0) { - rndup: - y += 1.0; - } - } - - /* Else round down. */ - return (y); -} diff --git a/gtsam/3rdparty/cephes/cephes/scipy_iv.c b/gtsam/3rdparty/cephes/cephes/scipy_iv.c deleted file mode 100644 index e7bb220119..0000000000 --- a/gtsam/3rdparty/cephes/cephes/scipy_iv.c +++ /dev/null @@ -1,654 +0,0 @@ -/* iv.c - * - * Modified Bessel function of noninteger order - * - * - * - * SYNOPSIS: - * - * double v, x, y, iv(); - * - * y = iv( v, x ); - * - * - * - * DESCRIPTION: - * - * Returns modified Bessel function of order v of the - * argument. If x is negative, v must be integer valued. - * - */ -/* iv.c */ -/* Modified Bessel function of noninteger order */ -/* If x < 0, then v must be an integer. */ - - -/* - * Parts of the code are copyright: - * - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 1988, 2000 by Stephen L. Moshier - * - * And other parts: - * - * Copyright (c) 2006 Xiaogang Zhang - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. - * - * Boost Software License - Version 1.0 - August 17th, 2003 - * - * Permission is hereby granted, free of charge, to any person or - * organization obtaining a copy of the software and accompanying - * documentation covered by this license (the "Software") to use, reproduce, - * display, distribute, execute, and transmit the Software, and to prepare - * derivative works of the Software, and to permit third-parties to whom the - * Software is furnished to do so, all subject to the following: - * - * The copyright notices in the Software and this entire statement, - * including the above license grant, this restriction and the following - * disclaimer, must be included in all copies of the Software, in whole or - * in part, and all derivative works of the Software, unless such copies or - * derivative works are solely in the form of machine-executable object code - * generated by a source language processor. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE - * DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, - * WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * And the rest are: - * - * Copyright (C) 2009 Pauli Virtanen - * Distributed under the same license as Scipy. - * - */ - -#include "mconf.h" -#include -#include - -extern double MACHEP; - -static double iv_asymptotic(double v, double x); -static void ikv_asymptotic_uniform(double v, double x, double *Iv, double *Kv); -static void ikv_temme(double v, double x, double *Iv, double *Kv); - -double iv(double v, double x) -{ - int sign; - double t, ax, res; - - if (isnan(v) || isnan(x)) { - return NAN; - } - - /* If v is a negative integer, invoke symmetry */ - t = floor(v); - if (v < 0.0) { - if (t == v) { - v = -v; /* symmetry */ - t = -t; - } - } - /* If x is negative, require v to be an integer */ - sign = 1; - if (x < 0.0) { - if (t != v) { - sf_error("iv", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - if (v != 2.0 * floor(v / 2.0)) { - sign = -1; - } - } - - /* Avoid logarithm singularity */ - if (x == 0.0) { - if (v == 0.0) { - return 1.0; - } - if (v < 0.0) { - sf_error("iv", SF_ERROR_OVERFLOW, NULL); - return INFINITY; - } - else - return 0.0; - } - - ax = fabs(x); - if (fabs(v) > 50) { - /* - * Uniform asymptotic expansion for large orders. - * - * This appears to overflow slightly later than the Boost - * implementation of Temme's method. - */ - ikv_asymptotic_uniform(v, ax, &res, NULL); - } - else { - /* Otherwise: Temme's method */ - ikv_temme(v, ax, &res, NULL); - } - res *= sign; - return res; -} - - -/* - * Compute Iv from (AMS5 9.7.1), asymptotic expansion for large |z| - * Iv ~ exp(x)/sqrt(2 pi x) ( 1 + (4*v*v-1)/8x + (4*v*v-1)(4*v*v-9)/8x/2! + ...) - */ -static double iv_asymptotic(double v, double x) -{ - double mu; - double sum, term, prefactor, factor; - int k; - - prefactor = exp(x) / sqrt(2 * M_PI * x); - - if (prefactor == INFINITY) { - return prefactor; - } - - mu = 4 * v * v; - sum = 1.0; - term = 1.0; - k = 1; - - do { - factor = (mu - (2 * k - 1) * (2 * k - 1)) / (8 * x) / k; - if (k > 100) { - /* didn't converge */ - sf_error("iv(iv_asymptotic)", SF_ERROR_NO_RESULT, NULL); - break; - } - term *= -factor; - sum += term; - ++k; - } while (fabs(term) > MACHEP * fabs(sum)); - return sum * prefactor; -} - - -/* - * Uniform asymptotic expansion factors, (AMS5 9.3.9; AMS5 9.3.10) - * - * Computed with: - * -------------------- - import numpy as np - t = np.poly1d([1,0]) - def up1(p): - return .5*t*t*(1-t*t)*p.deriv() + 1/8. * ((1-5*t*t)*p).integ() - us = [np.poly1d([1])] - for k in range(10): - us.append(up1(us[-1])) - n = us[-1].order - for p in us: - print "{" + ", ".join(["0"]*(n-p.order) + map(repr, p)) + "}," - print "N_UFACTORS", len(us) - print "N_UFACTOR_TERMS", us[-1].order + 1 - * -------------------- - */ -#define N_UFACTORS 11 -#define N_UFACTOR_TERMS 31 -static const double asymptotic_ufactors[N_UFACTORS][N_UFACTOR_TERMS] = { - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -0.20833333333333334, 0.0, 0.125, 0.0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0.3342013888888889, 0.0, -0.40104166666666669, 0.0, 0.0703125, 0.0, - 0.0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1.0258125964506173, 0.0, 1.8464626736111112, 0.0, - -0.89121093750000002, 0.0, 0.0732421875, 0.0, 0.0, 0.0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4.6695844234262474, 0.0, -11.207002616222995, 0.0, 8.78912353515625, - 0.0, -2.3640869140624998, 0.0, 0.112152099609375, 0.0, 0.0, 0.0, 0.0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.212072558200244, 0.0, - 84.636217674600744, 0.0, -91.818241543240035, 0.0, 42.534998745388457, - 0.0, -7.3687943594796312, 0.0, 0.22710800170898438, 0.0, 0.0, 0.0, - 0.0, 0.0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212.5701300392171, 0.0, - -765.25246814118157, 0.0, 1059.9904525279999, 0.0, - -699.57962737613275, 0.0, 218.19051174421159, 0.0, - -26.491430486951554, 0.0, 0.57250142097473145, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, -1919.4576623184068, 0.0, - 8061.7221817373083, 0.0, -13586.550006434136, 0.0, 11655.393336864536, - 0.0, -5305.6469786134048, 0.0, 1200.9029132163525, 0.0, - -108.09091978839464, 0.0, 1.7277275025844574, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0}, - {0, 0, 0, 0, 0, 0, 20204.291330966149, 0.0, -96980.598388637503, 0.0, - 192547.0012325315, 0.0, -203400.17728041555, 0.0, 122200.46498301747, - 0.0, -41192.654968897557, 0.0, 7109.5143024893641, 0.0, - -493.915304773088, 0.0, 6.074042001273483, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0}, - {0, 0, 0, -242919.18790055133, 0.0, 1311763.6146629769, 0.0, - -2998015.9185381061, 0.0, 3763271.2976564039, 0.0, - -2813563.2265865342, 0.0, 1268365.2733216248, 0.0, - -331645.17248456361, 0.0, 45218.768981362737, 0.0, - -2499.8304818112092, 0.0, 24.380529699556064, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0}, - {3284469.8530720375, 0.0, -19706819.11843222, 0.0, 50952602.492664628, - 0.0, -74105148.211532637, 0.0, 66344512.274729028, 0.0, - -37567176.660763353, 0.0, 13288767.166421819, 0.0, - -2785618.1280864552, 0.0, 308186.40461266245, 0.0, - -13886.089753717039, 0.0, 110.01714026924674, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0} -}; - - -/* - * Compute Iv, Kv from (AMS5 9.7.7 + 9.7.8), asymptotic expansion for large v - */ -static void ikv_asymptotic_uniform(double v, double x, - double *i_value, double *k_value) -{ - double i_prefactor, k_prefactor; - double t, t2, eta, z; - double i_sum, k_sum, term, divisor; - int k, n; - int sign = 1; - - if (v < 0) { - /* Negative v; compute I_{-v} and K_{-v} and use (AMS 9.6.2) */ - sign = -1; - v = -v; - } - - z = x / v; - t = 1 / sqrt(1 + z * z); - t2 = t * t; - eta = sqrt(1 + z * z) + log(z / (1 + 1 / t)); - - i_prefactor = sqrt(t / (2 * M_PI * v)) * exp(v * eta); - i_sum = 1.0; - - k_prefactor = sqrt(M_PI * t / (2 * v)) * exp(-v * eta); - k_sum = 1.0; - - divisor = v; - for (n = 1; n < N_UFACTORS; ++n) { - /* - * Evaluate u_k(t) with Horner's scheme; - * (using the knowledge about which coefficients are zero) - */ - term = 0; - for (k = N_UFACTOR_TERMS - 1 - 3 * n; - k < N_UFACTOR_TERMS - n; k += 2) { - term *= t2; - term += asymptotic_ufactors[n][k]; - } - for (k = 1; k < n; k += 2) { - term *= t2; - } - if (n % 2 == 1) { - term *= t; - } - - /* Sum terms */ - term /= divisor; - i_sum += term; - k_sum += (n % 2 == 0) ? term : -term; - - /* Check convergence */ - if (fabs(term) < MACHEP) { - break; - } - - divisor *= v; - } - - if (fabs(term) > 1e-3 * fabs(i_sum)) { - /* Didn't converge */ - sf_error("ikv_asymptotic_uniform", SF_ERROR_NO_RESULT, NULL); - } - if (fabs(term) > MACHEP * fabs(i_sum)) { - /* Some precision lost */ - sf_error("ikv_asymptotic_uniform", SF_ERROR_LOSS, NULL); - } - - if (k_value != NULL) { - /* symmetric in v */ - *k_value = k_prefactor * k_sum; - } - - if (i_value != NULL) { - if (sign == 1) { - *i_value = i_prefactor * i_sum; - } - else { - /* (AMS 9.6.2) */ - *i_value = (i_prefactor * i_sum - + (2 / M_PI) * sin(M_PI * v) * k_prefactor * k_sum); - } - } -} - - -/* - * The following code originates from the Boost C++ library, - * from file `boost/math/special_functions/detail/bessel_ik.hpp`, - * converted from C++ to C. - */ - -#ifdef DEBUG -#define BOOST_ASSERT(a) assert(a) -#else -#define BOOST_ASSERT(a) -#endif - -/* - * Modified Bessel functions of the first and second kind of fractional order - * - * Calculate K(v, x) and K(v+1, x) by method analogous to - * Temme, Journal of Computational Physics, vol 21, 343 (1976) - */ -static int temme_ik_series(double v, double x, double *K, double *K1) -{ - double f, h, p, q, coef, sum, sum1, tolerance; - double a, b, c, d, sigma, gamma1, gamma2; - unsigned long k; - double gp; - double gm; - - - /* - * |x| <= 2, Temme series converge rapidly - * |x| > 2, the larger the |x|, the slower the convergence - */ - BOOST_ASSERT(fabs(x) <= 2); - BOOST_ASSERT(fabs(v) <= 0.5f); - - gp = gamma(v + 1) - 1; - gm = gamma(-v + 1) - 1; - - a = log(x / 2); - b = exp(v * a); - sigma = -a * v; - c = fabs(v) < MACHEP ? 1 : sin(M_PI * v) / (v * M_PI); - d = fabs(sigma) < MACHEP ? 1 : sinh(sigma) / sigma; - gamma1 = fabs(v) < MACHEP ? -SCIPY_EULER : (0.5f / v) * (gp - gm) * c; - gamma2 = (2 + gp + gm) * c / 2; - - /* initial values */ - p = (gp + 1) / (2 * b); - q = (1 + gm) * b / 2; - f = (cosh(sigma) * gamma1 + d * (-a) * gamma2) / c; - h = p; - coef = 1; - sum = coef * f; - sum1 = coef * h; - - /* series summation */ - tolerance = MACHEP; - for (k = 1; k < MAXITER; k++) { - f = (k * f + p + q) / (k * k - v * v); - p /= k - v; - q /= k + v; - h = p - k * f; - coef *= x * x / (4 * k); - sum += coef * f; - sum1 += coef * h; - if (fabs(coef * f) < fabs(sum) * tolerance) { - break; - } - } - if (k == MAXITER) { - sf_error("ikv_temme(temme_ik_series)", SF_ERROR_NO_RESULT, NULL); - } - - *K = sum; - *K1 = 2 * sum1 / x; - - return 0; -} - -/* Evaluate continued fraction fv = I_(v+1) / I_v, derived from - * Abramowitz and Stegun, Handbook of Mathematical Functions, 1972, 9.1.73 */ -static int CF1_ik(double v, double x, double *fv) -{ - double C, D, f, a, b, delta, tiny, tolerance; - unsigned long k; - - - /* - * |x| <= |v|, CF1_ik converges rapidly - * |x| > |v|, CF1_ik needs O(|x|) iterations to converge - */ - - /* - * modified Lentz's method, see - * Lentz, Applied Optics, vol 15, 668 (1976) - */ - tolerance = 2 * MACHEP; - tiny = 1 / sqrt(DBL_MAX); - C = f = tiny; /* b0 = 0, replace with tiny */ - D = 0; - for (k = 1; k < MAXITER; k++) { - a = 1; - b = 2 * (v + k) / x; - C = b + a / C; - D = b + a * D; - if (C == 0) { - C = tiny; - } - if (D == 0) { - D = tiny; - } - D = 1 / D; - delta = C * D; - f *= delta; - if (fabs(delta - 1) <= tolerance) { - break; - } - } - if (k == MAXITER) { - sf_error("ikv_temme(CF1_ik)", SF_ERROR_NO_RESULT, NULL); - } - - *fv = f; - - return 0; -} - -/* - * Calculate K(v, x) and K(v+1, x) by evaluating continued fraction - * z1 / z0 = U(v+1.5, 2v+1, 2x) / U(v+0.5, 2v+1, 2x), see - * Thompson and Barnett, Computer Physics Communications, vol 47, 245 (1987) - */ -static int CF2_ik(double v, double x, double *Kv, double *Kv1) -{ - - double S, C, Q, D, f, a, b, q, delta, tolerance, current, prev; - unsigned long k; - - /* - * |x| >= |v|, CF2_ik converges rapidly - * |x| -> 0, CF2_ik fails to converge - */ - - BOOST_ASSERT(fabs(x) > 1); - - /* - * Steed's algorithm, see Thompson and Barnett, - * Journal of Computational Physics, vol 64, 490 (1986) - */ - tolerance = MACHEP; - a = v * v - 0.25f; - b = 2 * (x + 1); /* b1 */ - D = 1 / b; /* D1 = 1 / b1 */ - f = delta = D; /* f1 = delta1 = D1, coincidence */ - prev = 0; /* q0 */ - current = 1; /* q1 */ - Q = C = -a; /* Q1 = C1 because q1 = 1 */ - S = 1 + Q * delta; /* S1 */ - for (k = 2; k < MAXITER; k++) { /* starting from 2 */ - /* continued fraction f = z1 / z0 */ - a -= 2 * (k - 1); - b += 2; - D = 1 / (b + a * D); - delta *= b * D - 1; - f += delta; - - /* series summation S = 1 + \sum_{n=1}^{\infty} C_n * z_n / z_0 */ - q = (prev - (b - 2) * current) / a; - prev = current; - current = q; /* forward recurrence for q */ - C *= -a / k; - Q += C * q; - S += Q * delta; - - /* S converges slower than f */ - if (fabs(Q * delta) < fabs(S) * tolerance) { - break; - } - } - if (k == MAXITER) { - sf_error("ikv_temme(CF2_ik)", SF_ERROR_NO_RESULT, NULL); - } - - *Kv = sqrt(M_PI / (2 * x)) * exp(-x) / S; - *Kv1 = *Kv * (0.5f + v + x + (v * v - 0.25f) * f) / x; - - return 0; -} - -/* Flags for what to compute */ -enum { - need_i = 0x1, - need_k = 0x2 -}; - -/* - * Compute I(v, x) and K(v, x) simultaneously by Temme's method, see - * Temme, Journal of Computational Physics, vol 19, 324 (1975) - */ -static void ikv_temme(double v, double x, double *Iv_p, double *Kv_p) -{ - /* Kv1 = K_(v+1), fv = I_(v+1) / I_v */ - /* Ku1 = K_(u+1), fu = I_(u+1) / I_u */ - double u, Iv, Kv, Kv1, Ku, Ku1, fv; - double W, current, prev, next; - int reflect = 0; - unsigned n, k; - int kind; - - kind = 0; - if (Iv_p != NULL) { - kind |= need_i; - } - if (Kv_p != NULL) { - kind |= need_k; - } - - if (v < 0) { - reflect = 1; - v = -v; /* v is non-negative from here */ - kind |= need_k; - } - n = round(v); - u = v - n; /* -1/2 <= u < 1/2 */ - - if (x < 0) { - if (Iv_p != NULL) - *Iv_p = NAN; - if (Kv_p != NULL) - *Kv_p = NAN; - sf_error("ikv_temme", SF_ERROR_DOMAIN, NULL); - return; - } - if (x == 0) { - Iv = (v == 0) ? 1 : 0; - if (kind & need_k) { - sf_error("ikv_temme", SF_ERROR_OVERFLOW, NULL); - Kv = INFINITY; - } - else { - Kv = NAN; /* any value will do */ - } - - if (reflect && (kind & need_i)) { - double z = (u + n % 2); - - Iv = sin((double)M_PI * z) == 0 ? Iv : INFINITY; - if (Iv == INFINITY || Iv == -INFINITY) { - sf_error("ikv_temme", SF_ERROR_OVERFLOW, NULL); - } - } - - if (Iv_p != NULL) { - *Iv_p = Iv; - } - if (Kv_p != NULL) { - *Kv_p = Kv; - } - return; - } - /* x is positive until reflection */ - W = 1 / x; /* Wronskian */ - if (x <= 2) { /* x in (0, 2] */ - temme_ik_series(u, x, &Ku, &Ku1); /* Temme series */ - } - else { /* x in (2, \infty) */ - CF2_ik(u, x, &Ku, &Ku1); /* continued fraction CF2_ik */ - } - prev = Ku; - current = Ku1; - for (k = 1; k <= n; k++) { /* forward recurrence for K */ - next = 2 * (u + k) * current / x + prev; - prev = current; - current = next; - } - Kv = prev; - Kv1 = current; - if (kind & need_i) { - double lim = (4 * v * v + 10) / (8 * x); - - lim *= lim; - lim *= lim; - lim /= 24; - if ((lim < MACHEP * 10) && (x > 100)) { - /* - * x is huge compared to v, CF1 may be very slow - * to converge so use asymptotic expansion for large - * x case instead. Note that the asymptotic expansion - * isn't very accurate - so it's deliberately very hard - * to get here - probably we're going to overflow: - */ - Iv = iv_asymptotic(v, x); - } - else { - CF1_ik(v, x, &fv); /* continued fraction CF1_ik */ - Iv = W / (Kv * fv + Kv1); /* Wronskian relation */ - } - } - else { - Iv = NAN; /* any value will do */ - } - - if (reflect) { - double z = (u + n % 2); - - if (Iv_p != NULL) { - *Iv_p = Iv + (2 / M_PI) * sin(M_PI * z) * Kv; /* reflection formula */ - } - if (Kv_p != NULL) { - *Kv_p = Kv; - } - } - else { - if (Iv_p != NULL) { - *Iv_p = Iv; - } - if (Kv_p != NULL) { - *Kv_p = Kv; - } - } - return; -} diff --git a/gtsam/3rdparty/cephes/cephes/sf_error.c b/gtsam/3rdparty/cephes/cephes/sf_error.c index 95a47c797b..790205c8ef 100644 --- a/gtsam/3rdparty/cephes/cephes/sf_error.c +++ b/gtsam/3rdparty/cephes/cephes/sf_error.c @@ -30,15 +30,15 @@ static volatile sf_action_t sf_error_actions[] = { SF_ERROR_IGNORE /* SF_ERROR__LAST */ }; -void sf_error_set_action(sf_error_t code, sf_action_t action) { +void gtsam_cephes_sf_error_set_action(sf_error_t code, sf_action_t action) { sf_error_actions[(int)code] = action; } -sf_action_t sf_error_get_action(sf_error_t code) { +sf_action_t gtsam_cephes_sf_error_get_action(sf_error_t code) { return sf_error_actions[(int)code]; } -void sf_error(const char *func_name, sf_error_t code, const char *fmt, ...) { +void gtsam_cephes_sf_error(const char *func_name, sf_error_t code, const char *fmt, ...) { va_list ap; va_start(ap, fmt); va_end(ap); diff --git a/gtsam/3rdparty/cephes/cephes/sf_error.h b/gtsam/3rdparty/cephes/cephes/sf_error.h index 43986df812..fea87fd1f6 100644 --- a/gtsam/3rdparty/cephes/cephes/sf_error.h +++ b/gtsam/3rdparty/cephes/cephes/sf_error.h @@ -26,10 +26,10 @@ typedef enum { } sf_action_t; extern const char *sf_error_messages[]; -void sf_error(const char *func_name, sf_error_t code, const char *fmt, ...); -void sf_error_check_fpe(const char *func_name); -void sf_error_set_action(sf_error_t code, sf_action_t action); -sf_action_t sf_error_get_action(sf_error_t code); +void gtsam_cephes_sf_error(const char *func_name, sf_error_t code, const char *fmt, ...); +void gtsam_cephes_sf_error_check_fpe(const char *func_name); +void gtsam_cephes_sf_error_set_action(sf_error_t code, sf_action_t action); +sf_action_t gtsam_cephes_sf_error_get_action(sf_error_t code); #ifdef __cplusplus } diff --git a/gtsam/3rdparty/cephes/cephes/shichi.c b/gtsam/3rdparty/cephes/cephes/shichi.c deleted file mode 100644 index 75104e7247..0000000000 --- a/gtsam/3rdparty/cephes/cephes/shichi.c +++ /dev/null @@ -1,305 +0,0 @@ -/* shichi.c - * - * Hyperbolic sine and cosine integrals - * - * - * - * SYNOPSIS: - * - * double x, Chi, Shi, shichi(); - * - * shichi( x, &Chi, &Shi ); - * - * - * DESCRIPTION: - * - * Approximates the integrals - * - * x - * - - * | | cosh t - 1 - * Chi(x) = eul + ln x + | ----------- dt, - * | | t - * - - * 0 - * - * x - * - - * | | sinh t - * Shi(x) = | ------ dt - * | | t - * - - * 0 - * - * where eul = 0.57721566490153286061 is Euler's constant. - * The integrals are evaluated by power series for x < 8 - * and by Chebyshev expansions for x between 8 and 88. - * For large x, both functions approach exp(x)/2x. - * Arguments greater than 88 in magnitude return INFINITY. - * - * - * ACCURACY: - * - * Test interval 0 to 88. - * Relative error: - * arithmetic function # trials peak rms - * IEEE Shi 30000 6.9e-16 1.6e-16 - * Absolute error, except relative when |Chi| > 1: - * IEEE Chi 30000 8.4e-16 1.4e-16 - */ - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - - -#include "mconf.h" - -/* x exp(-x) shi(x), inverted interval 8 to 18 */ -static double S1[] = { - 1.83889230173399459482E-17, - -9.55485532279655569575E-17, - 2.04326105980879882648E-16, - 1.09896949074905343022E-15, - -1.31313534344092599234E-14, - 5.93976226264314278932E-14, - -3.47197010497749154755E-14, - -1.40059764613117131000E-12, - 9.49044626224223543299E-12, - -1.61596181145435454033E-11, - -1.77899784436430310321E-10, - 1.35455469767246947469E-9, - -1.03257121792819495123E-9, - -3.56699611114982536845E-8, - 1.44818877384267342057E-7, - 7.82018215184051295296E-7, - -5.39919118403805073710E-6, - -3.12458202168959833422E-5, - 8.90136741950727517826E-5, - 2.02558474743846862168E-3, - 2.96064440855633256972E-2, - 1.11847751047257036625E0 -}; - -/* x exp(-x) shi(x), inverted interval 18 to 88 */ -static double S2[] = { - -1.05311574154850938805E-17, - 2.62446095596355225821E-17, - 8.82090135625368160657E-17, - -3.38459811878103047136E-16, - -8.30608026366935789136E-16, - 3.93397875437050071776E-15, - 1.01765565969729044505E-14, - -4.21128170307640802703E-14, - -1.60818204519802480035E-13, - 3.34714954175994481761E-13, - 2.72600352129153073807E-12, - 1.66894954752839083608E-12, - -3.49278141024730899554E-11, - -1.58580661666482709598E-10, - -1.79289437183355633342E-10, - 1.76281629144264523277E-9, - 1.69050228879421288846E-8, - 1.25391771228487041649E-7, - 1.16229947068677338732E-6, - 1.61038260117376323993E-5, - 3.49810375601053973070E-4, - 1.28478065259647610779E-2, - 1.03665722588798326712E0 -}; - -/* x exp(-x) chin(x), inverted interval 8 to 18 */ -static double C1[] = { - -8.12435385225864036372E-18, - 2.17586413290339214377E-17, - 5.22624394924072204667E-17, - -9.48812110591690559363E-16, - 5.35546311647465209166E-15, - -1.21009970113732918701E-14, - -6.00865178553447437951E-14, - 7.16339649156028587775E-13, - -2.93496072607599856104E-12, - -1.40359438136491256904E-12, - 8.76302288609054966081E-11, - -4.40092476213282340617E-10, - -1.87992075640569295479E-10, - 1.31458150989474594064E-8, - -4.75513930924765465590E-8, - -2.21775018801848880741E-7, - 1.94635531373272490962E-6, - 4.33505889257316408893E-6, - -6.13387001076494349496E-5, - -3.13085477492997465138E-4, - 4.97164789823116062801E-4, - 2.64347496031374526641E-2, - 1.11446150876699213025E0 -}; - -/* x exp(-x) chin(x), inverted interval 18 to 88 */ -static double C2[] = { - 8.06913408255155572081E-18, - -2.08074168180148170312E-17, - -5.98111329658272336816E-17, - 2.68533951085945765591E-16, - 4.52313941698904694774E-16, - -3.10734917335299464535E-15, - -4.42823207332531972288E-15, - 3.49639695410806959872E-14, - 6.63406731718911586609E-14, - -3.71902448093119218395E-13, - -1.27135418132338309016E-12, - 2.74851141935315395333E-12, - 2.33781843985453438400E-11, - 2.71436006377612442764E-11, - -2.56600180000355990529E-10, - -1.61021375163803438552E-9, - -4.72543064876271773512E-9, - -3.00095178028681682282E-9, - 7.79387474390914922337E-8, - 1.06942765566401507066E-6, - 1.59503164802313196374E-5, - 3.49592575153777996871E-4, - 1.28475387530065247392E-2, - 1.03665693917934275131E0 -}; - -static double hyp3f0(double a1, double a2, double a3, double z); - -/* Sine and cosine integrals */ - -extern double MACHEP; - -int shichi(double x, double *si, double *ci) -{ - double k, z, c, s, a, b; - short sign; - - if (x < 0.0) { - sign = -1; - x = -x; - } - else - sign = 0; - - - if (x == 0.0) { - *si = 0.0; - *ci = -INFINITY; - return (0); - } - - if (x >= 8.0) - goto chb; - - if (x >= 88.0) - goto asymp; - - z = x * x; - - /* Direct power series expansion */ - a = 1.0; - s = 1.0; - c = 0.0; - k = 2.0; - - do { - a *= z / k; - c += a / k; - k += 1.0; - a /= k; - s += a / k; - k += 1.0; - } - while (fabs(a / s) > MACHEP); - - s *= x; - goto done; - - -chb: - /* Chebyshev series expansions */ - if (x < 18.0) { - a = (576.0 / x - 52.0) / 10.0; - k = exp(x) / x; - s = k * chbevl(a, S1, 22); - c = k * chbevl(a, C1, 23); - goto done; - } - - if (x <= 88.0) { - a = (6336.0 / x - 212.0) / 70.0; - k = exp(x) / x; - s = k * chbevl(a, S2, 23); - c = k * chbevl(a, C2, 24); - goto done; - } - -asymp: - if (x > 1000) { - *si = INFINITY; - *ci = INFINITY; - } - else { - /* Asymptotic expansions - * http://functions.wolfram.com/GammaBetaErf/CoshIntegral/06/02/ - * http://functions.wolfram.com/GammaBetaErf/SinhIntegral/06/02/0001/ - */ - a = hyp3f0(0.5, 1, 1, 4.0/(x*x)); - b = hyp3f0(1, 1, 1.5, 4.0/(x*x)); - *si = cosh(x)/x * a + sinh(x)/(x*x) * b; - *ci = sinh(x)/x * a + cosh(x)/(x*x) * b; - } - if (sign) { - *si = -*si; - } - return 0; - -done: - if (sign) - s = -s; - - *si = s; - - *ci = SCIPY_EULER + log(x) + c; - return (0); -} - - -/* - * Evaluate 3F0(a1, a2, a3; z) - * - * The series is only asymptotic, so this requires z large enough. - */ -static double hyp3f0(double a1, double a2, double a3, double z) -{ - int n, maxiter; - double err, sum, term, m; - - m = pow(z, -1.0/3); - if (m < 50) { - maxiter = m; - } - else { - maxiter = 50; - } - - term = 1.0; - sum = term; - for (n = 0; n < maxiter; ++n) { - term *= (a1 + n) * (a2 + n) * (a3 + n) * z / (n + 1); - sum += term; - if (fabs(term) < 1e-13 * fabs(sum) || term == 0) { - break; - } - } - - err = fabs(term); - - if (err > 1e-13 * fabs(sum)) { - return NAN; - } - - return sum; -} diff --git a/gtsam/3rdparty/cephes/cephes/sici.c b/gtsam/3rdparty/cephes/cephes/sici.c deleted file mode 100644 index 7bb79bc25f..0000000000 --- a/gtsam/3rdparty/cephes/cephes/sici.c +++ /dev/null @@ -1,276 +0,0 @@ -/* sici.c - * - * Sine and cosine integrals - * - * - * - * SYNOPSIS: - * - * double x, Ci, Si, sici(); - * - * sici( x, &Si, &Ci ); - * - * - * DESCRIPTION: - * - * Evaluates the integrals - * - * x - * - - * | cos t - 1 - * Ci(x) = eul + ln x + | --------- dt, - * | t - * - - * 0 - * x - * - - * | sin t - * Si(x) = | ----- dt - * | t - * - - * 0 - * - * where eul = 0.57721566490153286061 is Euler's constant. - * The integrals are approximated by rational functions. - * For x > 8 auxiliary functions f(x) and g(x) are employed - * such that - * - * Ci(x) = f(x) sin(x) - g(x) cos(x) - * Si(x) = pi/2 - f(x) cos(x) - g(x) sin(x) - * - * - * ACCURACY: - * Test interval = [0,50]. - * Absolute error, except relative when > 1: - * arithmetic function # trials peak rms - * IEEE Si 30000 4.4e-16 7.3e-17 - * IEEE Ci 30000 6.9e-16 5.1e-17 - */ - -/* - * Cephes Math Library Release 2.1: January, 1989 - * Copyright 1984, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -static double SN[] = { - -8.39167827910303881427E-11, - 4.62591714427012837309E-8, - -9.75759303843632795789E-6, - 9.76945438170435310816E-4, - -4.13470316229406538752E-2, - 1.00000000000000000302E0, -}; - -static double SD[] = { - 2.03269266195951942049E-12, - 1.27997891179943299903E-9, - 4.41827842801218905784E-7, - 9.96412122043875552487E-5, - 1.42085239326149893930E-2, - 9.99999999999999996984E-1, -}; - -static double CN[] = { - 2.02524002389102268789E-11, - -1.35249504915790756375E-8, - 3.59325051419993077021E-6, - -4.74007206873407909465E-4, - 2.89159652607555242092E-2, - -1.00000000000000000080E0, -}; - -static double CD[] = { - 4.07746040061880559506E-12, - 3.06780997581887812692E-9, - 1.23210355685883423679E-6, - 3.17442024775032769882E-4, - 5.10028056236446052392E-2, - 4.00000000000000000080E0, -}; - -static double FN4[] = { - 4.23612862892216586994E0, - 5.45937717161812843388E0, - 1.62083287701538329132E0, - 1.67006611831323023771E-1, - 6.81020132472518137426E-3, - 1.08936580650328664411E-4, - 5.48900223421373614008E-7, -}; - -static double FD4[] = { - /* 1.00000000000000000000E0, */ - 8.16496634205391016773E0, - 7.30828822505564552187E0, - 1.86792257950184183883E0, - 1.78792052963149907262E-1, - 7.01710668322789753610E-3, - 1.10034357153915731354E-4, - 5.48900252756255700982E-7, -}; - -static double FN8[] = { - 4.55880873470465315206E-1, - 7.13715274100146711374E-1, - 1.60300158222319456320E-1, - 1.16064229408124407915E-2, - 3.49556442447859055605E-4, - 4.86215430826454749482E-6, - 3.20092790091004902806E-8, - 9.41779576128512936592E-11, - 9.70507110881952024631E-14, -}; - -static double FD8[] = { - /* 1.00000000000000000000E0, */ - 9.17463611873684053703E-1, - 1.78685545332074536321E-1, - 1.22253594771971293032E-2, - 3.58696481881851580297E-4, - 4.92435064317881464393E-6, - 3.21956939101046018377E-8, - 9.43720590350276732376E-11, - 9.70507110881952025725E-14, -}; - -static double GN4[] = { - 8.71001698973114191777E-2, - 6.11379109952219284151E-1, - 3.97180296392337498885E-1, - 7.48527737628469092119E-2, - 5.38868681462177273157E-3, - 1.61999794598934024525E-4, - 1.97963874140963632189E-6, - 7.82579040744090311069E-9, -}; - -static double GD4[] = { - /* 1.00000000000000000000E0, */ - 1.64402202413355338886E0, - 6.66296701268987968381E-1, - 9.88771761277688796203E-2, - 6.22396345441768420760E-3, - 1.73221081474177119497E-4, - 2.02659182086343991969E-6, - 7.82579218933534490868E-9, -}; - -static double GN8[] = { - 6.97359953443276214934E-1, - 3.30410979305632063225E-1, - 3.84878767649974295920E-2, - 1.71718239052347903558E-3, - 3.48941165502279436777E-5, - 3.47131167084116673800E-7, - 1.70404452782044526189E-9, - 3.85945925430276600453E-12, - 3.14040098946363334640E-15, -}; - -static double GD8[] = { - /* 1.00000000000000000000E0, */ - 1.68548898811011640017E0, - 4.87852258695304967486E-1, - 4.67913194259625806320E-2, - 1.90284426674399523638E-3, - 3.68475504442561108162E-5, - 3.57043223443740838771E-7, - 1.72693748966316146736E-9, - 3.87830166023954706752E-12, - 3.14040098946363335242E-15, -}; - -extern double MACHEP; - - -int sici(double x, double *si, double *ci) -{ - double z, c, s, f, g; - short sign; - - if (x < 0.0) { - sign = -1; - x = -x; - } - else - sign = 0; - - - if (x == 0.0) { - *si = 0.0; - *ci = -INFINITY; - return (0); - } - - - if (x > 1.0e9) { - if (cephes_isinf(x)) { - if (sign == -1) { - *si = -M_PI_2; - *ci = NAN; - } - else { - *si = M_PI_2; - *ci = 0; - } - return 0; - } - *si = M_PI_2 - cos(x) / x; - *ci = sin(x) / x; - } - - - - if (x > 4.0) - goto asympt; - - z = x * x; - s = x * polevl(z, SN, 5) / polevl(z, SD, 5); - c = z * polevl(z, CN, 5) / polevl(z, CD, 5); - - if (sign) - s = -s; - *si = s; - *ci = SCIPY_EULER + log(x) + c; /* real part if x < 0 */ - return (0); - - - - /* The auxiliary functions are: - * - * - * *si = *si - M_PI_2; - * c = cos(x); - * s = sin(x); - * - * t = *ci * s - *si * c; - * a = *ci * c + *si * s; - * - * *si = t; - * *ci = -a; - */ - - - asympt: - - s = sin(x); - c = cos(x); - z = 1.0 / (x * x); - if (x < 8.0) { - f = polevl(z, FN4, 6) / (x * p1evl(z, FD4, 7)); - g = z * polevl(z, GN4, 7) / p1evl(z, GD4, 7); - } - else { - f = polevl(z, FN8, 8) / (x * p1evl(z, FD8, 8)); - g = z * polevl(z, GN8, 8) / p1evl(z, GD8, 9); - } - *si = M_PI_2 - f * c - g * s; - if (sign) - *si = -(*si); - *ci = f * s - g * c; - - return (0); -} diff --git a/gtsam/3rdparty/cephes/cephes/sindg.c b/gtsam/3rdparty/cephes/cephes/sindg.c deleted file mode 100644 index d9c37ebdbf..0000000000 --- a/gtsam/3rdparty/cephes/cephes/sindg.c +++ /dev/null @@ -1,219 +0,0 @@ -/* sindg.c - * - * Circular sine of angle in degrees - * - * - * - * SYNOPSIS: - * - * double x, y, sindg(); - * - * y = sindg( x ); - * - * - * - * DESCRIPTION: - * - * Range reduction is into intervals of 45 degrees. - * - * Two polynomial approximating functions are employed. - * Between 0 and pi/4 the sine is approximated by - * x + x**3 P(x**2). - * Between pi/4 and pi/2 the cosine is represented as - * 1 - x**2 P(x**2). - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE +-1000 30000 2.3e-16 5.6e-17 - * - * ERROR MESSAGES: - * - * message condition value returned - * sindg total loss x > 1.0e14 (IEEE) 0.0 - * - */ - /* cosdg.c - * - * Circular cosine of angle in degrees - * - * - * - * SYNOPSIS: - * - * double x, y, cosdg(); - * - * y = cosdg( x ); - * - * - * - * DESCRIPTION: - * - * Range reduction is into intervals of 45 degrees. - * - * Two polynomial approximating functions are employed. - * Between 0 and pi/4 the cosine is approximated by - * 1 - x**2 P(x**2). - * Between pi/4 and pi/2 the sine is represented as - * x + x**3 P(x**2). - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE +-1000 30000 2.1e-16 5.7e-17 - * See also sin(). - * - */ - -/* Cephes Math Library Release 2.0: April, 1987 - * Copyright 1985, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 */ - -#include "mconf.h" - -static double sincof[] = { - 1.58962301572218447952E-10, - -2.50507477628503540135E-8, - 2.75573136213856773549E-6, - -1.98412698295895384658E-4, - 8.33333333332211858862E-3, - -1.66666666666666307295E-1 -}; - -static double coscof[] = { - 1.13678171382044553091E-11, - -2.08758833757683644217E-9, - 2.75573155429816611547E-7, - -2.48015872936186303776E-5, - 1.38888888888806666760E-3, - -4.16666666666666348141E-2, - 4.99999999999999999798E-1 -}; - -static double PI180 = 1.74532925199432957692E-2; /* pi/180 */ -static double lossth = 1.0e14; - -double sindg(double x) -{ - double y, z, zz; - int j, sign; - - /* make argument positive but save the sign */ - sign = 1; - if (x < 0) { - x = -x; - sign = -1; - } - - if (x > lossth) { - sf_error("sindg", SF_ERROR_NO_RESULT, NULL); - return (0.0); - } - - y = floor(x / 45.0); /* integer part of x/M_PI_4 */ - - /* strip high bits of integer part to prevent integer overflow */ - z = ldexp(y, -4); - z = floor(z); /* integer part of y/8 */ - z = y - ldexp(z, 4); /* y - 16 * (y/16) */ - - j = z; /* convert to integer for tests on the phase angle */ - /* map zeros to origin */ - if (j & 1) { - j += 1; - y += 1.0; - } - j = j & 07; /* octant modulo 360 degrees */ - /* reflect in x axis */ - if (j > 3) { - sign = -sign; - j -= 4; - } - - z = x - y * 45.0; /* x mod 45 degrees */ - z *= PI180; /* multiply by pi/180 to convert to radians */ - zz = z * z; - - if ((j == 1) || (j == 2)) { - y = 1.0 - zz * polevl(zz, coscof, 6); - } - else { - y = z + z * (zz * polevl(zz, sincof, 5)); - } - - if (sign < 0) - y = -y; - - return (y); -} - - -double cosdg(double x) -{ - double y, z, zz; - int j, sign; - - /* make argument positive */ - sign = 1; - if (x < 0) - x = -x; - - if (x > lossth) { - sf_error("cosdg", SF_ERROR_NO_RESULT, NULL); - return (0.0); - } - - y = floor(x / 45.0); - z = ldexp(y, -4); - z = floor(z); /* integer part of y/8 */ - z = y - ldexp(z, 4); /* y - 16 * (y/16) */ - - /* integer and fractional part modulo one octant */ - j = z; - if (j & 1) { /* map zeros to origin */ - j += 1; - y += 1.0; - } - j = j & 07; - if (j > 3) { - j -= 4; - sign = -sign; - } - - if (j > 1) - sign = -sign; - - z = x - y * 45.0; /* x mod 45 degrees */ - z *= PI180; /* multiply by pi/180 to convert to radians */ - - zz = z * z; - - if ((j == 1) || (j == 2)) { - y = z + z * (zz * polevl(zz, sincof, 5)); - } - else { - y = 1.0 - zz * polevl(zz, coscof, 6); - } - - if (sign < 0) - y = -y; - - return (y); -} - - -/* Degrees, minutes, seconds to radians: */ - -/* 1 arc second, in radians = 4.848136811095359935899141023579479759563533023727e-6 */ -static double P64800 = - 4.848136811095359935899141023579479759563533023727e-6; - -double radian(double d, double m, double s) -{ - return (((d * 60.0 + m) * 60.0 + s) * P64800); -} diff --git a/gtsam/3rdparty/cephes/cephes/sinpi.c b/gtsam/3rdparty/cephes/cephes/sinpi.c deleted file mode 100644 index f0e52f9904..0000000000 --- a/gtsam/3rdparty/cephes/cephes/sinpi.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Implement sin(pi * x) and cos(pi * x) for real x. Since the periods - * of these functions are integral (and thus representable in double - * precision), it's possible to compute them with greater accuracy - * than sin(x) and cos(x). - */ -#include "mconf.h" - - -/* Compute sin(pi * x). */ -double sinpi(double x) -{ - double s = 1.0; - double r; - - if (x < 0.0) { - x = -x; - s = -1.0; - } - - r = fmod(x, 2.0); - if (r < 0.5) { - return s*sin(M_PI*r); - } - else if (r > 1.5) { - return s*sin(M_PI*(r - 2.0)); - } - else { - return -s*sin(M_PI*(r - 1.0)); - } -} - - -/* Compute cos(pi * x) */ -double cospi(double x) -{ - double r; - - if (x < 0.0) { - x = -x; - } - - r = fmod(x, 2.0); - if (r == 0.5) { - // We don't want to return -0.0 - return 0.0; - } - if (r < 1.0) { - return -sin(M_PI*(r - 0.5)); - } - else { - return sin(M_PI*(r - 1.5)); - } -} diff --git a/gtsam/3rdparty/cephes/cephes/spence.c b/gtsam/3rdparty/cephes/cephes/spence.c deleted file mode 100644 index 48e1c40878..0000000000 --- a/gtsam/3rdparty/cephes/cephes/spence.c +++ /dev/null @@ -1,125 +0,0 @@ -/* spence.c - * - * Dilogarithm - * - * - * - * SYNOPSIS: - * - * double x, y, spence(); - * - * y = spence( x ); - * - * - * - * DESCRIPTION: - * - * Computes the integral - * - * x - * - - * | | log t - * spence(x) = - | ----- dt - * | | t - 1 - * - - * 1 - * - * for x >= 0. A rational approximation gives the integral in - * the interval (0.5, 1.5). Transformation formulas for 1/x - * and 1-x are employed outside the basic expansion range. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,4 30000 3.9e-15 5.4e-16 - * - * - */ - -/* spence.c */ - - -/* - * Cephes Math Library Release 2.1: January, 1989 - * Copyright 1985, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -static double A[8] = { - 4.65128586073990045278E-5, - 7.31589045238094711071E-3, - 1.33847639578309018650E-1, - 8.79691311754530315341E-1, - 2.71149851196553469920E0, - 4.25697156008121755724E0, - 3.29771340985225106936E0, - 1.00000000000000000126E0, -}; - -static double B[8] = { - 6.90990488912553276999E-4, - 2.54043763932544379113E-2, - 2.82974860602568089943E-1, - 1.41172597751831069617E0, - 3.63800533345137075418E0, - 5.03278880143316990390E0, - 3.54771340985225096217E0, - 9.99999999999999998740E-1, -}; - -extern double MACHEP; - -double spence(double x) -{ - double w, y, z; - int flag; - - if (x < 0.0) { - sf_error("spence", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - if (x == 1.0) - return (0.0); - - if (x == 0.0) - return (M_PI * M_PI / 6.0); - - flag = 0; - - if (x > 2.0) { - x = 1.0 / x; - flag |= 2; - } - - if (x > 1.5) { - w = (1.0 / x) - 1.0; - flag |= 2; - } - - else if (x < 0.5) { - w = -x; - flag |= 1; - } - - else - w = x - 1.0; - - - y = -w * polevl(w, A, 7) / polevl(w, B, 7); - - if (flag & 1) - y = (M_PI * M_PI) / 6.0 - log(x) * log(1.0 - x) - y; - - if (flag & 2) { - z = log(x); - y = -0.5 * z * z - y; - } - - return (y); -} diff --git a/gtsam/3rdparty/cephes/cephes/stdtr.c b/gtsam/3rdparty/cephes/cephes/stdtr.c deleted file mode 100644 index 5a37536bed..0000000000 --- a/gtsam/3rdparty/cephes/cephes/stdtr.c +++ /dev/null @@ -1,203 +0,0 @@ -/* stdtr.c - * - * Student's t distribution - * - * - * - * SYNOPSIS: - * - * double t, stdtr(); - * short k; - * - * y = stdtr( k, t ); - * - * - * DESCRIPTION: - * - * Computes the integral from minus infinity to t of the Student - * t distribution with integer k > 0 degrees of freedom: - * - * t - * - - * | | - * - | 2 -(k+1)/2 - * | ( (k+1)/2 ) | ( x ) - * ---------------------- | ( 1 + --- ) dx - * - | ( k ) - * sqrt( k pi ) | ( k/2 ) | - * | | - * - - * -inf. - * - * Relation to incomplete beta integral: - * - * 1 - stdtr(k,t) = 0.5 * incbet( k/2, 1/2, z ) - * where - * z = k/(k + t**2). - * - * For t < -2, this is the method of computation. For higher t, - * a direct method is derived from integration by parts. - * Since the function is symmetric about t=0, the area under the - * right tail of the density is found by calling the function - * with -t instead of t. - * - * ACCURACY: - * - * Tested at random 1 <= k <= 25. The "domain" refers to t. - * Relative error: - * arithmetic domain # trials peak rms - * IEEE -100,-2 50000 5.9e-15 1.4e-15 - * IEEE -2,100 500000 2.7e-15 4.9e-17 - */ - -/* stdtri.c - * - * Functional inverse of Student's t distribution - * - * - * - * SYNOPSIS: - * - * double p, t, stdtri(); - * int k; - * - * t = stdtri( k, p ); - * - * - * DESCRIPTION: - * - * Given probability p, finds the argument t such that stdtr(k,t) - * is equal to p. - * - * ACCURACY: - * - * Tested at random 1 <= k <= 100. The "domain" refers to p: - * Relative error: - * arithmetic domain # trials peak rms - * IEEE .001,.999 25000 5.7e-15 8.0e-16 - * IEEE 10^-6,.001 25000 2.0e-12 2.9e-14 - */ - - -/* - * Cephes Math Library Release 2.3: March, 1995 - * Copyright 1984, 1987, 1995 by Stephen L. Moshier - */ - -#include "mconf.h" -#include - -extern double MACHEP; - -double stdtr(int k, double t) -{ - double x, rk, z, f, tz, p, xsqk; - int j; - - if (k <= 0) { - sf_error("stdtr", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - if (t == 0) - return (0.5); - - if (t < -2.0) { - rk = k; - z = rk / (rk + t * t); - p = 0.5 * incbet(0.5 * rk, 0.5, z); - return (p); - } - - /* compute integral from -t to + t */ - - if (t < 0) - x = -t; - else - x = t; - - rk = k; /* degrees of freedom */ - z = 1.0 + (x * x) / rk; - - /* test if k is odd or even */ - if ((k & 1) != 0) { - - /* computation for odd k */ - - xsqk = x / sqrt(rk); - p = atan(xsqk); - if (k > 1) { - f = 1.0; - tz = 1.0; - j = 3; - while ((j <= (k - 2)) && ((tz / f) > MACHEP)) { - tz *= (j - 1) / (z * j); - f += tz; - j += 2; - } - p += f * xsqk / z; - } - p *= 2.0 / M_PI; - } - - - else { - - /* computation for even k */ - - f = 1.0; - tz = 1.0; - j = 2; - - while ((j <= (k - 2)) && ((tz / f) > MACHEP)) { - tz *= (j - 1) / (z * j); - f += tz; - j += 2; - } - p = f * x / sqrt(z * rk); - } - - /* common exit */ - - - if (t < 0) - p = -p; /* note destruction of relative accuracy */ - - p = 0.5 + 0.5 * p; - return (p); -} - -double stdtri(int k, double p) -{ - double t, rk, z; - int rflg; - - if (k <= 0 || p <= 0.0 || p >= 1.0) { - sf_error("stdtri", SF_ERROR_DOMAIN, NULL); - return (NAN); - } - - rk = k; - - if (p > 0.25 && p < 0.75) { - if (p == 0.5) - return (0.0); - z = 1.0 - 2.0 * p; - z = incbi(0.5, 0.5 * rk, fabs(z)); - t = sqrt(rk * z / (1.0 - z)); - if (p < 0.5) - t = -t; - return (t); - } - rflg = -1; - if (p >= 0.5) { - p = 1.0 - p; - rflg = 1; - } - z = incbi(0.5 * rk, 0.5, 2.0 * p); - - if (DBL_MAX * z < rk) - return (rflg * INFINITY); - t = sqrt(rk / z - rk); - return (rflg * t); -} diff --git a/gtsam/3rdparty/cephes/cephes/struve.c b/gtsam/3rdparty/cephes/cephes/struve.c deleted file mode 100644 index 26c86fa2d7..0000000000 --- a/gtsam/3rdparty/cephes/cephes/struve.c +++ /dev/null @@ -1,408 +0,0 @@ -/* - * Compute the Struve function. - * - * Notes - * ----- - * - * We use three expansions for the Struve function discussed in [1]: - * - * - power series - * - expansion in Bessel functions - * - asymptotic large-z expansion - * - * Rounding errors are estimated based on the largest terms in the sums. - * - * ``struve_convergence.py`` plots the convergence regions of the different - * expansions. - * - * (i) - * - * Looking at the error in the asymptotic expansion, one finds that - * it's not worth trying if z ~> 0.7 * v + 12 for v > 0. - * - * (ii) - * - * The Bessel function expansion tends to fail for |z| >~ |v| and is not tried - * there. - * - * For Struve H it covers the quadrant v > z where the power series may fail to - * produce reasonable results. - * - * (iii) - * - * The three expansions together cover for Struve H the region z > 0, v real. - * - * They also cover Struve L, except that some loss of precision may occur around - * the transition region z ~ 0.7 |v|, v < 0, |v| >> 1 where the function changes - * rapidly. - * - * (iv) - * - * The power series is evaluated in double-double precision. This fixes accuracy - * issues in Struve H for |v| << |z| before the asymptotic expansion kicks in. - * Moreover, it improves the Struve L behavior for negative v. - * - * - * References - * ---------- - * [1] NIST Digital Library of Mathematical Functions - * https://dlmf.nist.gov/11 - */ - -/* - * Copyright (C) 2013 Pauli Virtanen - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * a. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * b. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * c. Neither the name of Enthought nor the names of the SciPy Developers - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "mconf.h" -#include "dd_real.h" - -// #include "amos_wrappers.h" - -#define STRUVE_MAXITER 10000 -#define SUM_EPS 1e-16 /* be sure we are in the tail of the sum */ -#define SUM_TINY 1e-100 -#define GOOD_EPS 1e-12 -#define ACCEPTABLE_EPS 1e-7 -#define ACCEPTABLE_ATOL 1e-300 - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -double struve_power_series(double v, double x, int is_h, double *err); -double struve_asymp_large_z(double v, double z, int is_h, double *err); -double struve_bessel_series(double v, double z, int is_h, double *err); - -static double bessel_y(double v, double x); -static double bessel_j(double v, double x); -static double struve_hl(double v, double x, int is_h); - -double struve_h(double v, double z) -{ - return struve_hl(v, z, 1); -} - -double struve_l(double v, double z) -{ - return struve_hl(v, z, 0); -} - -static double struve_hl(double v, double z, int is_h) -{ - double value[4], err[4], tmp; - int n; - - if (z < 0) { - n = v; - if (v == n) { - tmp = (n % 2 == 0) ? -1 : 1; - return tmp * struve_hl(v, -z, is_h); - } - else { - return NAN; - } - } - else if (z == 0) { - if (v < -1) { - return gammasgn(v + 1.5) * INFINITY; - } - else if (v == -1) { - return 2 / sqrt(M_PI) / Gamma(0.5); - } - else { - return 0; - } - } - - n = -v - 0.5; - if (n == -v - 0.5 && n > 0) { - if (is_h) { - return (n % 2 == 0 ? 1 : -1) * bessel_j(n + 0.5, z); - } - else { - return iv(n + 0.5, z); - } - } - - /* Try the asymptotic expansion */ - if (z >= 0.7*v + 12) { - value[0] = struve_asymp_large_z(v, z, is_h, &err[0]); - if (err[0] < GOOD_EPS * fabs(value[0])) { - return value[0]; - } - } - else { - err[0] = INFINITY; - } - - /* Try power series */ - value[1] = struve_power_series(v, z, is_h, &err[1]); - if (err[1] < GOOD_EPS * fabs(value[1])) { - return value[1]; - } - - /* Try bessel series */ - if (fabs(z) < fabs(v) + 20) { - value[2] = struve_bessel_series(v, z, is_h, &err[2]); - if (err[2] < GOOD_EPS * fabs(value[2])) { - return value[2]; - } - } - else { - err[2] = INFINITY; - } - - /* Return the best of the three, if it is acceptable */ - n = 0; - if (err[1] < err[n]) n = 1; - if (err[2] < err[n]) n = 2; - if (err[n] < ACCEPTABLE_EPS * fabs(value[n]) || err[n] < ACCEPTABLE_ATOL) { - return value[n]; - } - - /* Maybe it really is an overflow? */ - tmp = -lgam(v + 1.5) + (v + 1)*log(z/2); - if (!is_h) { - tmp = fabs(tmp); - } - if (tmp > 700) { - sf_error("struve", SF_ERROR_OVERFLOW, NULL); - return INFINITY * gammasgn(v + 1.5); - } - - /* Failure */ - sf_error("struve", SF_ERROR_NO_RESULT, NULL); - return NAN; -} - - -/* - * Power series for Struve H and L - * https://dlmf.nist.gov/11.2.1 - * - * Starts to converge roughly at |n| > |z| - */ -double struve_power_series(double v, double z, int is_h, double *err) -{ - int n, sgn; - double term, sum, maxterm, scaleexp, tmp; - double2 cterm, csum, cdiv, z2, c2v, ctmp; - - if (is_h) { - sgn = -1; - } - else { - sgn = 1; - } - - tmp = -lgam(v + 1.5) + (v + 1)*log(z/2); - if (tmp < -600 || tmp > 600) { - /* Scale exponent to postpone underflow/overflow */ - scaleexp = tmp/2; - tmp -= scaleexp; - } - else { - scaleexp = 0; - } - - term = 2 / sqrt(M_PI) * exp(tmp) * gammasgn(v + 1.5); - sum = term; - maxterm = 0; - - cterm = dd_create_d(term); - csum = dd_create_d(sum); - z2 = dd_create_d(sgn*z*z); - c2v = dd_create_d(2*v); - - for (n = 0; n < STRUVE_MAXITER; ++n) { - /* cdiv = (3 + 2*n) * (3 + 2*n + 2*v)) */ - cdiv = dd_create_d(3 + 2*n); - ctmp = dd_create_d(3 + 2*n); - ctmp = dd_add(ctmp, c2v); - cdiv = dd_mul(cdiv, ctmp); - - /* cterm *= z2 / cdiv */ - cterm = dd_mul(cterm, z2); - cterm = dd_div(cterm, cdiv); - - csum = dd_add(csum, cterm); - - term = dd_to_double(cterm); - sum = dd_to_double(csum); - - if (fabs(term) > maxterm) { - maxterm = fabs(term); - } - if (fabs(term) < SUM_TINY * fabs(sum) || term == 0 || !isfinite(sum)) { - break; - } - } - - *err = fabs(term) + fabs(maxterm) * 1e-22; - - if (scaleexp != 0) { - sum *= exp(scaleexp); - *err *= exp(scaleexp); - } - - if (sum == 0 && term == 0 && v < 0 && !is_h) { - /* Spurious underflow */ - *err = INFINITY; - return NAN; - } - - return sum; -} - - -/* - * Bessel series - * https://dlmf.nist.gov/11.4.19 - */ -double struve_bessel_series(double v, double z, int is_h, double *err) -{ - int n; - double term, cterm, sum, maxterm; - - if (is_h && v < 0) { - /* Works less reliably in this region */ - *err = INFINITY; - return NAN; - } - - sum = 0; - maxterm = 0; - - cterm = sqrt(z / (2*M_PI)); - - for (n = 0; n < STRUVE_MAXITER; ++n) { - if (is_h) { - term = cterm * bessel_j(n + v + 0.5, z) / (n + 0.5); - cterm *= z/2 / (n + 1); - } - else { - term = cterm * iv(n + v + 0.5, z) / (n + 0.5); - cterm *= -z/2 / (n + 1); - } - sum += term; - if (fabs(term) > maxterm) { - maxterm = fabs(term); - } - if (fabs(term) < SUM_EPS * fabs(sum) || term == 0 || !isfinite(sum)) { - break; - } - } - - *err = fabs(term) + fabs(maxterm) * 1e-16; - - /* Account for potential underflow of the Bessel functions */ - *err += 1e-300 * fabs(cterm); - - return sum; -} - - -/* - * Large-z expansion for Struve H and L - * https://dlmf.nist.gov/11.6.1 - */ -double struve_asymp_large_z(double v, double z, int is_h, double *err) -{ - int n, sgn, maxiter; - double term, sum, maxterm; - double m; - - if (is_h) { - sgn = -1; - } - else { - sgn = 1; - } - - /* Asymptotic expansion divergenge point */ - m = z/2; - if (m <= 0) { - maxiter = 0; - } - else if (m > STRUVE_MAXITER) { - maxiter = STRUVE_MAXITER; - } - else { - maxiter = (int)m; - } - if (maxiter == 0) { - *err = INFINITY; - return NAN; - } - - if (z < v) { - /* Exclude regions where our error estimation fails */ - *err = INFINITY; - return NAN; - } - - /* Evaluate sum */ - term = -sgn / sqrt(M_PI) * exp(-lgam(v + 0.5) + (v - 1) * log(z/2)) * gammasgn(v + 0.5); - sum = term; - maxterm = 0; - - for (n = 0; n < maxiter; ++n) { - term *= sgn * (1 + 2*n) * (1 + 2*n - 2*v) / (z*z); - sum += term; - if (fabs(term) > maxterm) { - maxterm = fabs(term); - } - if (fabs(term) < SUM_EPS * fabs(sum) || term == 0 || !isfinite(sum)) { - break; - } - } - - if (is_h) { - sum += bessel_y(v, z); - } - else { - sum += iv(v, z); - } - - /* - * This error estimate is strictly speaking valid only for - * n > v - 0.5, but numerical results indicate that it works - * reasonably. - */ - *err = fabs(term) + fabs(maxterm) * 1e-16; - - return sum; -} - - -static double bessel_y(double v, double x) -{ - return cbesy_wrap_real(v, x); -} - -static double bessel_j(double v, double x) -{ - return cbesj_wrap_real(v, x); -} diff --git a/gtsam/3rdparty/cephes/cephes/tandg.c b/gtsam/3rdparty/cephes/cephes/tandg.c deleted file mode 100644 index 1ea86329be..0000000000 --- a/gtsam/3rdparty/cephes/cephes/tandg.c +++ /dev/null @@ -1,141 +0,0 @@ -/* tandg.c - * - * Circular tangent of argument in degrees - * - * - * - * SYNOPSIS: - * - * double x, y, tandg(); - * - * y = tandg( x ); - * - * - * - * DESCRIPTION: - * - * Returns the circular tangent of the argument x in degrees. - * - * Range reduction is modulo pi/4. A rational function - * x + x**3 P(x**2)/Q(x**2) - * is employed in the basic interval [0, pi/4]. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,10 30000 3.2e-16 8.4e-17 - * - * ERROR MESSAGES: - * - * message condition value returned - * tandg total loss x > 1.0e14 (IEEE) 0.0 - * tandg singularity x = 180 k + 90 INFINITY - */ - /* cotdg.c - * - * Circular cotangent of argument in degrees - * - * - * - * SYNOPSIS: - * - * double x, y, cotdg(); - * - * y = cotdg( x ); - * - * - * - * DESCRIPTION: - * - * Returns the circular cotangent of the argument x in degrees. - * - * Range reduction is modulo pi/4. A rational function - * x + x**3 P(x**2)/Q(x**2) - * is employed in the basic interval [0, pi/4]. - * - * - * ERROR MESSAGES: - * - * message condition value returned - * cotdg total loss x > 1.0e14 (IEEE) 0.0 - * cotdg singularity x = 180 k INFINITY - */ - -/* - * Cephes Math Library Release 2.0: April, 1987 - * Copyright 1984, 1987 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" - -static double PI180 = 1.74532925199432957692E-2; -static double lossth = 1.0e14; - -static double tancot(double, int); - -double tandg(double x) -{ - return (tancot(x, 0)); -} - - -double cotdg(double x) -{ - return (tancot(x, 1)); -} - - -static double tancot(double xx, int cotflg) -{ - double x; - int sign; - - /* make argument positive but save the sign */ - if (xx < 0) { - x = -xx; - sign = -1; - } - else { - x = xx; - sign = 1; - } - - if (x > lossth) { - sf_error("tandg", SF_ERROR_NO_RESULT, NULL); - return 0.0; - } - - /* modulo 180 */ - x = x - 180.0 * floor(x / 180.0); - if (cotflg) { - if (x <= 90.0) { - x = 90.0 - x; - } - else { - x = x - 90.0; - sign *= -1; - } - } - else { - if (x > 90.0) { - x = 180.0 - x; - sign *= -1; - } - } - if (x == 0.0) { - return 0.0; - } - else if (x == 45.0) { - return sign * 1.0; - } - else if (x == 90.0) { - sf_error((cotflg ? "cotdg" : "tandg"), SF_ERROR_SINGULAR, NULL); - return INFINITY; - } - /* x is now transformed into [0, 90) */ - return sign * tan(x * PI180); -} diff --git a/gtsam/3rdparty/cephes/cephes/tukey.c b/gtsam/3rdparty/cephes/cephes/tukey.c deleted file mode 100644 index 751314a875..0000000000 --- a/gtsam/3rdparty/cephes/cephes/tukey.c +++ /dev/null @@ -1,68 +0,0 @@ - -/* Compute the CDF of the Tukey-Lambda distribution - * using a bracketing search with special checks - * - * The PPF of the Tukey-lambda distribution is - * G(p) = (p**lam + (1-p)**lam) / lam - * - * Author: Travis Oliphant - */ - -#include - -#define SMALLVAL 1e-4 -#define EPS 1.0e-14 -#define MAXCOUNT 60 - -double tukeylambdacdf(double x, double lmbda) -{ - double pmin, pmid, pmax, plow, phigh, xeval; - int count; - - if (isnan(x) || isnan(lmbda)) { - return NAN; - } - - xeval = 1.0 / lmbda; - if (lmbda > 0.0) { - if (x <= (-xeval)) { - return 0.0; - } - if (x >= xeval) { - return 1.0; - } - } - - if ((-SMALLVAL < lmbda) && (lmbda < SMALLVAL)) { - if (x >= 0) { - return 1.0 / (1.0 + exp(-x)); - } - else { - return exp(x) / (1.0 + exp(x)); - } - } - - pmin = 0.0; - pmid = 0.5; - pmax = 1.0; - plow = pmin; - phigh = pmax; - count = 0; - - while ((count < MAXCOUNT) && (fabs(pmid - plow) > EPS)) { - xeval = (pow(pmid, lmbda) - pow(1.0 - pmid, lmbda)) / lmbda; - if (xeval == x) { - return pmid; - } - if (xeval > x) { - phigh = pmid; - pmid = (pmid + plow) / 2.0; - } - else { - plow = pmid; - pmid = (pmid + phigh) / 2.0; - } - count++; - } - return pmid; -} diff --git a/gtsam/3rdparty/cephes/cephes/unity.c b/gtsam/3rdparty/cephes/cephes/unity.c index 76bc7f08df..65758b63cb 100644 --- a/gtsam/3rdparty/cephes/cephes/unity.c +++ b/gtsam/3rdparty/cephes/cephes/unity.c @@ -13,6 +13,9 @@ /* Scipy changes: * - 06-10-2016: added lgam1p */ +/* gtsam changes: + * - 01-24-2026: removed log1p and expm1 + */ #include "mconf.h" @@ -46,21 +49,8 @@ static const double LQ[] = { 6.0118660497603843919306E1, }; -double log1p(double x) -{ - double z; - - z = 1.0 + x; - if ((z < M_SQRT1_2) || (z > M_SQRT2)) - return (log(z)); - z = x * x; - z = -0.5 * z + x * (z * polevl(x, LP, 6) / p1evl(x, LQ, 6)); - return (x + z); -} - - /* log(1 + x) - x */ -double log1pmx(double x) +double gtsam_cephes_log1pmx(double x) { if (fabs(x) < 0.5) { int n; @@ -103,31 +93,6 @@ static double EQ[4] = { 2.0000000000000000000897E0, }; -double expm1(double x) -{ - double r, xx; - - if (!cephes_isfinite(x)) { - if (cephes_isnan(x)) { - return x; - } - else if (x > 0) { - return x; - } - else { - return -1.0; - } - - } - if ((x < -0.5) || (x > 0.5)) - return (exp(x) - 1.0); - xx = x * x; - r = x * polevl(xx, EP, 2); - r = r / (polevl(xx, EQ, 3) - r); - return (r + r); -} - - /* cosm1(x) = cos(x) - 1 */ @@ -141,7 +106,7 @@ static double coscof[7] = { 4.1666666666666666609054E-2, }; -double cosm1(double x) +double gtsam_cephes_cosm1(double x) { double xx; @@ -166,7 +131,7 @@ static double lgam1p_taylor(double x) xfac = -x; for (n = 2; n < 42; n++) { xfac *= -x; - coeff = zeta(n, 1) * xfac / n; + coeff = gtsam_cephes_zeta(n, 1) * xfac / n; res += coeff; if (fabs(coeff) < MACHEP * fabs(res)) { break; @@ -178,13 +143,13 @@ static double lgam1p_taylor(double x) /* Compute lgam(x + 1). */ -double lgam1p(double x) +double gtsam_cephes_lgam1p(double x) { if (fabs(x) <= 0.5) { return lgam1p_taylor(x); } else if (fabs(x - 1) < 0.5) { return log(x) + lgam1p_taylor(x - 1); } else { - return lgam(x + 1); + return gtsam_cephes_lgam(x + 1); } } diff --git a/gtsam/3rdparty/cephes/cephes/yn.c b/gtsam/3rdparty/cephes/cephes/yn.c deleted file mode 100644 index c02ff0acd8..0000000000 --- a/gtsam/3rdparty/cephes/cephes/yn.c +++ /dev/null @@ -1,105 +0,0 @@ -/* yn.c - * - * Bessel function of second kind of integer order - * - * - * - * SYNOPSIS: - * - * double x, y, yn(); - * int n; - * - * y = yn( n, x ); - * - * - * - * DESCRIPTION: - * - * Returns Bessel function of order n, where n is a - * (possibly negative) integer. - * - * The function is evaluated by forward recurrence on - * n, starting with values computed by the routines - * y0() and y1(). - * - * If n = 0 or 1 the routine for y0 or y1 is called - * directly. - * - * - * - * ACCURACY: - * - * - * Absolute error, except relative - * when y > 1: - * arithmetic domain # trials peak rms - * IEEE 0, 30 30000 3.4e-15 4.3e-16 - * - * - * ERROR MESSAGES: - * - * message condition value returned - * yn singularity x = 0 INFINITY - * yn overflow INFINITY - * - * Spot checked against tables for x, n between 0 and 100. - * - */ - -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" -extern double MAXLOG; - -double yn(int n, double x) -{ - double an, anm1, anm2, r; - int k, sign; - - if (n < 0) { - n = -n; - if ((n & 1) == 0) /* -1**n */ - sign = 1; - else - sign = -1; - } - else - sign = 1; - - - if (n == 0) - return (sign * y0(x)); - if (n == 1) - return (sign * y1(x)); - - /* test for overflow */ - if (x == 0.0) { - sf_error("yn", SF_ERROR_SINGULAR, NULL); - return -INFINITY * sign; - } - else if (x < 0.0) { - sf_error("yn", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - /* forward recurrence on n */ - - anm2 = y0(x); - anm1 = y1(x); - k = 1; - r = 2 * k; - do { - an = r * anm1 / x - anm2; - anm2 = anm1; - anm1 = an; - r += 2.0; - ++k; - } - while (k < n); - - - return (sign * an); -} diff --git a/gtsam/3rdparty/cephes/cephes/yv.c b/gtsam/3rdparty/cephes/cephes/yv.c deleted file mode 100644 index e61a155214..0000000000 --- a/gtsam/3rdparty/cephes/cephes/yv.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Cephes Math Library Release 2.8: June, 2000 - * Copyright 1984, 1987, 2000 by Stephen L. Moshier - */ - -#include "mconf.h" - -extern double MACHEP; - - -/* - * Bessel function of noninteger order - */ -double yv(double v, double x) -{ - double y, t; - int n; - - n = v; - if (n == v) { - y = yn(n, x); - return (y); - } - else if (v == floor(v)) { - /* Zero in denominator. */ - sf_error("yv", SF_ERROR_DOMAIN, NULL); - return NAN; - } - - t = M_PI * v; - y = (cos(t) * jv(v, x) - jv(-v, x)) / sin(t); - - if (cephes_isinf(y)) { - if (v > 0) { - sf_error("yv", SF_ERROR_OVERFLOW, NULL); - return -INFINITY; - } - else if (v < -1e10) { - /* Whether it's +inf or -inf is numerically ill-defined. */ - sf_error("yv", SF_ERROR_DOMAIN, NULL); - return NAN; - } - } - - return (y); -} diff --git a/gtsam/3rdparty/cephes/cephes/zeta.c b/gtsam/3rdparty/cephes/cephes/zeta.c index 554933a24c..e9700888e7 100644 --- a/gtsam/3rdparty/cephes/cephes/zeta.c +++ b/gtsam/3rdparty/cephes/cephes/zeta.c @@ -86,7 +86,7 @@ static double A[] = { /* 30 Nov 86 -- error in third coefficient fixed */ -double zeta(double x, double q) +double gtsam_cephes_zeta(double x, double q) { int i; double a, b, k, s, t, w; @@ -96,13 +96,13 @@ double zeta(double x, double q) if (x < 1.0) { domerr: - sf_error("zeta", SF_ERROR_DOMAIN, NULL); + gtsam_cephes_sf_error("zeta", SF_ERROR_DOMAIN, NULL); return (NAN); } if (q <= 0.0) { if (q == floor(q)) { - sf_error("zeta", SF_ERROR_SINGULAR, NULL); + gtsam_cephes_sf_error("zeta", SF_ERROR_SINGULAR, NULL); retinf: return (INFINITY); } diff --git a/gtsam/3rdparty/cephes/cephes/zetac.c b/gtsam/3rdparty/cephes/cephes/zetac.c deleted file mode 100644 index 8414331832..0000000000 --- a/gtsam/3rdparty/cephes/cephes/zetac.c +++ /dev/null @@ -1,345 +0,0 @@ -/* zetac.c - * - * Riemann zeta function - * - * - * - * SYNOPSIS: - * - * double x, y, zetac(); - * - * y = zetac( x ); - * - * - * - * DESCRIPTION: - * - * - * - * inf. - * - -x - * zetac(x) = > k , x > 1, - * - - * k=2 - * - * is related to the Riemann zeta function by - * - * Riemann zeta(x) = zetac(x) + 1. - * - * Extension of the function definition for x < 1 is implemented. - * Zero is returned for x > log2(INFINITY). - * - * ACCURACY: - * - * Tabulated values have full machine accuracy. - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 1,50 10000 9.8e-16 1.3e-16 - * - * - */ - -/* - * Cephes Math Library Release 2.1: January, 1989 - * Copyright 1984, 1987, 1989 by Stephen L. Moshier - * Direct inquiries to 30 Frost Street, Cambridge, MA 02140 - */ - -#include "mconf.h" -#include "lanczos.h" - -/* Riemann zeta(x) - 1 - * for integer arguments between 0 and 30. - */ -static const double azetac[] = { - -1.50000000000000000000E0, - 0.0, /* Not used; zetac(1.0) is infinity. */ - 6.44934066848226436472E-1, - 2.02056903159594285400E-1, - 8.23232337111381915160E-2, - 3.69277551433699263314E-2, - 1.73430619844491397145E-2, - 8.34927738192282683980E-3, - 4.07735619794433937869E-3, - 2.00839282608221441785E-3, - 9.94575127818085337146E-4, - 4.94188604119464558702E-4, - 2.46086553308048298638E-4, - 1.22713347578489146752E-4, - 6.12481350587048292585E-5, - 3.05882363070204935517E-5, - 1.52822594086518717326E-5, - 7.63719763789976227360E-6, - 3.81729326499983985646E-6, - 1.90821271655393892566E-6, - 9.53962033872796113152E-7, - 4.76932986787806463117E-7, - 2.38450502727732990004E-7, - 1.19219925965311073068E-7, - 5.96081890512594796124E-8, - 2.98035035146522801861E-8, - 1.49015548283650412347E-8, - 7.45071178983542949198E-9, - 3.72533402478845705482E-9, - 1.86265972351304900640E-9, - 9.31327432419668182872E-10 -}; - -/* 2**x (1 - 1/x) (zeta(x) - 1) = P(1/x)/Q(1/x), 1 <= x <= 10 */ -static double P[9] = { - 5.85746514569725319540E11, - 2.57534127756102572888E11, - 4.87781159567948256438E10, - 5.15399538023885770696E9, - 3.41646073514754094281E8, - 1.60837006880656492731E7, - 5.92785467342109522998E5, - 1.51129169964938823117E4, - 2.01822444485997955865E2, -}; - -static double Q[8] = { - /* 1.00000000000000000000E0, */ - 3.90497676373371157516E11, - 5.22858235368272161797E10, - 5.64451517271280543351E9, - 3.39006746015350418834E8, - 1.79410371500126453702E7, - 5.66666825131384797029E5, - 1.60382976810944131506E4, - 1.96436237223387314144E2, -}; - -/* log(zeta(x) - 1 - 2**-x), 10 <= x <= 50 */ -static double A[11] = { - 8.70728567484590192539E6, - 1.76506865670346462757E8, - 2.60889506707483264896E10, - 5.29806374009894791647E11, - 2.26888156119238241487E13, - 3.31884402932705083599E14, - 5.13778997975868230192E15, - -1.98123688133907171455E15, - -9.92763810039983572356E16, - 7.82905376180870586444E16, - 9.26786275768927717187E16, -}; - -static double B[10] = { - /* 1.00000000000000000000E0, */ - -7.92625410563741062861E6, - -1.60529969932920229676E8, - -2.37669260975543221788E10, - -4.80319584350455169857E11, - -2.07820961754173320170E13, - -2.96075404507272223680E14, - -4.86299103694609136686E15, - 5.34589509675789930199E15, - 5.71464111092297631292E16, - -1.79915597658676556828E16, -}; - -/* (1-x) (zeta(x) - 1), 0 <= x <= 1 */ -static double R[6] = { - -3.28717474506562731748E-1, - 1.55162528742623950834E1, - -2.48762831680821954401E2, - 1.01050368053237678329E3, - 1.26726061410235149405E4, - -1.11578094770515181334E5, -}; - -static double S[5] = { - /* 1.00000000000000000000E0, */ - 1.95107674914060531512E1, - 3.17710311750646984099E2, - 3.03835500874445748734E3, - 2.03665876435770579345E4, - 7.43853965136767874343E4, -}; - -static double TAYLOR0[10] = { - -1.0000000009110164892, - -1.0000000057646759799, - -9.9999983138417361078e-1, - -1.0000013011460139596, - -1.000001940896320456, - -9.9987929950057116496e-1, - -1.000785194477042408, - -1.0031782279542924256, - -9.1893853320467274178e-1, - -1.5, -}; - -#define MAXL2 127 -#define SQRT_2_PI 0.79788456080286535587989 - -extern double MACHEP; - -static double zeta_reflection(double); -static double zetac_smallneg(double); -static double zetac_positive(double); - - -/* - * Riemann zeta function, minus one - */ -double zetac(double x) -{ - if (isnan(x)) { - return x; - } - else if (x == -INFINITY) { - return NAN; - } - else if (x < 0.0 && x > -0.01) { - return zetac_smallneg(x); - } - else if (x < 0.0) { - return zeta_reflection(-x) - 1; - } - else { - return zetac_positive(x); - } -} - - -/* - * Riemann zeta function - */ -double riemann_zeta(double x) -{ - if (isnan(x)) { - return x; - } - else if (x == -INFINITY) { - return NAN; - } - else if (x < 0.0 && x > -0.01) { - return 1 + zetac_smallneg(x); - } - else if (x < 0.0) { - return zeta_reflection(-x); - } - else { - return 1 + zetac_positive(x); - } -} - - -/* - * Compute zetac for positive arguments - */ -static inline double zetac_positive(double x) -{ - int i; - double a, b, s, w; - - if (x == 1.0) { - return INFINITY; - } - - if (x >= MAXL2) { - /* because first term is 2**-x */ - return 0.0; - } - - /* Tabulated values for integer argument */ - w = floor(x); - if (w == x) { - i = x; - if (i < 31) { -#ifdef UNK - return (azetac[i]); -#else - return (*(double *) &azetac[4 * i]); -#endif - } - } - - if (x < 1.0) { - w = 1.0 - x; - a = polevl(x, R, 5) / (w * p1evl(x, S, 5)); - return a; - } - - if (x <= 10.0) { - b = pow(2.0, x) * (x - 1.0); - w = 1.0 / x; - s = (x * polevl(w, P, 8)) / (b * p1evl(w, Q, 8)); - return s; - } - - if (x <= 50.0) { - b = pow(2.0, -x); - w = polevl(x, A, 10) / p1evl(x, B, 10); - w = exp(w) + b; - return w; - } - - /* Basic sum of inverse powers */ - s = 0.0; - a = 1.0; - do { - a += 2.0; - b = pow(a, -x); - s += b; - } - while (b / s > MACHEP); - - b = pow(2.0, -x); - s = (s + b) / (1.0 - b); - return s; -} - - -/* - * Compute zetac for small negative x. We can't use the reflection - * formula because to double precision 1 - x = 1 and zetac(1) = inf. - */ -static inline double zetac_smallneg(double x) -{ - return polevl(x, TAYLOR0, 9); -} - - -/* - * Compute zetac using the reflection formula (see DLMF 25.4.2) plus - * the Lanczos approximation for Gamma to avoid overflow. - */ -static inline double zeta_reflection(double x) -{ - double base, large_term, small_term, hx, x_shift; - - hx = x / 2; - if (hx == floor(hx)) { - /* Hit a zero of the sine factor */ - return 0; - } - - /* Reduce the argument to sine */ - x_shift = fmod(x, 4); - small_term = -SQRT_2_PI * sin(0.5 * M_PI * x_shift); - small_term *= lanczos_sum_expg_scaled(x + 1) * zeta(x + 1, 1); - - /* Group large terms together to prevent overflow */ - base = (x + lanczos_g + 0.5) / (2 * M_PI * M_E); - large_term = pow(base, x + 0.5); - if (isfinite(large_term)) { - return large_term * small_term; - } - /* - * We overflowed, but we might be able to stave off overflow by - * factoring in the small term earlier. To do this we compute - * - * (sqrt(large_term) * small_term) * sqrt(large_term) - * - * Since we only call this method for negative x bounded away from - * zero, the small term can only be as small sine on that region; - * i.e. about machine epsilon. This means that if the above still - * overflows, then there was truly no avoiding it. - */ - large_term = pow(base, 0.5 * x + 0.25); - return (large_term * small_term) * large_term; -} diff --git a/gtsam/base/ConcurrentMap.h b/gtsam/base/ConcurrentMap.h index 8ce44dda39..474091c627 100644 --- a/gtsam/base/ConcurrentMap.h +++ b/gtsam/base/ConcurrentMap.h @@ -19,6 +19,7 @@ #pragma once #include +#include // Change class depending on whether we are using TBB #ifdef GTSAM_USE_TBB @@ -41,8 +42,7 @@ using ConcurrentMapBase = tbb::concurrent_unordered_map< #else -// If we're not using TBB, use a FastMap for ConcurrentMap -#include +// If we're not using TBB, use a std::map template using ConcurrentMapBase = gtsam::FastMap; diff --git a/gtsam/base/FastSet.h b/gtsam/base/FastSet.h index 1a2627e247..d7dd839029 100644 --- a/gtsam/base/FastSet.h +++ b/gtsam/base/FastSet.h @@ -53,8 +53,6 @@ template class FastSet: public std::set, typename internal::FastDefaultAllocator::type> { - GTSAM_CONCEPT_ASSERT(IsTestable); - public: typedef std::set, diff --git a/gtsam/base/ForestTraversal.h b/gtsam/base/ForestTraversal.h new file mode 100644 index 0000000000..271148de5f --- /dev/null +++ b/gtsam/base/ForestTraversal.h @@ -0,0 +1,394 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file ForestTraversal.h + * @brief Forest traversal helpers with optional TBB acceleration. + * + * @details + * Provides top-down and bottom-up traversal helpers that either enqueue work + * on an internal `TaskScheduler` (for builds without TBB) or call the + * `treeTraversal` parallel helpers when `GTSAM_USE_TBB` is enabled. + * + * @note `Forest::roots()` or `Forest::roots` must return a range of + * pointer-like `Node` roots. + * @note `Node::children()` or `Node::children` must return a range of + * pointer-like `Node` children. + * + * @author Frank Dellaert + * @date May, 2025 + */ + +#pragma once + +#include +#ifdef GTSAM_USE_TBB +#include +#include +#include +#else +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace gtsam { + +/** + * @brief Mixin that provides depth-based top-down or bottom-up traversal. + * + * @details + * When TBB is present, the traversal delegates directly to + * `treeTraversal::DepthFirstForestParallel` and + * `treeTraversal::PostOrderForestParallel` with the configured parallel + * thresholds. Otherwise it falls back to the priority-queued implementation + * that mirrors `TaskMixin`. + */ +template +class ForestTraversal { + private: + size_t threadCount_; + using SharedNode = std::shared_ptr; + + public: + /// Construct a helper with a fixed thread budget (used by TBB when enabled). + explicit ForestTraversal( + size_t numThreads = std::thread::hardware_concurrency()) + : threadCount_(numThreads == 0 ? 1 : numThreads) +#ifndef GTSAM_USE_TBB + , + scheduler_(threadCount_) +#endif + { + } + +#ifdef GTSAM_USE_TBB + template + /// Depth-first traversal using a pre-order visitor (TBB path). + void runTopDown(Fn fn, int parallelThreshold = 10) { + withTbbTraversalControl([&] { + // The pre-order visitor runs before visiting children; parallel task + // scheduling is handled by treeTraversal helpers. + struct VisitorPre { + Fn* fn; + int operator()(const SharedNode& node, int&) const { + if (node) std::invoke(*fn, *node); + return 0; + } + }; + + int rootData = 0; + VisitorPre visitor{&fn}; + auto visitorPost = [](const SharedNode&, int) {}; + treeTraversal::DepthFirstForestParallel(static_cast(*this), + rootData, visitor, visitorPost, + parallelThreshold); + }); + } + + template + /// Post-order traversal using a bottom-up visitor (TBB path). + void runBottomUp(Fn fn, int parallelThreshold = 10) { + withTbbTraversalControl([&] { + // The bottom-up visitor runs after all children are processed; + // treeTraversal helpers orchestrate the parallelism. + struct VisitorPost { + Fn* fn; + void operator()(const SharedNode& node) const { + if (node) std::invoke(*fn, *node); + } + }; + + VisitorPost visitor{&fn}; + treeTraversal::PostOrderForestParallel(static_cast(*this), + visitor, parallelThreshold); + }); + } + + private: + /// Run a traversal with TBB and OpenMP concurrency limited to `threadCount_`. + template + void withTbbTraversalControl(Body&& body) { + // Set a cap on TBB threads and enter an OpenMP-compatible scope, + // then execute the provided traversal body. + tbb::global_control control(tbb::global_control::max_allowed_parallelism, + static_cast(threadCount_)); + TbbOpenMPMixedScope threadLimiter; + std::forward(body)(); + } + +#else + + /// Scheduler-based top-down traversal. + template + void runTopDown(Fn fn, int parallelThreshold = 10) { + const auto& roots = getRoots(); + if (roots.empty()) return; + // Create shared traversal state and run from all roots. + State state; + state.runTraversal([&]() { + for (const auto& root : roots) { + assert(root); + Frame frame{&scheduler_, *root, 0, fn, parallelThreshold, &state}; + frame.topDownDispatch(); + } + }); + } + + /// Scheduler-based bottom-up traversal. + template + void runBottomUp(Fn fn, int parallelThreshold = 10) { + const auto& roots = getRoots(); + if (roots.empty()) return; + // Create shared traversal state and run from all roots. + State state; + state.runTraversal([&]() { + for (const auto& root : roots) { + assert(root); + Frame frame{&scheduler_, *root, 0, fn, parallelThreshold, &state}; + frame.bottomUpAsync([] {}); + } + }); + } + + private: + TaskScheduler scheduler_; + + /// Return forest roots via method or field. + decltype(auto) getRoots() const { + const Forest& forest = static_cast(*this); + if constexpr (std::is_member_function_pointer_v) { + return forest.roots(); + } else { + return (forest.roots); + } + } + + /// Shared traversal state across scheduled tasks. + struct State { + std::atomic pending{0}; + std::atomic_flag exceptionClaim = ATOMIC_FLAG_INIT; + std::atomic hasException{false}; + std::exception_ptr exception; + std::promise done; + + /// Increment the pending counter. + inline int incrementPending() { + return pending.fetch_add(1, std::memory_order_relaxed); + } + + /// Decrement the pending counter. + inline int decrementPending() { + return pending.fetch_sub(1, std::memory_order_relaxed); + } + + /// Run a scheduler-based traversal with a fresh state and roots. + template + void runTraversal(Body&& body) { + std::future future = done.get_future(); + + // Seed pending count for the overall traversal scope, invoke body, + // then mark this seed work item as finished. + incrementPending(); + std::forward(body)(); + maybeFinish(); + + // Block until traversal resolves (success or exception propagation). + future.get(); + } + + /// Record the first exception. + /// Uses an atomic flag to win a single claim and set shared exception. + void recordException(std::exception_ptr e) { + if (!exceptionClaim.test_and_set(std::memory_order_acq_rel)) { + exception = e; + hasException.store(true, std::memory_order_release); + } + } + + /// Resolve traversal completion once pending reaches zero. + /// When the last task finishes, fulfill the promise or set the exception. + void maybeFinish() { + if (decrementPending() == 1) { + if (hasException.load(std::memory_order_acquire)) { + try { + done.set_exception(exception); + } catch (...) { /* ignore */ + } + } else { + try { + done.set_value(); + } catch (...) { /* ignore */ + } + } + } + } + }; + using DoneFn = std::function; + + /// RAII guard: marks one scheduled task as finished on scope exit. + struct MaybeFinish { + State* state; + ~MaybeFinish() { state->maybeFinish(); } + }; + + /// Per-node traversal frame to avoid threading many parameters. + template + struct Frame { + TaskScheduler* scheduler; + Node& node; + int depth; + const Fn& fn; + int threshold; + State* state; + + /// Return node children via method or field. + auto& getChildren() const { + if constexpr (std::is_member_function_pointer< + decltype(&Node::children)>::value) { + return node.children(); + } else { + return node.children; + } + } + + /// Return true iff node should be processed as a scheduled "parallel" task. + /// Decide scheduling based on `node.problemSize()` vs. `threshold`. + bool shouldParallelize() const { + if (threshold <= 0) { + return true; + } else { + return static_cast(node.problemSize()) >= threshold; + } + } + + /// Top-down dispatch: choose async or inline based on threshold. + inline void topDownDispatch() const { + if (shouldParallelize()) { + topDownAsync(); + } else { + topDownTraverse(); + } + } + + /// Enqueue node work; upon completion, dispatch children traversal. + inline void topDownAsync() const { + auto task = [frame = *this]() { + MaybeFinish finish{frame.state}; + frame.topDownTraverse(); + }; + /// Schedule a task and increment the pending counter. + state->incrementPending(); + scheduler->enqueue(std::function(std::move(task))); + } + + /// Inline node work followed by traversal of children. + inline void topDownTraverse() const { + if (state->hasException.load(std::memory_order_acquire)) + return; // Keep draining without doing new work. + try { + std::invoke(fn, node); + if (!state->hasException.load(std::memory_order_acquire)) { + auto&& children = getChildren(); + for (const auto& child : children) { + assert(child); + Frame childFrame{scheduler, *child, depth + 1, + fn, threshold, state}; + childFrame.topDownDispatch(); + } + } + } catch (...) { + state->recordException(std::current_exception()); + } + } + + /// Recurse children; complete this node after the last child finishes. + inline void bottomUpAsync(const DoneFn& onDone) const { + auto&& children = getChildren(); + if (children.empty()) { + completeBottomUpNode(onDone); + } else { + auto remaining = std::make_shared >( + static_cast(children.size())); + std::function childDone = [frame = *this, remaining, + onDone]() mutable { + if (remaining->fetch_sub(1, std::memory_order_relaxed) == 1) { + frame.completeBottomUpNode(onDone); + } + }; + + for (const auto& child : children) { + assert(child); + Frame childFrame{scheduler, *child, depth + 1, fn, threshold, state}; + childFrame.bottomUpAsync(childDone); + } + } + } + + /// Execute node work after children; schedule if above threshold. + inline void completeBottomUpNode(const DoneFn& onDone) const { + if (state->hasException.load(std::memory_order_acquire)) { + callOnDone(onDone); + } else if (shouldParallelize()) { + scheduleBottomUpNode(onDone); + } else { + bottomUpWork(onDone); + } + } + + /// Enqueue bottom-up node work, then invoke the continuation. + inline void scheduleBottomUpNode(const DoneFn& onDone) const { + auto task = [frame = *this, onDone]() mutable { + MaybeFinish finish{frame.state}; + if (frame.state->hasException.load(std::memory_order_acquire)) { + frame.callOnDone(onDone); + } else { + frame.bottomUpWork(onDone); + } + }; + + // Each scheduled task increments the pending counter. + state->incrementPending(); + + // Schedule a continuation or run it inline if already on a worker thread. + scheduler->enqueueOrRunInline(std::function(std::move(task))); + } + + /// Do bottom-up node work, then invoke the continuation. + inline void bottomUpWork(const DoneFn& onDone) const { + try { + std::invoke(fn, node); + } catch (...) { + state->recordException(std::current_exception()); + } + callOnDone(onDone); + } + + /// Invoke an `onDone` callback and record any exception it throws. + void callOnDone(const DoneFn& onDone) const { + try { + onDone(); + } catch (...) { + state->recordException(std::current_exception()); + } + } + + }; // end Frame + +#endif +}; + +} // namespace gtsam diff --git a/gtsam/base/Lie.h b/gtsam/base/Lie.h index 1a6023ee95..96e0efc161 100644 --- a/gtsam/base/Lie.h +++ b/gtsam/base/Lie.h @@ -209,6 +209,7 @@ struct LieGroupTraits : public GetDimensionImpl { // GetDimensionImpl handles resolving this to a static value or providing GetDimension(obj). inline constexpr static auto dimension = Class::dimension; using TangentVector = Eigen::Matrix; + using Jacobian = Eigen::Matrix; using ChartJacobian = OptionalJacobian; static TangentVector Local(const Class& origin, const Class& other, diff --git a/gtsam/base/MatrixLieGroup.h b/gtsam/base/MatrixLieGroup.h index 7653d28f1c..6987d36406 100644 --- a/gtsam/base/MatrixLieGroup.h +++ b/gtsam/base/MatrixLieGroup.h @@ -19,6 +19,7 @@ #pragma once #include +#include #include namespace gtsam { @@ -56,6 +57,9 @@ namespace gtsam { using Jacobian = typename Base::Jacobian; using TangentVector = typename Base::TangentVector; + /// @name Matrix Lie Group + /// @{ + /** * Vectorize the matrix representation of a Lie group element. * The derivative `H` is the `(N*N) x D` Jacobian of this vectorization map. @@ -130,7 +134,149 @@ namespace gtsam { return adj; } + /** + * Adjoint action on a tangent vector. + * + * Returns Ad_g * xi with optional Jacobians with respect to g and xi. + */ + TangentVector Adjoint(const TangentVector& xi, + ChartJacobian H_this = {}, + ChartJacobian H_xi = {}) const { + const auto& m = static_cast(*this); + const Jacobian Ad = m.AdjointMap(); + if (H_this) *H_this = -Ad * Class::adjointMap(xi); + if (H_xi) *H_xi = Ad; + return Ad * xi; + } + + /** + * Dual Adjoint action on a tangent covector. + * + * Returns Ad_g^T * x with optional Jacobians with respect to g and x. + */ + TangentVector AdjointTranspose(const TangentVector& x, + ChartJacobian H_this = {}, + ChartJacobian H_x = {}) const { + const auto& m = static_cast(*this); + const Jacobian Ad = m.AdjointMap(); + const TangentVector AdTx = Ad.transpose() * x; + + if (H_this) { + const Eigen::Index d = tangentDim(&m, nullptr); + setZeroJacobian(H_this, d); + if constexpr (D == Eigen::Dynamic) { + for (Eigen::Index i = 0; i < d; ++i) { + H_this->col(i) = + Class::adjointMap(TangentVector::Unit(d, i)).transpose() * AdTx; + } + } else { + const auto& basis = adjointBasis(); + for (Eigen::Index i = 0; i < d; ++i) { + H_this->col(i) = basis[static_cast(i)].transpose() * AdTx; + } + } + } + + if (H_x) *H_x = Ad.transpose(); + return AdTx; + } + + /** + * Lie algebra adjoint map ad_xi, with optional specialization in derived + * classes. + */ + static Jacobian adjointMap(const TangentVector& xi) { + const Eigen::Index d = tangentDim(nullptr, &xi); + Jacobian ad; + if constexpr (D == Eigen::Dynamic) { + ad.setZero(d, d); + } else { + ad.setZero(); + } + const auto Xi = Class::Hat(xi); + for (Eigen::Index i = 0; i < d; ++i) { + const auto Ei = Class::Hat(TangentVector::Unit(d, i)); + ad.col(i) = Class::Vee(Xi * Ei - Ei * Xi); + } + return ad; + } + + /** + * Lie algebra action ad_xi(y), with optional Jacobians. + */ + static TangentVector adjoint(const TangentVector& xi, + const TangentVector& y, ChartJacobian Hxi = {}, + ChartJacobian H_y = {}) { + const Jacobian ad_xi = Class::adjointMap(xi); + if (Hxi) *Hxi = -Class::adjointMap(y); + if (H_y) *H_y = ad_xi; + return ad_xi * y; + } + + /** + * Dual Lie algebra action ad_xi^T(y), with optional Jacobians. + */ + static TangentVector adjointTranspose(const TangentVector& xi, + const TangentVector& y, + ChartJacobian Hxi = {}, + ChartJacobian H_y = {}) { + const Jacobian adT_xi = Class::adjointMap(xi).transpose(); + if (Hxi) { + const Eigen::Index d = tangentDim(nullptr, &xi); + setZeroJacobian(Hxi, d); + if constexpr (D == Eigen::Dynamic) { + for (Eigen::Index i = 0; i < d; ++i) { + Hxi->col(i) = + Class::adjointMap(TangentVector::Unit(d, i)).transpose() * y; + } + } else { + const auto& basis = adjointBasis(); + for (Eigen::Index i = 0; i < d; ++i) { + Hxi->col(i) = basis[static_cast(i)].transpose() * y; + } + } + } + if (H_y) *H_y = adT_xi; + return adT_xi * y; + } + + /// @} + private: + static Eigen::Index tangentDim(const Class* m, const TangentVector* xi) { + if constexpr (D == Eigen::Dynamic) { + return m ? static_cast(traits::GetDimension(*m)) + : static_cast(xi->size()); + } else { + (void)m; + (void)xi; + return D; + } + } + + static void setZeroJacobian(ChartJacobian H, Eigen::Index d) { + if constexpr (D == Eigen::Dynamic) { + H->setZero(d, d); + } else { + (void)d; + H->setZero(); + } + } + + /// Basis maps ad_{e_i}, cached for fixed-size groups. + template = 0> + static const std::array& adjointBasis() { + static const std::array basis = []() { + std::array B{}; + for (int i = 0; i < DD; ++i) { + B[static_cast(i)] = + Class::adjointMap(TangentVector::Unit(DD, i)); + } + return B; + }(); + return basis; + } + /// Pre-compute and store vectorized generators for fixed-size groups. inline static const Eigen::Matrix& VectorizedGenerators() { @@ -142,10 +288,12 @@ namespace gtsam { namespace internal { - /// Adds LieAlgebra, Hat, Vee, and Vec to LieGroupTraits + /// Adds MatrixLieGroup methods to LieGroupTraits template struct MatrixLieGroupTraits : LieGroupTraits { using LieAlgebra = typename Class::LieAlgebra; using TangentVector = typename LieGroupTraits::TangentVector; + using Jacobian = typename LieGroupTraits::Jacobian; + using ChartJacobian = typename LieGroupTraits::ChartJacobian; static LieAlgebra Hat(const TangentVector& v) { return Class::Hat(v); @@ -162,6 +310,37 @@ namespace gtsam { LieGroupTraits::dimension> H = {}) { return m.vec(H); } + + static TangentVector AdjointTranspose(const Class& m, + const TangentVector& x, + ChartJacobian Hm = {}, + ChartJacobian Hx = {}) { + return m.AdjointTranspose(x, Hm, Hx); + } + + static TangentVector Adjoint(const Class& m, const TangentVector& x, + ChartJacobian Hm = {}, + ChartJacobian Hx = {}) { + return m.Adjoint(x, Hm, Hx); + } + + static Jacobian adjointMap(const TangentVector& xi) { + return Class::adjointMap(xi); + } + + static TangentVector adjoint(const TangentVector& xi, + const TangentVector& y, + ChartJacobian Hxi = {}, + ChartJacobian H_y = {}) { + return Class::adjoint(xi, y, Hxi, H_y); + } + + static TangentVector adjointTranspose(const TangentVector& xi, + const TangentVector& y, + ChartJacobian Hxi = {}, + ChartJacobian H_y = {}) { + return Class::adjointTranspose(xi, y, Hxi, H_y); + } }; /// Both LieGroupTraits and Testable diff --git a/gtsam/base/PriorityScheduler.h b/gtsam/base/PriorityScheduler.h new file mode 100644 index 0000000000..80ce660da3 --- /dev/null +++ b/gtsam/base/PriorityScheduler.h @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file PriorityScheduler.h + * @brief Priority-based task scheduler. + * + * @details + * This header defines a small, thread-based scheduler that executes tasks in + * priority order. A lower numeric priority is executed before a higher numeric + * priority (min-heap behavior). Tasks return a value of type `Y`, and callers + * can wait on results via `std::future`. + * + * This is implemented as a policy specialization of `gtsam::Scheduler`. + * + * @par Example + * @code + * gtsam::PriorityScheduler scheduler(4); + * auto future = scheduler.schedule(0, [] { return 42; }); + * int value = future.get(); + * @endcode + * + * @author Frank Dellaert + * @date May, 2025 + */ + +#pragma once + +#include + +namespace gtsam { + +namespace detail { + +/// Queue policy for PriorityScheduler: min-heap priority_queue by task +/// priority. +struct PrioritySchedulerPolicy { + using Metadata = int; + + template + struct Compare { + bool operator()(const TaskPtr& a, const TaskPtr& b) const { + return a.metadata > b.metadata; + } + }; + + template + using Container = + std::priority_queue, Compare>; + + template + static void push(Container& container, TaskPtr task) { + container.push(std::move(task)); + } + + template + static bool popLocal(Container& container, TaskPtr& out) { + if (container.empty()) return false; + out = container.top(); + container.pop(); + return true; + } + + template + static bool popSteal(Container& container, TaskPtr& out) { + return popLocal(container, out); + } +}; + +} // namespace detail + +/** + * @brief Thread pool scheduler that prioritizes tasks by numeric priority. + * + * @details + * - Lower numeric values are executed first. + * - Tasks are executed by worker threads created at construction. + * - `schedule` returns a `std::future` for the task result. + * - Per-thread queues reduce contention; workers steal from peers when idle. + * - External submissions are round-robin distributed across worker queues. + * - A condition variable parks workers when no work is available. + * + * @tparam Y Result type returned by tasks. Use `void` for no return value. + */ +template +using PriorityScheduler = Scheduler; + +} // namespace gtsam diff --git a/gtsam/base/Scheduler.h b/gtsam/base/Scheduler.h new file mode 100644 index 0000000000..a52d7b25e3 --- /dev/null +++ b/gtsam/base/Scheduler.h @@ -0,0 +1,403 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file Scheduler.h + * @brief Policy-based work-stealing scheduler. + * + * @details + * This header defines a small, thread-based scheduler core that executes tasks + * using per-worker queues with opportunistic work-stealing. The queue behavior + * (e.g., LIFO/FIFO, priority ordering) is defined by a Policy type. + * + * Public convenience wrappers are provided in `TaskScheduler.h` and + * `PriorityScheduler.h`. + * + * @author Frank Dellaert + * @date May, 2025 + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace gtsam { + +/** + * @brief Thread pool scheduler parameterized by a queue Policy. + * + * @details + * - Tasks are executed by worker threads created at construction. + * - Per-worker queues reduce contention; workers steal from peers when idle. + * - External submissions are round-robin distributed across worker queues. + * - A condition variable parks workers when no work is available. + * + * Policy requirements: + * - `using Metadata = ...;` carried with each task (e.g., `std::monostate`, + * `int`) + * - `template using Container = ...;` + * - `push(container, task)`, `popLocal(container, out)`, `popSteal(container, + * out)` + * + * @tparam Y Result type returned by tasks. Use `void` for no return value. + * @tparam Policy Queue behavior policy. + */ +template +class Scheduler { + using Metadata = typename Policy::Metadata; + + struct WorkItem { + Metadata metadata{}; + std::function run; + }; + + using Container = typename Policy::template Container; + + struct WorkerQueue { + std::mutex mutex; + Container queue; + }; + + std::vector> queues_; // Per-worker queues. + std::atomic queuedTasks_{0}; // Tracks queued work for wakeups. + std::vector workers_; + mutable std::mutex waitMutex_; // Dedicated mutex for condition_variable. + std::condition_variable condition_; + std::atomic stop_{false}; + std::atomic activeTasks_{0}; // In-flight tasks (queued + running). + inline static thread_local Scheduler* currentScheduler_ = nullptr; + inline static thread_local int workerIndex_ = -1; + std::atomic nextWorker_{0}; // Round-robin distributor. + + /** + * @brief Worker loop: wait for tasks, run them, and fulfill promises. + * + * Uses a condition variable to avoid spinning while the queue is empty. + * Stops once `stop_` is set and no queued work remains. + */ + void worker_thread(size_t index) { + currentScheduler_ = this; + workerIndex_ = static_cast(index); + while (true) { + WorkItem item; + if (!tryPopTask(index, item)) { + std::unique_lock lock(waitMutex_); + condition_.wait(lock, [this] { + return stop_.load(std::memory_order_acquire) || + queuedTasks_.load(std::memory_order_acquire) > 0; + }); + if (stop_.load(std::memory_order_acquire) && + queuedTasks_.load(std::memory_order_acquire) == 0) { + currentScheduler_ = nullptr; + workerIndex_ = -1; + return; + } + continue; + } + + try { + item.run(); + } catch (...) { + /* ignore */ + } + + // Notify waiters only when work transitions to "done". + if (activeTasks_.fetch_sub(1, std::memory_order_release) == 1) { + std::lock_guard lock(waitMutex_); + condition_.notify_all(); + } + } + } + + /// Attempt to get a task from local or stolen queues. + bool tryPopTask(size_t index, WorkItem& item) { + // Prefer local queue, then steal to keep workers busy. + if (tryPopLocal(index, item)) return true; + if (trySteal(index, item)) return true; + return false; + } + + /// Try to pop a task from the current worker queue. + bool tryPopLocal(size_t index, WorkItem& item) { + WorkerQueue& queue = *queues_[index]; + std::lock_guard lock(queue.mutex); + if (!Policy::template popLocal(queue.queue, item)) return false; + queuedTasks_.fetch_sub(1, std::memory_order_release); + return true; + } + + /// Try to steal a task from another worker queue. + bool trySteal(size_t index, WorkItem& item) { + const size_t workerCount = queues_.size(); + if (workerCount <= 1) return false; + // Steal from other workers if local queue is empty. + for (size_t offset = 1; offset < workerCount; ++offset) { + size_t target = (index + offset) % workerCount; + WorkerQueue& queue = *queues_[target]; + std::unique_lock lock(queue.mutex, std::try_to_lock); + if (!lock.owns_lock()) continue; + if (!Policy::template popSteal(queue.queue, item)) continue; + queuedTasks_.fetch_sub(1, std::memory_order_release); + return true; + } + return false; + } + + /// Return true if called on a scheduler worker thread. + bool isWorkerThread() const { return currentScheduler_ == this; } + + bool enqueueImpl(Metadata metadata, std::function work) { + if (stop_.load(std::memory_order_acquire)) return false; + WorkerQueue* targetQueue = nullptr; + if (isWorkerThread()) { + targetQueue = queues_[static_cast(workerIndex_)].get(); + } else { + const size_t target = + nextWorker_.fetch_add(1, std::memory_order_relaxed) % queues_.size(); + targetQueue = queues_[target].get(); + } + + { + std::lock_guard lock(targetQueue->mutex); + Policy::template push( + targetQueue->queue, WorkItem{std::move(metadata), std::move(work)}); + } + + queuedTasks_.fetch_add(1, std::memory_order_release); + activeTasks_.fetch_add(1, std::memory_order_release); + { + std::lock_guard lock(waitMutex_); + condition_.notify_one(); + } + return true; + } + + template >> + void scheduleOrRunInlineImpl(Metadata metadata, std::function job) { + if (stop_.load(std::memory_order_relaxed)) return; + if (!isWorkerThread()) { + enqueueImpl(std::move(metadata), std::move(job)); + return; + } + + activeTasks_.fetch_add(1, std::memory_order_release); + try { + job(); + } catch (...) { /* ignore */ + } + if (activeTasks_.fetch_sub(1, std::memory_order_release) == 1) { + std::lock_guard lock(waitMutex_); + condition_.notify_all(); + } + } + + public: + /** + * @brief Construct a scheduler with a fixed number of worker threads. + * + * @param numThreads Number of worker threads to create. If zero, a single + * thread is created. + */ + explicit Scheduler(size_t numThreads = std::thread::hardware_concurrency()) { + if (numThreads == 0) numThreads = 1; + queues_.reserve(numThreads); + for (size_t i = 0; i < numThreads; ++i) { + queues_.push_back(std::make_unique()); + } + for (size_t i = 0; i < numThreads; ++i) { + workers_.emplace_back(&Scheduler::worker_thread, this, i); + } + } + + /** + * @brief Wait for all tasks to finish, then stop worker threads. + * + * @note The destructor calls `waitForAllTasks` before stopping workers. + */ + ~Scheduler() { + waitForAllTasks(); + stop_.store(true, std::memory_order_release); + condition_.notify_all(); + for (std::thread& worker : workers_) { + if (worker.joinable()) worker.join(); + } + } + + /** + * @brief Enqueue a task for execution (no metadata). + * + * Only enabled when `Policy::Metadata` is `std::monostate`. + * + * @param job Callable returning a `Y`. + * @return `std::future` associated with the task. + */ + template >> + std::future schedule(std::function job) { + if (stop_.load(std::memory_order_acquire)) { + std::promise err_promise; + err_promise.set_exception(std::make_exception_ptr( + std::runtime_error("Scheduler is stopping or stopped."))); + return err_promise.get_future(); + } + + auto promise = std::make_shared>(); + std::future future = promise->get_future(); + + auto work = [promise, job = std::move(job)]() mutable { + try { + if constexpr (std::is_void_v) { + job(); + promise->set_value(); + } else { + promise->set_value(job()); + } + } catch (...) { + try { + promise->set_exception(std::current_exception()); + } catch (...) { /* ignore */ + } + } + }; + + if (!enqueueImpl(Metadata{}, std::move(work))) { + try { + promise->set_exception(std::make_exception_ptr( + std::runtime_error("Scheduler is stopping or stopped."))); + } catch (...) { /* ignore */ + } + } + return future; + } + + /** + * @brief Enqueue a task for execution with metadata. + * + * Enabled when `Policy::Metadata` is not `std::monostate`. + * + * @param metadata Policy-defined metadata for ordering (e.g., priority). + * @param job Callable returning a `Y`. + * @return `std::future` associated with the task. + */ + template >> + std::future schedule(Metadata metadata, std::function job) { + if (stop_.load(std::memory_order_acquire)) { + std::promise err_promise; + err_promise.set_exception(std::make_exception_ptr( + std::runtime_error("Scheduler is stopping or stopped."))); + return err_promise.get_future(); + } + + auto promise = std::make_shared>(); + std::future future = promise->get_future(); + + auto work = [promise, job = std::move(job)]() mutable { + try { + if constexpr (std::is_void_v) { + job(); + promise->set_value(); + } else { + promise->set_value(job()); + } + } catch (...) { + try { + promise->set_exception(std::current_exception()); + } catch (...) { /* ignore */ + } + } + }; + + if (!enqueueImpl(std::move(metadata), std::move(work))) { + try { + promise->set_exception(std::make_exception_ptr( + std::runtime_error("Scheduler is stopping or stopped."))); + } catch (...) { /* ignore */ + } + } + return future; + } + + /** + * @brief Schedule or run inline when called from a worker thread. + * + * Used to fuse continuations without re-entering the queues. + */ + template && std::is_same_v>> + void scheduleOrRunInline(std::function job) { + scheduleOrRunInlineImpl(Metadata{}, std::move(job)); + } + + /** + * @brief Schedule or run inline when called from a worker thread. + * + * Used to fuse continuations without re-entering the queues. + */ + template && !std::is_same_v>> + void scheduleOrRunInline(Metadata metadata, std::function job) { + scheduleOrRunInlineImpl(std::move(metadata), std::move(job)); + } + + /** + * @brief Enqueue a fire-and-forget task for execution. + * + * Enabled only for `TaskScheduler` (i.e., `Y = void` and no metadata). + */ + template && std::is_same_v>> + void enqueue(std::function job) { + enqueueImpl(Metadata{}, std::move(job)); + } + + /** + * @brief Enqueue a fire-and-forget task or run it inline on worker threads. + * + * Enabled only for `TaskScheduler` (i.e., `Y = void` and no metadata). + */ + template && std::is_same_v>> + void enqueueOrRunInline(std::function job) { + scheduleOrRunInlineImpl(Metadata{}, std::move(job)); + } + + /** + * @brief Block until all queued and active tasks complete. + * + * @note If the scheduler is stopping, this returns early. + */ + void waitForAllTasks() { + std::unique_lock lock(waitMutex_); + condition_.wait(lock, [this] { + return stop_.load(std::memory_order_acquire) || + (activeTasks_.load(std::memory_order_acquire) == 0 && + queuedTasks_.load(std::memory_order_acquire) == 0); + }); + } +}; + +} // namespace gtsam diff --git a/gtsam/base/SymmetricBlockMatrix.cpp b/gtsam/base/SymmetricBlockMatrix.cpp index 6e67418757..96149ab538 100644 --- a/gtsam/base/SymmetricBlockMatrix.cpp +++ b/gtsam/base/SymmetricBlockMatrix.cpp @@ -89,20 +89,30 @@ void SymmetricBlockMatrix::choleskyPartial(DenseIndex nFrontals) { } /* ************************************************************************* */ -VerticalBlockMatrix SymmetricBlockMatrix::split(DenseIndex nFrontals) { +void SymmetricBlockMatrix::split(DenseIndex nFrontals, + VerticalBlockMatrix* RSd) { gttic(VerticalBlockMatrix_split); + assert(RSd); // Construct a VerticalBlockMatrix that contains [R Sd] - const size_t n1 = offset(nFrontals); - VerticalBlockMatrix RSd = VerticalBlockMatrix::LikeActiveViewOf(*this, n1); + const DenseIndex n1 = offset(nFrontals); + assert(RSd->rows() == n1); + assert(RSd->cols() == cols()); + assert(RSd->nBlocks() == nBlocks()); // Copy into it. - RSd.full() = matrix_.topRows(n1); - RSd.full().triangularView().setZero(); + RSd->full() = matrix_.topRows(n1); + RSd->full().triangularView().setZero(); // Take lower-right block of Ab_ to get the remaining factor blockStart() = nFrontals; +} +VerticalBlockMatrix SymmetricBlockMatrix::split(DenseIndex nFrontals) { + // Construct a VerticalBlockMatrix that contains [R Sd] + const DenseIndex n1 = offset(nFrontals); + VerticalBlockMatrix RSd = VerticalBlockMatrix::LikeActiveViewOf(*this, n1); + split(nFrontals, &RSd); return RSd; } @@ -126,6 +136,30 @@ void SymmetricBlockMatrix::updateFromMappedBlocks( } } +/* ************************************************************************* */ +void SymmetricBlockMatrix::updateFromOuterProductBlocks( + const VerticalBlockMatrix& other, + const std::vector& blockIndices) { + assert(static_cast(blockIndices.size()) == other.nBlocks()); + const DenseIndex otherBlocks = other.nBlocks(); + for (DenseIndex i = 0; i < otherBlocks; ++i) { + const DenseIndex I = blockIndices[i]; + if (I < 0) continue; + assert(I < nBlocks()); + const auto Si = other(i); + Matrix diag = Si.transpose() * Si; + updateDiagonalBlock(I, diag); + for (DenseIndex j = i + 1; j < otherBlocks; ++j) { + const DenseIndex J = blockIndices[j]; + if (J < 0) continue; + assert(J < nBlocks()); + const auto Sj = other(j); + Matrix off = Si.transpose() * Sj; + updateOffDiagonalBlock(I, J, off); + } + } +} + /* ************************************************************************* */ } //\ namespace gtsam diff --git a/gtsam/base/SymmetricBlockMatrix.h b/gtsam/base/SymmetricBlockMatrix.h index c6a767012d..473c1fa9d7 100644 --- a/gtsam/base/SymmetricBlockMatrix.h +++ b/gtsam/base/SymmetricBlockMatrix.h @@ -25,6 +25,7 @@ #include #endif #include +#include #include #include #include @@ -234,6 +235,19 @@ namespace gtsam { } } + /// Add a vector to the diagonal entries of block I. + void addToDiagonalBlock(DenseIndex I, const Vector& deltaDiag) { + auto dest = block_(I, I); + assert(dest.rows() == deltaDiag.size()); + dest.diagonal().array() += deltaDiag.array(); + } + + /// Add lambda * I to the diagonal block I. + void addScaledIdentity(DenseIndex I, double lambda) { + auto dest = block_(I, I); + dest.diagonal().array() += lambda; + } + /// Update an off diagonal block. /// NOTE(emmett): This assumes noalias(). template @@ -251,6 +265,18 @@ namespace gtsam { void updateFromMappedBlocks(const SymmetricBlockMatrix& other, const std::vector& blockIndices); + /// Update this matrix with blockwise outer products from a vertical block matrix. + /// Adds S_i^T S_j into block (I,J), using a block mapping; entries with index -1 are skipped. + /// The range to use is controlled by other.firstBlock(). + void updateFromOuterProductBlocks(const VerticalBlockMatrix& other, + const std::vector& blockIndices); + + /// Add the upper-triangular part of another symmetric block matrix. + void addUpperTriangular(const SymmetricBlockMatrix& other) { + assert(nBlocks() == other.nBlocks()); + full().triangularView() += other.full(); + } + /// @} /// @name Accessing the full matrix. /// @{ @@ -281,6 +307,25 @@ namespace gtsam { matrix_.setZero(); } + /// Set the block columns between beginCol (inclusive) and endCol (exclusive) to zero. + void setZeroColumns(DenseIndex beginCol, DenseIndex endCol) { + assert(beginCol < endCol); + assert(beginCol >= 0); + assert(endCol >= 0); + assert(beginCol < nBlocks()); + assert(endCol <= nBlocks()); + static_assert(Matrix::IsRowMajor == 0, "setZeroColumns requires column-major storage."); + + const DenseIndex denseBeginCol = offset(beginCol); + const DenseIndex denseEndCol = offset(endCol); + + double *begin = matrix_.data() + denseBeginCol * matrix_.rows(); + double *end = matrix_.data() + denseEndCol * matrix_.rows(); + + // Using memset for maximal compiler optimization. + memset(begin, 0, (end - begin) * sizeof(*begin)); + } + /// Negate the entire active matrix. void negate(); @@ -317,6 +362,9 @@ namespace gtsam { */ VerticalBlockMatrix split(DenseIndex nFrontals); + /// I n-place version of split. + void split(DenseIndex nFrontals, VerticalBlockMatrix* RSd); + protected: /// Number of offsets in the full matrix. diff --git a/gtsam/base/TaskScheduler.h b/gtsam/base/TaskScheduler.h new file mode 100644 index 0000000000..ad26d38bc6 --- /dev/null +++ b/gtsam/base/TaskScheduler.h @@ -0,0 +1,82 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file TaskScheduler.h + * @brief Cooperative task scheduler. + * + * @details + * This header defines a small, thread-based scheduler that executes tasks in + * a cooperative manner without priority ordering. Tasks return a value of type + * `Y`, and callers can wait on results via `std::future`. + * + * This is implemented as a policy specialization of `gtsam::Scheduler`. + * + * @par Example + * @code + * gtsam::TaskScheduler scheduler(4); + * auto future = scheduler.schedule([] { return 42; }); + * int value = future.get(); + * @endcode + * + * @author Frank Dellaert + * @date May, 2025 + */ + +#pragma once + +#include + +namespace gtsam { + +namespace detail { +/// Queue policy for TaskScheduler: deque with local LIFO and stolen FIFO. +struct TaskSchedulerPolicy { + using Metadata = std::monostate; + + template + using Container = std::deque; + + template + static void push(Container& container, TaskPtr task) { + container.push_back(std::move(task)); + } + + template + static bool popLocal(Container& container, TaskPtr& out) { + if (container.empty()) return false; + out = std::move(container.back()); + container.pop_back(); + return true; + } + + template + static bool popSteal(Container& container, TaskPtr& out) { + if (container.empty()) return false; + out = std::move(container.front()); + container.pop_front(); + return true; + } +}; +} // namespace detail + +/** + * @brief Thread pool scheduler that executes tasks without priority ordering. + * + * @details + * - Tasks are executed in an efficient deque-based order (LIFO locally). + * - Per-thread queues reduce contention; workers steal from peers when idle. + * - External submissions are round-robin distributed across worker queues. + * - A condition variable parks workers when no work is available. + * + * @tparam Y Result type returned by tasks. Use `void` for no return value. + */ +template +using TaskScheduler = Scheduler; + +} // namespace gtsam diff --git a/gtsam/base/doc/MatrixLieGroup.md b/gtsam/base/doc/MatrixLieGroup.md index f2228fb0db..0788b1da5e 100644 --- a/gtsam/base/doc/MatrixLieGroup.md +++ b/gtsam/base/doc/MatrixLieGroup.md @@ -29,9 +29,12 @@ You must implement everything from the `LieGroup.md` guide, plus the following: By inheriting from `gtsam::MatrixLieGroup`, you get: -* **A default `AdjointMap()` implementation**: This generic version works by repeatedly calling your `Hat` and `Vee` methods. While it is correct, it is often slow. For performance-critical applications, you should still provide a faster, closed-form `AdjointMap()` implementation in your class, which will override the default. +* **Default group adjoint methods**: `AdjointMap()`, `Adjoint(xi)`, and `AdjointTranspose(x)` are provided generically, including Jacobians for the latter two. +* **Default Lie algebra methods**: `adjointMap(xi)`, `adjoint(xi, y)`, and `adjointTranspose(xi, y)` are provided generically, including Jacobians for the latter two. * **A `vec()` method**: This vectorizes the `N x N` matrix representation of your group element into an `(N*N) x 1` vector. +**Performance Note:** The generic implementation of `AdjointMap()` is correct but may be slower because it is derived via the `Hat`/`Vee` mappings. If a closed-form expression for `AdjointMap()` is available for your group, consider overriding the default implementation for better performance. + ### 4. Traits and Concept Checking Finally, the traits specialization in your header file must be updated to reflect that your class is now a `MatrixLieGroup`. diff --git a/gtsam/base/serializationTestHelpers.h b/gtsam/base/serializationTestHelpers.h index cc6dadafdb..02eaff9875 100644 --- a/gtsam/base/serializationTestHelpers.h +++ b/gtsam/base/serializationTestHelpers.h @@ -23,6 +23,7 @@ #if GTSAM_ENABLE_BOOST_SERIALIZATION +#include #include #include #include @@ -31,7 +32,6 @@ #include #include -#include // whether to print the serialized text to stdout @@ -47,10 +47,10 @@ T create() { } // Creates or empties a folder in the build folder and returns the relative path -inline boost::filesystem::path resetFilesystem( - boost::filesystem::path folder = "actual") { - boost::filesystem::remove_all(folder); - boost::filesystem::create_directory(folder); +inline std::filesystem::path resetFilesystem( + std::filesystem::path folder = "actual") { + std::filesystem::remove_all(folder); + std::filesystem::create_directory(folder); return folder; } @@ -65,7 +65,7 @@ void roundtrip(const T& input, T& output) { // Templated round-trip serialization using a file template void roundtripFile(const T& input, T& output) { - boost::filesystem::path path = resetFilesystem()/"graph.dat"; + std::filesystem::path path = resetFilesystem()/"graph.dat"; serializeToFile(input, path.string()); deserializeFromFile(path.string(), output); } @@ -106,7 +106,7 @@ void roundtripXML(const T& input, T& output) { // Templated round-trip serialization using XML File template void roundtripXMLFile(const T& input, T& output) { - boost::filesystem::path path = resetFilesystem()/"graph.xml"; + std::filesystem::path path = resetFilesystem()/"graph.xml"; serializeToXMLFile(input, path.string()); deserializeFromXMLFile(path.string(), output); } @@ -147,7 +147,7 @@ void roundtripBinary(const T& input, T& output) { // Templated round-trip serialization using Binary file template void roundtripBinaryFile(const T& input, T& output) { - boost::filesystem::path path = resetFilesystem()/"graph.bin"; + std::filesystem::path path = resetFilesystem()/"graph.bin"; serializeToBinaryFile(input, path.string()); deserializeFromBinaryFile(path.string(), output); } diff --git a/gtsam/base/tests/testForestTraversal.cpp b/gtsam/base/tests/testForestTraversal.cpp new file mode 100644 index 0000000000..93b3655d63 --- /dev/null +++ b/gtsam/base/tests/testForestTraversal.cpp @@ -0,0 +1,166 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file testForestTraversal.cpp + * @brief Unit tests for ForestTraversal helpers. + * @author Frank Dellaert + * @date May, 2025 + */ + +#include +#include + +#include +#include + +using namespace gtsam; + +/* ************************************************************************* */ +/// Common TreeNode definition (using shared_ptr). +struct TreeNode { + int value; + explicit TreeNode(int initialValue) : value(initialValue) {} +}; + +namespace { +/// Build a small tree for tests. +template +std::shared_ptr createSimpleTree() { + auto n1 = std::make_shared(1); + auto n2 = std::make_shared(2); + auto n3 = std::make_shared(3); + auto n4 = std::make_shared(4); + auto n5 = std::make_shared(5); + auto n6 = std::make_shared(6); + auto n7 = std::make_shared(7); + n1->children = {n2, n3, n4}; + n2->children = {n5, n6}; + n6->children = {n7}; + return n1; +} + +} // namespace + +/* ************************************************************************* */ +// Test 1: Bottom-up traversal +/* ************************************************************************* */ +/// TreeNode specialization for bottom-up test. +struct TestNode1 : public TreeNode { + using TreeNode::TreeNode; + std::vector> children; + size_t subtreeCount{0}; + + int problemSize() const { return 1; } + + /// Bottom-up payload for tests. + void bottomUpValue() { + // Each node stores 1 plus the sum of its children's results. + size_t sum = 1; + for (const auto& child : children) { + sum += child->subtreeCount; + } + subtreeCount = sum; + } +}; + +/// Forest wrapper for bottom-up traversal. +struct TestForest1 : public ForestTraversal { + using Node = TestNode1; + std::vector> roots_; + + const std::vector>& roots() const { + return roots_; + } + + /// Count nodes using a bottom-up traversal. + size_t countNodes() { + runBottomUp(&TestNode1::bottomUpValue); + size_t total = 0; + for (const auto& root : roots_) { + total += root->subtreeCount; + } + return total; + } +}; + +TEST(ForestTraversal, BottomUpCounting) { + std::shared_ptr root = createSimpleTree(); + TestForest1 forest; + forest.roots_.push_back(root); + size_t rootValue = forest.countNodes(); + + const size_t expectedTotalNodes = 7; + EXPECT_LONGS_EQUAL(expectedTotalNodes, rootValue); +} + +/* ************************************************************************* */ +// Test 2: Top-down traversal +/* ************************************************************************* */ +/// TreeNode specialization for top-down test. +struct TestNode2 : public TreeNode { + using TreeNode::TreeNode; + std::vector> children; + bool visited{false}; + size_t subtreeCount{0}; + + int problemSize() const { return 1; } + + /// Top-down payload for tests. + void topDownTouch() { visited = true; } + + /// Bottom-up payload for tests. + void bottomUpVisitedCount() { + // Each node stores 1 if visited plus the sum of its children. + size_t sum = visited ? 1 : 0; + for (const auto& child : children) { + sum += child->subtreeCount; + } + subtreeCount = sum; + } +}; + +/// Forest wrapper for top-down traversal. +struct TestForest2 : public ForestTraversal { + using Node = TestNode2; + std::vector> roots_; + + const std::vector>& roots() const { + return roots_; + } + + /// Touch all nodes using a top-down traversal. + void touchAll() { runTopDown(&TestNode2::topDownTouch); } + + /// Count visited nodes using a bottom-up traversal. + size_t countVisited() { + runBottomUp(&TestNode2::bottomUpVisitedCount); + size_t total = 0; + for (const auto& root : roots_) { + total += root->subtreeCount; + } + return total; + } +}; + +TEST(ForestTraversal, TopDownVisits) { + std::shared_ptr root = createSimpleTree(); + TestForest2 forest; + forest.roots_.push_back(root); + forest.touchAll(); + + const size_t expectedTotalNodes = 7; + EXPECT_LONGS_EQUAL(expectedTotalNodes, forest.countVisited()); +} + +/* ************************************************************************* */ +int main() { + TestResult tr; + return TestRegistry::runAllTests(tr); +} +/* ************************************************************************* */ diff --git a/gtsam/base/tests/testKruskal.cpp b/gtsam/base/tests/testKruskal.cpp index 000a777fa9..0b2c627d1c 100644 --- a/gtsam/base/tests/testKruskal.cpp +++ b/gtsam/base/tests/testKruskal.cpp @@ -51,7 +51,7 @@ gtsam::NonlinearFactorGraph makeTestNonlinearFactorGraph() { using namespace symbol_shorthand; NonlinearFactorGraph nfg; - const SharedDiagonal model = noiseModel::Diagonal::Sigmas(Vector2(0.5, 0.5)); + const SharedDiagonal model = noiseModel::Isotropic::Sigma(3, 0.5); nfg.emplace_shared>(X(1), X(2), Rot3(), model); nfg.emplace_shared>(X(1), X(3), Rot3(), model); nfg.emplace_shared>(X(1), X(4), Rot3(), model); diff --git a/gtsam/base/tests/testPriorityScheduler.cpp b/gtsam/base/tests/testPriorityScheduler.cpp new file mode 100644 index 0000000000..d6eb151fd0 --- /dev/null +++ b/gtsam/base/tests/testPriorityScheduler.cpp @@ -0,0 +1,85 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file testPriorityScheduler.cpp + * @brief Unit tests for PriorityScheduler scheduling behavior. + * @author Frank Dellaert + * @date May, 2025 + */ + +#include +#include + +#include +#include + +using namespace gtsam; + +/* ************************************************************************* */ +// Compose child return values inside a parent task +TEST(PriorityScheduler, ReturnValueComposition) { + // Use multiple workers so parent tasks can wait without stalling the pool. + PriorityScheduler scheduler(2); + + // Schedule leaves first with higher priority (lower numeric value). + auto left = scheduler.schedule(0, [] { return size_t{3}; }).share(); + auto right = scheduler.schedule(0, [] { return size_t{4}; }).share(); + + // Parent task waits on the child futures and combines their values. + auto parent = scheduler.schedule( + 10, [left, right]() mutable { return left.get() + right.get(); }); + + const size_t expectedSum = 7; + EXPECT_LONGS_EQUAL(expectedSum, parent.get()); +} + +/* ************************************************************************* */ +TEST(PriorityScheduler, VoidPriorityOrderingSingleWorker) { + PriorityScheduler scheduler(1); + + std::mutex mutex; + std::vector executionOrder; + + scheduler.schedule(5, [&] { + std::lock_guard lock(mutex); + executionOrder.push_back(5); + }); + scheduler.schedule(1, [&] { + std::lock_guard lock(mutex); + executionOrder.push_back(1); + }); + scheduler.schedule(3, [&] { + std::lock_guard lock(mutex); + executionOrder.push_back(3); + }); + + scheduler.waitForAllTasks(); + EXPECT_LONGS_EQUAL(3, executionOrder.size()); + // With a single worker, tasks are not preempted: the first scheduled task may + // start running before later (higher-priority) tasks are submitted. Also, + // since the third task is submitted last, the worker may run the first two + // tasks before the third is enqueued. + const bool strictPriority = + (executionOrder.at(0) == 1 && executionOrder.at(1) == 3 && + executionOrder.at(2) == 5); + const bool firstTaskRanImmediately = + (executionOrder.at(0) == 5 && executionOrder.at(1) == 1 && + executionOrder.at(2) == 3); + const bool thirdTaskEnqueuedLate = + (executionOrder.at(0) == 1 && executionOrder.at(1) == 5 && + executionOrder.at(2) == 3); + EXPECT(strictPriority || firstTaskRanImmediately || thirdTaskEnqueuedLate); +} + +/* ************************************************************************* */ +int main() { + TestResult tr; + return TestRegistry::runAllTests(tr); +} +/* ************************************************************************* */ diff --git a/gtsam/base/tests/testSymmetricBlockMatrix.cpp b/gtsam/base/tests/testSymmetricBlockMatrix.cpp index 4989ea1d84..ab04ffdb5d 100644 --- a/gtsam/base/tests/testSymmetricBlockMatrix.cpp +++ b/gtsam/base/tests/testSymmetricBlockMatrix.cpp @@ -17,6 +17,7 @@ #include #include +#include using namespace std; using namespace gtsam; @@ -78,6 +79,28 @@ TEST(SymmetricBlockMatrix, WriteBlocks) EXPECT(assert_equal(expected3, actual3)); } +/* ************************************************************************* */ +TEST(SymmetricBlockMatrix, setZeroColumns) { + // Expected: columns 3 and 4 are zero + Matrix expected = testBlockMatrix.selfadjointView().toDenseMatrix().eval(); + expected.col(3).setZero(); + expected.col(4).setZero(); + expected = expected.triangularView().toDenseMatrix().eval(); + + SymmetricBlockMatrix bm = testBlockMatrix; + + // Zero out the middle block (block 1, columns 3-4) + bm.setZeroColumns(1, 2); + + Matrix result = bm.selfadjointView() + .toDenseMatrix() + .triangularView() + .toDenseMatrix() + .eval(); + + EXPECT(assert_equal(expected, result)); +} + /* ************************************************************************* */ // Verify block range access. TEST(SymmetricBlockMatrix, Ranges) @@ -154,6 +177,32 @@ TEST(SymmetricBlockMatrix, expressions) EXPECT(assert_equal(Matrix(expected2.selfadjointView()), bm6.selfadjointView())); } +/* ************************************************************************* */ +// Verify diagonal-only update helpers. +TEST(SymmetricBlockMatrix, AddDiagonal) { + const std::vector dimensions{2, 1}; + SymmetricBlockMatrix bm(dimensions); + bm.setZero(); + + bm.addScaledIdentity(0, 2.0); + bm.addScaledIdentity(1, 3.0); + + Vector delta0(2); + delta0 << 1.0, 4.0; + bm.addToDiagonalBlock(0, delta0); + + Vector delta1(1); + delta1 << -1.0; + bm.addToDiagonalBlock(1, delta1); + + Matrix expected = Matrix::Zero(3, 3); + expected(0, 0) = 3.0; + expected(1, 1) = 6.0; + expected(2, 2) = 2.0; + + EXPECT(assert_equal(expected, Matrix(bm.selfadjointView()))); +} + /* ************************************************************************* */ // Update via block mapping. TEST(SymmetricBlockMatrix, UpdateFromMappedBlocks) @@ -187,6 +236,29 @@ TEST(SymmetricBlockMatrix, UpdateFromMappedBlocks) Matrix(doubled.selfadjointView()))); } +/* ************************************************************************* */ +// Update via blockwise outer products from a VerticalBlockMatrix view. +TEST(SymmetricBlockMatrix, UpdateFromOuterProductBlocks) +{ + const std::vector vbmDims{2, 1}; + VerticalBlockMatrix vbm(vbmDims, 4, true); + vbm.matrix() = (Matrix(4, 4) << + 1, 2, 3, 4, + 5, 6, 7, 8, + 9, 10, 11, 12, + 13, 14, 15, 16).finished(); + + const std::vector destDims{1}; + SymmetricBlockMatrix actual(destDims, true); + actual.setZero(); + const std::vector mapping{0, 1}; + const Matrix S = vbm.range(1, 3); + const Matrix expected = S.transpose() * S; + vbm.firstBlock() = 1; + actual.updateFromOuterProductBlocks(vbm, mapping); + EXPECT(assert_equal(expected, Matrix(actual.selfadjointView()))); +} + /* ************************************************************************* */ // In-place inversion path. TEST(SymmetricBlockMatrix, inverseInPlace) { diff --git a/gtsam/base/tests/testTaskScheduler.cpp b/gtsam/base/tests/testTaskScheduler.cpp new file mode 100644 index 0000000000..e4d354e299 --- /dev/null +++ b/gtsam/base/tests/testTaskScheduler.cpp @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file testTaskScheduler.cpp + * @brief Unit tests for TaskScheduler scheduling behavior. + * @author Frank Dellaert + * @date Jan, 2026 + */ + +#include +#include + +#include +#include +#include + +using namespace gtsam; + +/* ************************************************************************* */ +// Compose child return values inside a parent task +TEST(TaskScheduler, ReturnValueComposition) { + // Use multiple workers so parent tasks can wait without stalling the pool. + TaskScheduler scheduler(2); + + auto left = scheduler.schedule([] { return size_t{3}; }).share(); + auto right = scheduler.schedule([] { return size_t{4}; }).share(); + + auto parent = scheduler.schedule( + [left, right]() mutable { return left.get() + right.get(); }); + + const size_t expectedSum = 7; + EXPECT_LONGS_EQUAL(expectedSum, parent.get()); +} + +/* ************************************************************************* */ +TEST(TaskScheduler, EnqueueFireAndForget) { + TaskScheduler scheduler(2); + + std::atomic counter{0}; + const size_t taskCount = 256; + + for (size_t i = 0; i < taskCount; ++i) { + scheduler.enqueue([&counter] { counter.fetch_add(1); }); + } + + scheduler.waitForAllTasks(); + EXPECT_LONGS_EQUAL(taskCount, counter.load()); +} + +/* ************************************************************************* */ +TEST(TaskScheduler, EnqueueOrRunInlineOnWorker) { + TaskScheduler scheduler(1); + + std::atomic inlineCounter{0}; + auto future = scheduler.schedule([&] { + scheduler.enqueueOrRunInline([&] { inlineCounter.fetch_add(1); }); + }); + + future.get(); + scheduler.waitForAllTasks(); + EXPECT_LONGS_EQUAL(1, inlineCounter.load()); +} + +/* ************************************************************************* */ +int main() { + TestResult tr; + return TestRegistry::runAllTests(tr); +} +/* ************************************************************************* */ diff --git a/gtsam/base/treeTraversal-inst.h b/gtsam/base/treeTraversal-inst.h index 1c19e0cb19..fb42c78033 100644 --- a/gtsam/base/treeTraversal-inst.h +++ b/gtsam/base/treeTraversal-inst.h @@ -181,8 +181,11 @@ template(forest.roots(), rootData, visitorPre, @@ -203,7 +206,9 @@ void DepthFirstForestParallel(FOREST& forest, DATA& rootData, template void PostOrderForestParallel(FOREST& forest, VISITOR_POST& visitorPost, int problemSizeThreshold = 10) { -#ifdef GTSAM_USE_TBB +#if defined(GTSAM_USE_TBB) && !defined(GTSAM_TBB_BOUNDED_MEMORY_GROWTH_FLAG) + // Note: Parallel tree traversal (the default) causes a large increase in memory footprint. + typedef typename FOREST::Node Node; internal::CreateRootPostOrderTask(forest.roots(), visitorPost, problemSizeThreshold); diff --git a/gtsam/basis/FitBasis.h b/gtsam/basis/FitBasis.h index f5cb99bd7e..321a9c3a3d 100644 --- a/gtsam/basis/FitBasis.h +++ b/gtsam/basis/FitBasis.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -62,9 +63,10 @@ class FitBasis { const SharedNoiseModel& model, size_t N) { NonlinearFactorGraph graph; + const auto noiseModel = noiseModel::validOrDefault(0.0, model); for (const Sample sample : sequence) { - graph.emplace_shared>(0, sample.second, model, N, - sample.first); + graph.emplace_shared>( + 0, sample.second, noiseModel, N, sample.first); } return graph; } diff --git a/gtsam/basis/basis.md b/gtsam/basis/basis.md new file mode 100644 index 0000000000..7a22ad2b4f --- /dev/null +++ b/gtsam/basis/basis.md @@ -0,0 +1,66 @@ +# Basis + +The `basis` module provides tools for representing continuous functions as +linear combinations of basis functions or as values at interpolation points. +It is useful for smooth function approximation, trajectory modeling, and +building factors that constrain functions (or their derivatives) at specific +points. + +At a high level, you choose a basis (Fourier or Chebyshev), decide whether you +want a coefficient-based representation or a pseudo-spectral one (values at +Chebyshev points), and then use the provided factors or fitting utilities to +solve for parameters in GTSAM. + +## Getting Oriented + +- **Coefficient-based bases**: `Chebyshev1Basis`, `Chebyshev2Basis`, and + `FourierBasis` treat the parameters as coefficients on basis functions. +- **Pseudo-spectral basis**: `Chebyshev2` treats the parameters as values at + Chebyshev points and uses barycentric interpolation. +- **Factors**: A family of unary factors enforce function values or derivatives + at specific points, including vector- and manifold-valued variants. +- **Fitting**: `FitBasis` performs least-squares regression from samples. + +## Core Concepts + +- [Basis](doc/Basis.ipynb): CRTP base class providing evaluation and derivative + functors, Jacobians, and common helpers. + +## Polynomial Bases + +- [Chebyshev1Basis](doc/Chebyshev1Basis.ipynb): First-kind Chebyshev basis + $T_n(x)$ on $[-1,1]$ (coefficient-based). +- [Chebyshev2Basis](doc/Chebyshev2Basis.ipynb): Second-kind Chebyshev basis + $U_n(x)$ on $[-1,1]$ (coefficient-based). +- [FourierBasis](doc/FourierBasis.ipynb): Real Fourier series basis for + periodic functions. + +## Pseudo-Spectral Basis + +- [Chebyshev2](doc/Chebyshev2.ipynb): Chebyshev points, barycentric + interpolation, differentiation/integration matrices, and quadrature weights. + +## Factors for Basis Evaluation + +These factors connect basis parameters to measurements of values or derivatives. + +- [EvaluationFactor](doc/EvaluationFactor.ipynb): Scalar value at a point. +- [VectorEvaluationFactor](doc/VectorEvaluationFactor.ipynb): Vector value at a + point. +- [VectorComponentFactor](doc/VectorComponentFactor.ipynb): Single component of + a vector value. +- [ManifoldEvaluationFactor](doc/ManifoldEvaluationFactor.ipynb): Manifold-valued + measurement (e.g., `Rot3`, `Pose3`). + +## Factors for Derivative Constraints + +- [DerivativeFactor](doc/DerivativeFactor.ipynb): Scalar derivative at a point. +- [VectorDerivativeFactor](doc/VectorDerivativeFactor.ipynb): Vector derivative + at a point. +- [ComponentDerivativeFactor](doc/ComponentDerivativeFactor.ipynb): Single + component of a vector derivative. + +## Fitting from Data + +- [FitBasis](doc/FitBasis.ipynb): Build a least-squares problem from samples and + solve for basis parameters. diff --git a/gtsam/basis/doc/Basis.ipynb b/gtsam/basis/doc/Basis.ipynb new file mode 100644 index 0000000000..368906f157 --- /dev/null +++ b/gtsam/basis/doc/Basis.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Basis\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "The `Basis` class is a CRTP base class that defines common utilities for representing functions as linear combinations of basis functions. Derived classes provide `CalculateWeights` and `DerivativeWeights`, while `Basis` supplies functors and helpers for evaluation, vector-valued evaluation, and derivative computation with Jacobians with respect to parameters.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "6775be6c", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "id": "ce1fbbd5", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `WeightMatrix(N, X)` and `WeightMatrix(N, X, a, b)` build stacked weight matrices.\n", + "- `EvaluationFunctor` evaluates a scalar function at `x`.\n", + "- `VectorEvaluationFunctor` evaluates vector-valued functions from a parameter matrix.\n", + "- `VectorComponentFunctor` evaluates a single component of a vector-valued function.\n", + "- `ManifoldEvaluationFunctor` evaluates manifold-valued functions via local coordinates.\n", + "- `DerivativeFunctor`, `VectorDerivativeFunctor`, and `ComponentDerivativeFunctor` compute derivatives.\n", + "- `kroneckerProductIdentity` builds efficient block Jacobians for vector-valued cases.\n" + ] + }, + { + "cell_type": "markdown", + "id": "46f84e69", + "metadata": {}, + "source": [ + "## Derived Classes\n", + "\n", + "- `Chebyshev1Basis` (first-kind Chebyshev polynomials)\n", + "- `Chebyshev2Basis` (second-kind Chebyshev polynomials)\n", + "- `FourierBasis` (real Fourier series)\n", + "- `Chebyshev2` (pseudo-spectral Chebyshev points)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c8e177a8", + "metadata": {}, + "source": [ + "## Usage Example\n", + "\n", + "This example builds a weight matrix for a Chebyshev basis and evaluates\n", + "Fourier weights at a point.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "905a64a4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chebyshev2 WeightMatrix shape: (5, 5)\n", + "First row: [1. 0. 0. 0. 0.]\n", + "FourierBasis weights at x=0.3: [1. 0.955 0.296 0.825 0.565]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "N = 5\n", + "X = np.linspace(-1.0, 1.0, 5)\n", + "W = gtsam.Chebyshev2.WeightMatrix(N, X)\n", + "print(\"Chebyshev2 WeightMatrix shape:\", np.asarray(W).shape)\n", + "print(\"First row:\", np.asarray(W)[0])\n", + "\n", + "x = 0.3\n", + "weights = gtsam.FourierBasis.CalculateWeights(N, x)\n", + "print(\"FourierBasis weights at x=0.3:\", np.asarray(weights).ravel())\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [Basis.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/Basis.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/Chebyshev1Basis.ipynb b/gtsam/basis/doc/Chebyshev1Basis.ipynb new file mode 100644 index 0000000000..f117d10d2b --- /dev/null +++ b/gtsam/basis/doc/Chebyshev1Basis.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chebyshev1Basis\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`Chebyshev1Basis` provides the first-kind Chebyshev polynomial basis $T_n(x)$ on the interval $[-1, 1]$. Parameters are coefficients of the basis functions, making this a classic orthogonal polynomial expansion for smooth function approximation.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `CalculateWeights(N, x, a=-1, b=1)` returns the $1 \t\\times N$ basis weights.\n", + "- `DerivativeWeights(N, x, a=-1, b=1)` returns weights for the derivative.\n", + "- `WeightMatrix(N, X)` stacks weights for a vector of sample points.\n" + ] + }, + { + "cell_type": "markdown", + "id": "922e3685", + "metadata": {}, + "source": [ + "## Usage Example\n", + "\n", + "Evaluate first-kind Chebyshev weights at a point and build a weight\n", + "matrix for multiple sample points.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "30b37cbb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Weights at x=0.25: [ 1. 0.25 -0.875 -0.688 0.531 0.953]\n", + "WeightMatrix shape: (5, 6)\n", + "Row for x=0: [ 1. 0. -1. -0. 1. 0.]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "N = 6\n", + "x = 0.25\n", + "weights = gtsam.Chebyshev1Basis.CalculateWeights(N, x)\n", + "print(\"Weights at x=0.25:\", np.asarray(weights).ravel())\n", + "\n", + "X = np.linspace(-1.0, 1.0, 5)\n", + "W = gtsam.Chebyshev1Basis.WeightMatrix(N, X)\n", + "print(\"WeightMatrix shape:\", np.asarray(W).shape)\n", + "print(\"Row for x=0:\", np.asarray(W)[2])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [Chebyshev.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/Chebyshev.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/Chebyshev2.ipynb b/gtsam/basis/doc/Chebyshev2.ipynb new file mode 100644 index 0000000000..b5265faf23 --- /dev/null +++ b/gtsam/basis/doc/Chebyshev2.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chebyshev2\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`Chebyshev2` implements a pseudo-spectral parameterization on Chebyshev points of the second kind. Instead of coefficients, the parameters are function values at Chebyshev points, and evaluation uses barycentric interpolation. The class also provides differentiation and integration matrices for spectral calculus.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `Point(N, j[, a, b])` and `Points(N[, a, b])` return Chebyshev points.\n", + "- `CalculateWeights(N, x[, a, b])` returns barycentric interpolation weights.\n", + "- `DerivativeWeights(N, x[, a, b])` returns derivative weights.\n", + "- `DifferentiationMatrix(N[, a, b])` and `IntegrationMatrix(N[, a, b])` provide spectral operators.\n", + "- `IntegrationWeights(N[, a, b])` and `DoubleIntegrationWeights(N[, a, b])` provide quadrature weights.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usage Example\n", + "\n", + "This example inspects the Chebyshev points, interpolation weights, and\n", + "the differentiation matrix.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chebyshev points: [-1. -0.901 -0.623 -0.223 0.223 0.623 0.901 1. ]\n", + "Interpolation weights at x=0.2: [-0.009 0.02 -0.027 0.053 0.998 -0.053 0.032 -0.014]\n", + "D shape: (8, 8)\n", + "First row of D: [-16.5 20.196 -5.312 2.572 -1.636 1.232 -1.052 0.5 ]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "N = 8\n", + "points = gtsam.Chebyshev2.Points(N)\n", + "print(\"Chebyshev points:\", np.asarray(points).ravel())\n", + "\n", + "x = 0.2\n", + "weights = gtsam.Chebyshev2.CalculateWeights(N, x)\n", + "print(\"Interpolation weights at x=0.2:\", np.asarray(weights).ravel())\n", + "\n", + "D = gtsam.Chebyshev2.DifferentiationMatrix(N)\n", + "print(\"D shape:\", np.asarray(D).shape)\n", + "print(\"First row of D:\", np.asarray(D)[0])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [Chebyshev2.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/Chebyshev2.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/Chebyshev2Basis.ipynb b/gtsam/basis/doc/Chebyshev2Basis.ipynb new file mode 100644 index 0000000000..fc13e57a19 --- /dev/null +++ b/gtsam/basis/doc/Chebyshev2Basis.ipynb @@ -0,0 +1,134 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chebyshev2Basis\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`Chebyshev2Basis` provides the second-kind Chebyshev polynomial basis $U_n(x)$ on $[-1, 1]$. It is related to derivatives of first-kind polynomials and is useful when expressing functions directly in a basis of $U_n(x)$ polynomials.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `CalculateWeights(N, x, a=-1, b=1)` returns basis weights.\n", + "- `DerivativeWeights(N, x, a=-1, b=1)` returns derivative weights.\n", + "- `WeightMatrix(N, X)` stacks weights for a vector of sample points.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usage Example\n", + "\n", + "Evaluate second-kind Chebyshev weights and build a weight matrix for\n", + "multiple sample points.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Weights at x=-0.3: [ 1. -0.6 -0.64 0.984 0.05 -1.014]\n", + "WeightMatrix shape: (5, 6)\n", + "Row for x=0: [ 1. 0. -1. -0. 1. 0.]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "N = 6\n", + "x = -0.3\n", + "weights = gtsam.Chebyshev2Basis.CalculateWeights(N, x)\n", + "print(\"Weights at x=-0.3:\", np.asarray(weights).ravel())\n", + "\n", + "X = np.linspace(-1.0, 1.0, 5)\n", + "W = gtsam.Chebyshev2Basis.WeightMatrix(N, X)\n", + "print(\"WeightMatrix shape:\", np.asarray(W).shape)\n", + "print(\"Row for x=0:\", np.asarray(W)[2])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [Chebyshev.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/Chebyshev.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/ComponentDerivativeFactor.ipynb b/gtsam/basis/doc/ComponentDerivativeFactor.ipynb new file mode 100644 index 0000000000..537823b62b --- /dev/null +++ b/gtsam/basis/doc/ComponentDerivativeFactor.ipynb @@ -0,0 +1,134 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ComponentDerivativeFactor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`ComponentDerivativeFactor` is a unary factor that constrains the derivative of a single component of a vector-valued basis function at a given point.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `ComponentDerivativeFactor(key, z, model, P, N, i, x)` constrains component `i` of $\\mathbf{f}'(x)$.\n", + "- Optional interval parameters `a, b` scale the basis domain.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## C++ Usage Example\n", + "```cpp\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(1, 0.05);\n", + "size_t P = 3, N = 6, i = 2;\n", + "double x = 0.2;\n", + "double z = 0.0;\n", + "gtsam::ComponentDerivativeFactor factor(key, z, model, P, N, i, x);\n", + "```\n", + "\n", + "## Python Usage Example" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " keys = { c0 }\n", + "isotropic dim=1 sigma=0.05\n", + "FunctorizedFactor(c0)\n", + " measurement: 0\n", + " noise model sigmas: 0.05\n", + "\n" + ] + } + ], + "source": [ + "import gtsam\n", + "\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.05)\n", + "key = gtsam.symbol(\"c\", 0)\n", + "factor = gtsam.ComponentDerivativeFactorChebyshev2(key, 0.0, model, 3, 6, 2, 0.2)\n", + "print(factor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [BasisFactors.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/BasisFactors.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/DerivativeFactor.ipynb b/gtsam/basis/doc/DerivativeFactor.ipynb new file mode 100644 index 0000000000..35f2b4644a --- /dev/null +++ b/gtsam/basis/doc/DerivativeFactor.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DerivativeFactor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`DerivativeFactor` is a unary factor that enforces a scalar measurement of the derivative of a basis function at a given point.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `DerivativeFactor(key, z, model, N, x)` constrains $f'(x)$ to measurement `z`.\n", + "- Optional interval parameters `a, b` scale the basis domain.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## C++ Usage Example\n", + "\n", + "```cpp\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(1, 0.05);\n", + "size_t N = 8;\n", + "double x = -0.3;\n", + "double z = 0.0;\n", + "gtsam::DerivativeFactor factor(key, z, model, N, x);\n", + "\n", + "```\n", + "\n", + "## Python Usage Example" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " keys = { c0 }\n", + "isotropic dim=1 sigma=0.05\n", + "FunctorizedFactor(c0)\n", + " measurement: 0\n", + " noise model sigmas: 0.05\n", + "\n" + ] + } + ], + "source": [ + "import gtsam\n", + "\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.05)\n", + "key = gtsam.symbol('c', 0)\n", + "factor = gtsam.DerivativeFactorChebyshev2(key, 0.0, model, 8, -0.3)\n", + "print(factor)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [BasisFactors.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/BasisFactors.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/EvaluationFactor.ipynb b/gtsam/basis/doc/EvaluationFactor.ipynb new file mode 100644 index 0000000000..2e49b1e54c --- /dev/null +++ b/gtsam/basis/doc/EvaluationFactor.ipynb @@ -0,0 +1,135 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# EvaluationFactor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`EvaluationFactor` is a unary factor that enforces a scalar measurement of a basis function at a given point. It is commonly used with pseudo-spectral bases to constrain function values directly.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `EvaluationFactor(key, z, model, N, x)` constrains $f(x)$ to measurement `z`.\n", + "- Optional interval parameters `a, b` scale the basis domain.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## C++ Usage Example\n", + "\n", + "```cpp\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(1, 0.05);\n", + "size_t N = 8;\n", + "double x = 0.25;\n", + "double z = 1.2;\n", + "gtsam::EvaluationFactor factor(key, z, model, N, x);\n", + "```\n", + "\n", + "## Python Usage Example" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " keys = { c0 }\n", + "isotropic dim=1 sigma=0.05\n", + "FunctorizedFactor(c0)\n", + " measurement: 1.2\n", + " noise model sigmas: 0.05\n", + "\n" + ] + } + ], + "source": [ + "import gtsam\n", + "\n", + "key = gtsam.symbol('c', 0)\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.05)\n", + "factor = gtsam.EvaluationFactorChebyshev2(key, 1.2, model, 8, 0.25)\n", + "print(factor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [BasisFactors.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/BasisFactors.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/FitBasis.ipynb b/gtsam/basis/doc/FitBasis.ipynb new file mode 100644 index 0000000000..a6a14f7371 --- /dev/null +++ b/gtsam/basis/doc/FitBasis.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FitBasis\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`FitBasis` performs least-squares regression to fit a basis function to sample data. It builds a factor graph from samples and solves for basis parameters that best explain the data under a Gaussian noise model.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `FitBasis(sequence, model, N)` constructs and solves the least-squares problem.\n", + "- `parameters()` returns the fitted parameter vector.\n", + "- `NonlinearGraph(...)` and `LinearGraph(...)` expose intermediate graphs.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## C++ Usage Example\n", + "\n", + "```cpp\n", + "std::map samples = {{0.0, 1.0}, {0.5, 0.2}, {1.0, -0.1}};\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(1, 0.1);\n", + "size_t N = 5;\n", + "gtsam::FitBasis fit(samples, model, N);\n", + "gtsam::Vector params = fit.parameters();\n", + "\n", + "```\n", + "\n", + "## Python Example" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "FitBasisFourierBasis parameters: [ 2.242 -1.242 -1.986]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "sequence = {0.0: 1.0, 0.5: 0.2, 1.0: -0.1}\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.1)\n", + "fit = gtsam.FitBasisFourierBasis(sequence, model, 3)\n", + "params = fit.parameters()\n", + "print(\"FitBasisFourierBasis parameters:\", params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [FitBasis.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/FitBasis.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/FourierBasis.ipynb b/gtsam/basis/doc/FourierBasis.ipynb new file mode 100644 index 0000000000..e4acd181a2 --- /dev/null +++ b/gtsam/basis/doc/FourierBasis.ipynb @@ -0,0 +1,135 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FourierBasis\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`FourierBasis` provides a real Fourier series basis for periodic functions. The basis is ordered as $[1, \\cos(x), \\sin(x), \\cos(2x), \\sin(2x), \\ldots]$, making it convenient for truncated Fourier expansions and their derivatives.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `CalculateWeights(N, x)` returns the real Fourier basis weights.\n", + "- `DifferentiationMatrix(N)` returns the linear operator for derivatives.\n", + "- `DerivativeWeights(N, x)` returns weights that evaluate the derivative at `x`.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usage Example\n", + "\n", + "Evaluate a real Fourier basis, its derivative weights, and a slice of\n", + "the differentiation matrix.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Weights: [ 1. 0.362 0.932 -0.737 0.675 -0.897 -0.443]\n", + "Derivative weights: [ 0. -0.932 0.362 -1.351 -1.475 1.328 -2.69 ]\n", + "D[1:3, 1:3]: [[ 0. 1.]\n", + " [-1. 0.]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "N = 7\n", + "x = 1.2\n", + "weights = gtsam.FourierBasis.CalculateWeights(N, x)\n", + "dweights = gtsam.FourierBasis.DerivativeWeights(N, x)\n", + "D = gtsam.FourierBasis.DifferentiationMatrix(N)\n", + "\n", + "print(\"Weights:\", np.asarray(weights).ravel())\n", + "print(\"Derivative weights:\", np.asarray(dweights).ravel())\n", + "print(\"D[1:3, 1:3]:\", np.asarray(D)[1:3, 1:3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [Fourier.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/Fourier.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/ManifoldEvaluationFactor.ipynb b/gtsam/basis/doc/ManifoldEvaluationFactor.ipynb new file mode 100644 index 0000000000..e4762a7179 --- /dev/null +++ b/gtsam/basis/doc/ManifoldEvaluationFactor.ipynb @@ -0,0 +1,181 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ManifoldEvaluationFactor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`ManifoldEvaluationFactor` is a unary factor for manifold-valued measurements such as `Rot2`, `Rot3`, `Pose2`, or `Pose3`. It evaluates a vector-valued basis and compares the result in local coordinates on the manifold.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `ManifoldEvaluationFactor(key, z, model, N, x)` constrains the manifold value at `x`.\n", + "- Optional interval parameters `a, b` scale the basis domain.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## C++ example\n", + "\n", + "```cpp\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(3, 0.05);\n", + "size_t N = 6;\n", + "double x = 0.1;\n", + "gtsam::Rot3 z = gtsam::Rot3::RzRyRx(0.1, 0.2, 0.3);\n", + "gtsam::ManifoldEvaluationFactor factor(key, z, model, N, x);\n", + "```\n", + "\n", + "## Python Example" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available ManifoldEvaluationFactor wrappers:\n", + " ManifoldEvaluationFactorChebyshev1BasisPose2\n", + " ManifoldEvaluationFactorChebyshev1BasisPose3\n", + " ManifoldEvaluationFactorChebyshev1BasisRot2\n", + " ManifoldEvaluationFactorChebyshev1BasisRot3\n", + " ManifoldEvaluationFactorChebyshev2BasisPose2\n", + " ManifoldEvaluationFactorChebyshev2BasisPose3\n", + " ManifoldEvaluationFactorChebyshev2BasisRot2\n", + " ManifoldEvaluationFactorChebyshev2BasisRot3\n", + " ManifoldEvaluationFactorChebyshev2Pose2\n", + " ManifoldEvaluationFactorChebyshev2Pose3\n", + " ManifoldEvaluationFactorChebyshev2Rot2\n", + " ManifoldEvaluationFactorChebyshev2Rot3\n", + " ManifoldEvaluationFactorFourierBasisPose2\n", + " ManifoldEvaluationFactorFourierBasisPose3\n", + " ManifoldEvaluationFactorFourierBasisRot2\n", + " ManifoldEvaluationFactorFourierBasisRot3\n", + "Created ManifoldEvaluationFactorChebyshev1BasisRot2 with dim 1\n", + "Created ManifoldEvaluationFactorChebyshev1BasisPose2 with dim 3\n", + "Created ManifoldEvaluationFactorChebyshev1BasisRot3 with dim 3\n", + "Created ManifoldEvaluationFactorChebyshev1BasisPose3 with dim 6\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "names = [n for n in dir(gtsam) if n.startswith(\"ManifoldEvaluationFactor\")]\n", + "print(\"Available ManifoldEvaluationFactor wrappers:\")\n", + "for name in names:\n", + " print(\" \", name)\n", + "\n", + "selected = None\n", + "kind = None\n", + "for preferred in [\"Rot2\", \"Pose2\", \"Rot3\", \"Pose3\"]:\n", + " for name in names:\n", + " if preferred in name:\n", + " selected = name\n", + " kind = preferred\n", + " break\n", + " if selected is None:\n", + " print(\"No ManifoldEvaluationFactor wrapper found; skipping execution.\")\n", + " else:\n", + " cls = getattr(gtsam, selected)\n", + " if kind == \"Rot2\":\n", + " z = gtsam.Rot2(0.3)\n", + " dim = 1\n", + " elif kind == \"Rot3\":\n", + " z = gtsam.Rot3.RzRyRx(0.1, 0.2, 0.3)\n", + " dim = 3\n", + " elif kind == \"Pose2\":\n", + " z = gtsam.Pose2(1.0, 0.0, 0.1)\n", + " dim = 3\n", + " else:\n", + " z = gtsam.Pose3(gtsam.Rot3.RzRyRx(0.1, 0.2, 0.3), np.array([1.0, 0.0, 0.0]))\n", + " dim = 6\n", + "\n", + " model = gtsam.noiseModel.Isotropic.Sigma(dim, 0.1)\n", + " key = gtsam.symbol('x', 0)\n", + " factor = cls(key, z, model, 6, 0.1)\n", + " print(f\"Created {selected} with dim {factor.dim()}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [BasisFactors.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/BasisFactors.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/VectorComponentFactor.ipynb b/gtsam/basis/doc/VectorComponentFactor.ipynb new file mode 100644 index 0000000000..91d678d64a --- /dev/null +++ b/gtsam/basis/doc/VectorComponentFactor.ipynb @@ -0,0 +1,153 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# VectorComponentFactor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`VectorComponentFactor` is a unary factor that constrains a single component of a vector-valued basis function at a given point. It is useful when only one component is observed.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `VectorComponentFactor(key, z, model, P, N, i, x)` constrains component `i`.\n", + "- Optional interval parameters `a, b` scale the basis domain.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## C++ Usage Example\n", + "\n", + "```cpp\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(1, 0.1);\n", + "size_t P = 3, N = 6, i = 1;\n", + "double x = 0.5;\n", + "double z = -0.2;\n", + "gtsam::VectorComponentFactor factor(key, z, model, P, N, i, x);\n", + "```\n", + "\n", + "## Python Example" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VectorComponentFactor wrappers:\n", + " VectorComponentFactorChebyshev1Basis\n", + " VectorComponentFactorChebyshev2\n", + " VectorComponentFactorChebyshev2Basis\n", + " VectorComponentFactorFourierBasis\n", + "Created VectorComponentFactorChebyshev1Basis with dim 1\n", + "Created VectorComponentFactorChebyshev2 with dim 1\n", + "Created VectorComponentFactorChebyshev2Basis with dim 1\n", + "Created VectorComponentFactorFourierBasis with dim 1\n" + ] + } + ], + "source": [ + "import gtsam\n", + "\n", + "candidates = [n for n in dir(gtsam) if n.startswith(\"VectorComponentFactor\")]\n", + "print(\"VectorComponentFactor wrappers:\")\n", + "for name in candidates:\n", + " print(\" \", name)\n", + "\n", + "cls = None\n", + "selected = None\n", + "for name in candidates:\n", + " if hasattr(gtsam, name):\n", + " cls = getattr(gtsam, name)\n", + " selected = name\n", + "\n", + " if cls is None:\n", + " print(\"No VectorComponentFactor wrapper found; skipping execution.\")\n", + " else:\n", + " model = gtsam.noiseModel.Isotropic.Sigma(1, 0.1)\n", + " key = gtsam.symbol('c', 0)\n", + " factor = cls(key, -0.2, model, 3, 6, 1, 0.5)\n", + " print(f\"Created {selected} with dim {factor.dim()}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [BasisFactors.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/BasisFactors.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/VectorDerivativeFactor.ipynb b/gtsam/basis/doc/VectorDerivativeFactor.ipynb new file mode 100644 index 0000000000..286031cbf8 --- /dev/null +++ b/gtsam/basis/doc/VectorDerivativeFactor.ipynb @@ -0,0 +1,151 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# VectorDerivativeFactor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`VectorDerivativeFactor` is a unary factor that enforces a vector measurement of the derivative of a vector-valued basis function at a given point.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `VectorDerivativeFactor(key, z, model, M, N, x)` constrains $\\mathbf{f}'(x)$.\n", + "- Optional interval parameters `a, b` scale the basis domain.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## C++ Usage Example\n", + "\n", + "```cpp\n", + "gtsam::Vector z = (gtsam::Vector(2) << 0.1, -0.1).finished();\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(2, 0.05);\n", + "size_t M = 2, N = 6;\n", + "double x = 0.0;\n", + "gtsam::VectorDerivativeFactor factor(key, z, model, M, N, x);\n", + "```\n", + "\n", + "## Python Example" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VectorDerivativeFactor wrappers:\n", + " VectorDerivativeFactorChebyshev1Basis\n", + " VectorDerivativeFactorChebyshev2\n", + " VectorDerivativeFactorChebyshev2Basis\n", + " VectorDerivativeFactorFourierBasis\n", + "factor:\n", + " keys = { c0 }\n", + "isotropic dim=2 sigma=0.05\n", + "FunctorizedFactor(c0)\n", + " measurement: [\n", + "\t0.1;\n", + "\t-0.1\n", + "]\n", + " noise model sigmas: 0.05 0.05\n", + "\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "candidates = [n for n in dir(gtsam) if n.startswith(\"VectorDerivativeFactor\")]\n", + "print(\"VectorDerivativeFactor wrappers:\")\n", + "for name in candidates:\n", + " print(\" \", name)\n", + "\n", + "z = np.array([0.1, -0.1])\n", + "model = gtsam.noiseModel.Isotropic.Sigma(2, 0.05)\n", + "key = gtsam.symbol('c', 0)\n", + "factor = gtsam.VectorDerivativeFactorChebyshev2(key, z, model, 2, 6, 0.0)\n", + "print(\"factor:\\n\", factor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [BasisFactors.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/BasisFactors.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/basis/doc/VectorEvaluationFactor.ipynb b/gtsam/basis/doc/VectorEvaluationFactor.ipynb new file mode 100644 index 0000000000..8d14268e0a --- /dev/null +++ b/gtsam/basis/doc/VectorEvaluationFactor.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# VectorEvaluationFactor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "`VectorEvaluationFactor` is a unary factor for vector-valued measurements evaluated from a basis parameter matrix. It enforces $\\mathbf{f}(x)$ to match a measurement vector at a given point.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Functionality / API\n", + "\n", + "- `VectorEvaluationFactor(key, z, model, M, N, x)` constrains the full vector.\n", + "- Optional interval parameters `a, b` scale the basis domain.\n" + ] + }, + { + "cell_type": "markdown", + "id": "c2c42d05", + "metadata": {}, + "source": [ + "## C++ Usage Example\n", + "\n", + "```cpp\n", + "gtsam::Vector z = (gtsam::Vector(3) << 1.0, 0.0, -0.5).finished();\n", + "auto model = gtsam::noiseModel::Isotropic::Sigma(3, 0.1);\n", + "size_t M = 3, N = 6;\n", + "double x = 0.0;\n", + "gtsam::VectorEvaluationFactor factor(key, z, model, M, N, x);\n", + "```\n", + "\n", + "## Python Example" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c8e2e7c5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VectorEvaluationFactor wrappers:\n", + " VectorEvaluationFactorChebyshev1Basis\n", + " VectorEvaluationFactorChebyshev2\n", + " VectorEvaluationFactorChebyshev2Basis\n", + " VectorEvaluationFactorFourierBasis\n", + "Created VectorEvaluationFactorChebyshev2 with dim 3\n", + "Created VectorEvaluationFactorChebyshev2Basis with dim 3\n", + "Created VectorEvaluationFactorChebyshev1Basis with dim 3\n", + "Created VectorEvaluationFactorFourierBasis with dim 3\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import gtsam\n", + "\n", + "candidates = [n for n in dir(gtsam) if n.startswith(\"VectorEvaluationFactor\")]\n", + "print(\"VectorEvaluationFactor wrappers:\")\n", + "for name in candidates:\n", + " print(\" \", name)\n", + "\n", + "cls = None\n", + "selected = None\n", + "for name in [\n", + " \"VectorEvaluationFactorChebyshev2\",\n", + " \"VectorEvaluationFactorChebyshev2Basis\",\n", + " \"VectorEvaluationFactorChebyshev1Basis\",\n", + " \"VectorEvaluationFactorFourierBasis\",\n", + "]:\n", + " if hasattr(gtsam, name):\n", + " cls = getattr(gtsam, name)\n", + " selected = name\n", + "\n", + " if cls is None:\n", + " print(\"No VectorEvaluationFactor wrapper found; skipping execution.\")\n", + " else:\n", + " z = np.array([1.0, 0.0, -0.5])\n", + " model = gtsam.noiseModel.Isotropic.Sigma(3, 0.1)\n", + " key = gtsam.symbol('c', 0)\n", + " factor = cls(key, z, model, 3, 6, 0.0)\n", + " print(f\"Created {selected} with dim {factor.dim()}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [BasisFactors.h](https://github.com/borglab/gtsam/blob/develop/gtsam/basis/BasisFactors.h)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/config.h.in b/gtsam/config.h.in index 9ba562cc4a..06033aaf42 100644 --- a/gtsam/config.h.in +++ b/gtsam/config.h.in @@ -56,6 +56,9 @@ // Whether we are using a TBB version higher than 2020 #cmakedefine TBB_GREATER_EQUAL_2020 +// Whether to use bounded memory growth for TBB parallel tree traversal +#cmakedefine GTSAM_TBB_BOUNDED_MEMORY_GROWTH_FLAG + // Whether we are using system-Eigen or our own patched version #cmakedefine GTSAM_USE_SYSTEM_EIGEN diff --git a/gtsam/constrained/AugmentedLagrangianOptimizer.cpp b/gtsam/constrained/AugmentedLagrangianOptimizer.cpp index b1ad12c285..9200a8b56e 100644 --- a/gtsam/constrained/AugmentedLagrangianOptimizer.cpp +++ b/gtsam/constrained/AugmentedLagrangianOptimizer.cpp @@ -29,7 +29,7 @@ namespace gtsam { * This factor is used in augmented Lagrangian optimizer to create biased cost * functions. * Note that the noise model is stored twice (both in original factor and the - * noisemodel of substitute factor. The noisemodel in the original factor will + * noise model of substitute factor. The noise model in the original factor will * be ignored. */ class GTSAM_EXPORT BiasedFactor : public NoiseModelFactor { protected: @@ -117,7 +117,7 @@ AugmentedLagrangianOptimizer::iterate(const State& state, const double muEq, auto optimizer = createUnconstrainedOptimizer(augmentedLagrangian, state.values); newState.setValues(optimizer->optimize(), problem_); - newState.unconstrainedIterationss = optimizer->iterations(); + newState.unconstrainedIterations = optimizer->iterations(); // Update penalty parameters for next iteration. double next_muEq, next_muIneq; @@ -159,7 +159,8 @@ NonlinearFactorGraph AugmentedLagrangianOptimizer::augmentedLagrangianFunction( const double& muEq = state.muEq; for (size_t i = 0; i < eqConstraints.size(); i++) { const auto& constraint = eqConstraints.at(i); - Vector bias = state.lambdaEq[i] / muEq * constraint->sigmas(); + Vector bias = state.lambdaEq[i] / muEq; + bias = bias.cwiseProduct(constraint->sigmas()); auto penalty_l2 = constraint->penaltyFactor(muEq); graph.emplace_shared(penalty_l2, bias); } @@ -186,7 +187,7 @@ NonlinearFactorGraph AugmentedLagrangianOptimizer::augmentedLagrangianFunction( /* ************************************************************************* */ void AugmentedLagrangianOptimizer::updateLagrangeMultiplier( const State& previousState, State* state) const { - // Perform dual ascent on Lagrange multipliers for e-constriants. + // Perform dual ascent on Lagrange multipliers for e-constraints. const NonlinearEqualityConstraints& eqConstraints = problem_.eConstraints(); state->lambdaEq.resize(eqConstraints.size()); for (size_t i = 0; i < eqConstraints.size(); i++) { @@ -198,7 +199,7 @@ void AugmentedLagrangianOptimizer::updateLagrangeMultiplier( state->lambdaEq[i] = previousState.lambdaEq[i] + step_size * violation; } - // Perform dual ascent on Lagrange multipliers for i-constriants. + // Perform dual ascent on Lagrange multipliers for i-constraints. const NonlinearInequalityConstraints& ineqConstraints = problem_.iConstraints(); state->lambdaIneq.resize(ineqConstraints.size()); @@ -239,7 +240,7 @@ AugmentedLagrangianOptimizer::createUnconstrainedOptimizer( const NonlinearFactorGraph& graph, const Values& values) const { // TODO(yetong): make compatible with all NonlinearOptimizers. return std::make_shared(graph, values, - p_->lm_params); + p_->lmParams); } /* ************************************************************************* */ @@ -283,7 +284,7 @@ void AugmentedLagrangianOptimizer::logIteration(const State& state) const { cout << "|" << setw(10) << setprecision(4) << state.cost; cout << "|" << setw(10) << setprecision(4) << state.eqConstraintViolation; cout << "|" << setw(10) << setprecision(4) << state.ineqConstraintViolation; - cout << "|" << setw(10) << state.unconstrainedIterationss; + cout << "|" << setw(10) << state.unconstrainedIterations; cout << "|" << setw(10) << state.time; cout << "|" << endl; } diff --git a/gtsam/constrained/ConstrainedOptProblem.h b/gtsam/constrained/ConstrainedOptProblem.h index 1de06f3e23..b18d879eb5 100644 --- a/gtsam/constrained/ConstrainedOptProblem.h +++ b/gtsam/constrained/ConstrainedOptProblem.h @@ -28,8 +28,8 @@ namespace gtsam { * s.t. h(X) = 0 * g(X) <= 0 * where X represents the variables, 0.5||f(X)||^2 represents the quadratic cost - * functions, h(X)=0 represents the nonlinear equality constraints, g(x)<=0 represents the - * inequality constraints. + * functions, h(X)=0 represents the nonlinear equality constraints, g(x)<=0 + * represents the inequality constraints. */ class GTSAM_EXPORT ConstrainedOptProblem { public: @@ -37,9 +37,10 @@ class GTSAM_EXPORT ConstrainedOptProblem { typedef std::shared_ptr shared_ptr; protected: - NonlinearFactorGraph costs_; // cost function, ||f(X)||^2 - NonlinearEqualityConstraints eqConstraints_; // equality constraints, h(X)=0 - NonlinearInequalityConstraints ineqConstraints_; // inequality constraints, g(X)<=0 + NonlinearFactorGraph costs_; // cost function, ||f(X)||^2 + NonlinearEqualityConstraints eqConstraints_; // equality constraints, h(X)=0 + NonlinearInequalityConstraints + ineqConstraints_; // inequality constraints, g(X)<=0 public: /** Default constructor. */ @@ -57,16 +58,22 @@ class GTSAM_EXPORT ConstrainedOptProblem { static ConstrainedOptProblem EqConstrainedOptProblem( const NonlinearFactorGraph& costs, const NonlinearEqualityConstraints& eqConstraints) { - return ConstrainedOptProblem(costs, eqConstraints, NonlinearInequalityConstraints()); + return ConstrainedOptProblem(costs, eqConstraints, + NonlinearInequalityConstraints()); } /** Member variable access functions. */ const NonlinearFactorGraph& costs() const { return costs_; } - const NonlinearEqualityConstraints& eConstraints() const { return eqConstraints_; } - const NonlinearInequalityConstraints& iConstraints() const { return ineqConstraints_; } + const NonlinearEqualityConstraints& eConstraints() const { + return eqConstraints_; + } + const NonlinearInequalityConstraints& iConstraints() const { + return ineqConstraints_; + } /** Evaluate cost and constraint violations. - * Return a tuple representing (cost, e-constraint violation, i-constraint violation). + * Return a tuple representing (cost, e-constraint violation, i-constraint + * violation). */ std::tuple evaluate(const Values& values) const; diff --git a/gtsam/constrained/NonlinearConstraint.h b/gtsam/constrained/NonlinearConstraint.h index c34052153f..a31b43aeeb 100644 --- a/gtsam/constrained/NonlinearConstraint.h +++ b/gtsam/constrained/NonlinearConstraint.h @@ -18,8 +18,8 @@ #pragma once -#include #include +#include #include #if GTSAM_ENABLE_BOOST_SERIALIZATION #include @@ -29,8 +29,8 @@ namespace gtsam { /** * Base class for nonlinear constraint. - * The constraint is represented as a NoiseModelFactor with Constrained noise model. - * whitenedError() returns The constraint violation vector. + * The constraint is represented as a NoiseModelFactor with Constrained noise + * model. whitenedError() returns The constraint violation vector. * unwhitenedError() returns the sigma-scaled constraint violation vector. */ class GTSAM_EXPORT NonlinearConstraint : public NoiseModelFactor { @@ -45,8 +45,10 @@ class GTSAM_EXPORT NonlinearConstraint : public NoiseModelFactor { /** Destructor. */ virtual ~NonlinearConstraint() {} - /** Create a cost factor representing the L2 penalty function with scaling coefficient mu. */ - virtual NoiseModelFactor::shared_ptr penaltyFactor(const double mu = 1.0) const { + /** Create a cost factor representing the L2 penalty function with scaling + * coefficient mu. */ + virtual NoiseModelFactor::shared_ptr penaltyFactor( + const double mu = 1.0) const { return cloneWithNewNoiseModel(penaltyNoise(mu)); } @@ -71,7 +73,7 @@ class GTSAM_EXPORT NonlinearConstraint : public NoiseModelFactor { return noiseModel::Diagonal::Sigmas(noiseModel()->sigmas() / sqrt(mu)); } - /** Default constrained noisemodel used for construction of constraint. */ + /** Default constrained noise model used for construction of constraint. */ static SharedNoiseModel constrainedNoise(const Vector& sigmas) { return noiseModel::Constrained::MixedSigmas(1.0, sigmas); } @@ -82,8 +84,8 @@ class GTSAM_EXPORT NonlinearConstraint : public NoiseModelFactor { friend class boost::serialization::access; template void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("NonlinearConstraint", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "NonlinearConstraint", boost::serialization::base_object(*this)); } #endif }; diff --git a/gtsam/constrained/NonlinearEqualityConstraint-inl.h b/gtsam/constrained/NonlinearEqualityConstraint-inl.h index 14bc42939f..1f5bf71ec6 100644 --- a/gtsam/constrained/NonlinearEqualityConstraint-inl.h +++ b/gtsam/constrained/NonlinearEqualityConstraint-inl.h @@ -21,20 +21,19 @@ namespace gtsam { -/* ********************************************************************************************* */ +/* ************************************************************************* */ template -ExpressionEqualityConstraint::ExpressionEqualityConstraint(const Expression& expression, - const T& rhs, - const Vector& sigmas) +ExpressionEqualityConstraint::ExpressionEqualityConstraint( + const Expression& expression, const T& rhs, const Vector& sigmas) : Base(constrainedNoise(sigmas), expression.keysAndDims().first), expression_(expression), rhs_(rhs), dims_(expression.keysAndDims().second) {} -/* ********************************************************************************************* */ +/* ************************************************************************* */ template -Vector ExpressionEqualityConstraint::unwhitenedError(const Values& x, - OptionalMatrixVecType H) const { +Vector ExpressionEqualityConstraint::unwhitenedError( + const Values& x, OptionalMatrixVecType H) const { // Copy-paste from ExpressionFactor. if (H) { const T value = expression_.valueAndDerivatives(x, keys_, dims_, *H); @@ -45,10 +44,12 @@ Vector ExpressionEqualityConstraint::unwhitenedError(const Values& x, } } -/* ********************************************************************************************* */ +/* ************************************************************************* */ template -NoiseModelFactor::shared_ptr ExpressionEqualityConstraint::penaltyFactor(const double mu) const { - return std::make_shared>(penaltyNoise(mu), rhs_, expression_); +NoiseModelFactor::shared_ptr ExpressionEqualityConstraint::penaltyFactor( + const double mu) const { + return std::make_shared>(penaltyNoise(mu), rhs_, + expression_); } } // namespace gtsam diff --git a/gtsam/constrained/NonlinearEqualityConstraint.cpp b/gtsam/constrained/NonlinearEqualityConstraint.cpp index effc8774c1..af56bea66d 100644 --- a/gtsam/constrained/NonlinearEqualityConstraint.cpp +++ b/gtsam/constrained/NonlinearEqualityConstraint.cpp @@ -20,21 +20,25 @@ namespace gtsam { -/* ********************************************************************************************* */ -ZeroCostConstraint::ZeroCostConstraint(const NoiseModelFactor::shared_ptr& factor) - : Base(constrainedNoise(factor->noiseModel()->sigmas()), factor->keys()), factor_(factor) {} +/* ************************************************************************* */ +ZeroCostConstraint::ZeroCostConstraint( + const NoiseModelFactor::shared_ptr& factor) + : Base(constrainedNoise(factor->noiseModel()->sigmas()), factor->keys()), + factor_(factor) {} -/* ********************************************************************************************* */ -Vector ZeroCostConstraint::unwhitenedError(const Values& x, OptionalMatrixVecType H) const { +/* ************************************************************************* */ +Vector ZeroCostConstraint::unwhitenedError(const Values& x, + OptionalMatrixVecType H) const { return factor_->unwhitenedError(x, H); } -/* ********************************************************************************************* */ -NoiseModelFactor::shared_ptr ZeroCostConstraint::penaltyFactor(const double mu) const { +/* ************************************************************************* */ +NoiseModelFactor::shared_ptr ZeroCostConstraint::penaltyFactor( + const double mu) const { return factor_->cloneWithNewNoiseModel(penaltyNoise(mu)); } -/* ********************************************************************************************* */ +/* ************************************************************************* */ NonlinearEqualityConstraints NonlinearEqualityConstraints::FromCostGraph( const NonlinearFactorGraph& graph) { NonlinearEqualityConstraints constraints; @@ -45,7 +49,7 @@ NonlinearEqualityConstraints NonlinearEqualityConstraints::FromCostGraph( return constraints; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ size_t NonlinearEqualityConstraints::dim() const { size_t dimension = 0; for (const auto& constraint : *this) { @@ -54,26 +58,29 @@ size_t NonlinearEqualityConstraints::dim() const { return dimension; } -/* ********************************************************************************************* */ -Vector NonlinearEqualityConstraints::violationVector(const Values& values, bool whiten) const { +/* ************************************************************************* */ +Vector NonlinearEqualityConstraints::violationVector(const Values& values, + bool whiten) const { Vector violation(dim()); size_t start_idx = 0; for (const auto& constraint : *this) { size_t dim = constraint->dim(); - violation.middleCols(start_idx, dim) = - whiten ? constraint->whitenedError(values) : constraint->unwhitenedError(values); + violation.segment(start_idx, dim) = + whiten ? constraint->whitenedError(values) + : constraint->unwhitenedError(values); start_idx += dim; } return violation; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ double NonlinearEqualityConstraints::violationNorm(const Values& values) const { return violationVector(values, true).norm(); } -/* ********************************************************************************************* */ -NonlinearFactorGraph NonlinearEqualityConstraints::penaltyGraph(const double mu) const { +/* ************************************************************************* */ +NonlinearFactorGraph NonlinearEqualityConstraints::penaltyGraph( + const double mu) const { NonlinearFactorGraph graph; for (const auto& constraint : *this) { graph.add(constraint->penaltyFactor(mu)); diff --git a/gtsam/constrained/NonlinearEqualityConstraint.h b/gtsam/constrained/NonlinearEqualityConstraint.h index 4d85e8b5ba..53959c57e9 100644 --- a/gtsam/constrained/NonlinearEqualityConstraint.h +++ b/gtsam/constrained/NonlinearEqualityConstraint.h @@ -38,14 +38,18 @@ class GTSAM_EXPORT NonlinearEqualityConstraint : public NonlinearConstraint { /** Destructor. */ virtual ~NonlinearEqualityConstraint() {} + /// Whether this constraint should be treated as a hard constraint. + virtual bool isHardConstraint() const { return true; } + private: #if GTSAM_ENABLE_BOOST_SERIALIZATION /** Serialization function */ friend class boost::serialization::access; template void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("NonlinearEqualityConstraint", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "NonlinearEqualityConstraint", + boost::serialization::base_object(*this)); } #endif }; @@ -70,11 +74,14 @@ class ExpressionEqualityConstraint : public NonlinearEqualityConstraint { * @param expression expression representing g(x). * @param tolerance vector representing tolerance in each dimension. */ - ExpressionEqualityConstraint(const Expression& expression, const T& rhs, const Vector& sigmas); + ExpressionEqualityConstraint(const Expression& expression, const T& rhs, + const Vector& sigmas); - virtual Vector unwhitenedError(const Values& x, OptionalMatrixVecType H = nullptr) const override; + virtual Vector unwhitenedError( + const Values& x, OptionalMatrixVecType H = nullptr) const override; - virtual NoiseModelFactor::shared_ptr penaltyFactor(const double mu = 1.0) const override; + virtual NoiseModelFactor::shared_ptr penaltyFactor( + const double mu = 1.0) const override; const Expression& expression() const { return expression_; } @@ -90,8 +97,9 @@ class ExpressionEqualityConstraint : public NonlinearEqualityConstraint { friend class boost::serialization::access; template void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("ExpressionEqualityConstraint", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "ExpressionEqualityConstraint", + boost::serialization::base_object(*this)); ar& BOOST_SERIALIZATION_NVP(expression_); ar& BOOST_SERIALIZATION_NVP(rhs_); ar& BOOST_SERIALIZATION_NVP(dims_); @@ -99,7 +107,7 @@ class ExpressionEqualityConstraint : public NonlinearEqualityConstraint { #endif }; -/** Equality constraint that enforce the cost factor with zero error. +/** Equality constraint that enforce the cost factor with zero error. * e.g., for a factor with unwhitened cost 2x-1, the constraint enforces the * equality 2x-1=0. */ @@ -120,9 +128,11 @@ class GTSAM_EXPORT ZeroCostConstraint : public NonlinearEqualityConstraint { */ ZeroCostConstraint(const NoiseModelFactor::shared_ptr& factor); - virtual Vector unwhitenedError(const Values& x, OptionalMatrixVecType H = nullptr) const override; + virtual Vector unwhitenedError( + const Values& x, OptionalMatrixVecType H = nullptr) const override; - virtual NoiseModelFactor::shared_ptr penaltyFactor(const double mu = 1.0) const override; + virtual NoiseModelFactor::shared_ptr penaltyFactor( + const double mu = 1.0) const override; /// @return a deep copy of this factor gtsam::NonlinearFactor::shared_ptr clone() const override { @@ -136,15 +146,16 @@ class GTSAM_EXPORT ZeroCostConstraint : public NonlinearEqualityConstraint { friend class boost::serialization::access; template void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("ZeroCostConstraint", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "ZeroCostConstraint", boost::serialization::base_object(*this)); ar& BOOST_SERIALIZATION_NVP(factor_); } #endif }; /// Container of NonlinearEqualityConstraint. -class GTSAM_EXPORT NonlinearEqualityConstraints : public FactorGraph { +class GTSAM_EXPORT NonlinearEqualityConstraints + : public FactorGraph { public: using shared_ptr = std::shared_ptr; using Base = FactorGraph; @@ -153,7 +164,8 @@ class GTSAM_EXPORT NonlinearEqualityConstraints : public FactorGraph void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("NonlinearEqualityConstraints", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "NonlinearEqualityConstraints", + boost::serialization::base_object(*this)); } #endif }; diff --git a/gtsam/constrained/NonlinearInequalityConstraint.cpp b/gtsam/constrained/NonlinearInequalityConstraint.cpp index b1dcb7534c..4069c08e45 100644 --- a/gtsam/constrained/NonlinearInequalityConstraint.cpp +++ b/gtsam/constrained/NonlinearInequalityConstraint.cpp @@ -21,14 +21,14 @@ namespace gtsam { -/* ********************************************************************************************* */ +/* ************************************************************************* */ Vector NonlinearInequalityConstraint::whitenedExpr(const Values& x) const { return noiseModel()->whiten(unwhitenedExpr(x)); } -/* ********************************************************************************************* */ -Vector NonlinearInequalityConstraint::unwhitenedError(const Values& x, - OptionalMatrixVecType H) const { +/* ************************************************************************* */ +Vector NonlinearInequalityConstraint::unwhitenedError( + const Values& x, OptionalMatrixVecType H) const { Vector error = unwhitenedExpr(x, H); for (size_t i = 0; i < dim(); i++) { if (error(i) < 0) { @@ -43,54 +43,58 @@ Vector NonlinearInequalityConstraint::unwhitenedError(const Values& x, return error; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ bool NonlinearInequalityConstraint::active(const Values& x) const { return (unwhitenedExpr(x).array() >= 0).any(); } -/* ********************************************************************************************* */ +/* ************************************************************************* */ NoiseModelFactor::shared_ptr NonlinearInequalityConstraint::penaltyFactorCustom( InequalityPenaltyFunction::shared_ptr func, const double mu) const { /// Default behavior, this function should be overriden. return penaltyFactor(mu); } -/* ********************************************************************************************* */ -NonlinearEqualityConstraint::shared_ptr NonlinearInequalityConstraint::createEqualityConstraint() - const { +/* ************************************************************************* */ +NonlinearEqualityConstraint::shared_ptr +NonlinearInequalityConstraint::createEqualityConstraint() const { /// Default behavior, this function should be overriden. return nullptr; } -/* ********************************************************************************************* */ -NoiseModelFactor::shared_ptr NonlinearInequalityConstraint::penaltyFactorEquality( - const double mu) const { +/* ************************************************************************* */ +NoiseModelFactor::shared_ptr +NonlinearInequalityConstraint::penaltyFactorEquality(const double mu) const { return createEqualityConstraint()->penaltyFactor(mu); } -/* ********************************************************************************************* */ +/* ************************************************************************* */ ScalarExpressionInequalityConstraint::ScalarExpressionInequalityConstraint( const Double_& expression, const double& sigma) : Base(constrainedNoise(Vector1(sigma)), expression.keysAndDims().first), expression_(expression), dims_(expression.keysAndDims().second) {} -/* ********************************************************************************************* */ -ScalarExpressionInequalityConstraint::shared_ptr ScalarExpressionInequalityConstraint::GeqZero( - const Double_& expression, const double& sigma) { +/* ************************************************************************* */ +ScalarExpressionInequalityConstraint::shared_ptr +ScalarExpressionInequalityConstraint::GeqZero(const Double_& expression, + const double& sigma) { Double_ neg_expr = Double_(0.0) - expression; - return std::make_shared(neg_expr, sigma); + return std::make_shared(neg_expr, + sigma); } -/* ********************************************************************************************* */ -ScalarExpressionInequalityConstraint::shared_ptr ScalarExpressionInequalityConstraint::LeqZero( - const Double_& expression, const double& sigma) { - return std::make_shared(expression, sigma); +/* ************************************************************************* */ +ScalarExpressionInequalityConstraint::shared_ptr +ScalarExpressionInequalityConstraint::LeqZero(const Double_& expression, + const double& sigma) { + return std::make_shared(expression, + sigma); } -/* ********************************************************************************************* */ -Vector ScalarExpressionInequalityConstraint::unwhitenedExpr(const Values& x, - OptionalMatrixVecType H) const { +/* ************************************************************************* */ +Vector ScalarExpressionInequalityConstraint::unwhitenedExpr( + const Values& x, OptionalMatrixVecType H) const { // Copy-paste from ExpressionFactor. if (H) { return Vector1(expression_.valueAndDerivatives(x, keys_, dims_, *H)); @@ -99,38 +103,43 @@ Vector ScalarExpressionInequalityConstraint::unwhitenedExpr(const Values& x, } } -/* ********************************************************************************************* */ +/* ************************************************************************* */ NonlinearEqualityConstraint::shared_ptr ScalarExpressionInequalityConstraint::createEqualityConstraint() const { return std::make_shared>( expression_, 0.0, noiseModel()->sigmas()); } -/* ********************************************************************************************* */ -NoiseModelFactor::shared_ptr ScalarExpressionInequalityConstraint::penaltyFactor( - const double mu) const { +/* ************************************************************************* */ +NoiseModelFactor::shared_ptr +ScalarExpressionInequalityConstraint::penaltyFactor(const double mu) const { Double_ penalty_expression(RampFunction::Ramp, expression_); - return std::make_shared>(penaltyNoise(mu), 0.0, penalty_expression); + return std::make_shared>(penaltyNoise(mu), 0.0, + penalty_expression); } -/* ********************************************************************************************* */ -NoiseModelFactor::shared_ptr ScalarExpressionInequalityConstraint::penaltyFactorCustom( +/* ************************************************************************* */ +NoiseModelFactor::shared_ptr +ScalarExpressionInequalityConstraint::penaltyFactorCustom( InequalityPenaltyFunction::shared_ptr func, const double mu) const { if (!func) { return penaltyFactor(mu); } // TODO(yetong): can we pass the functor directly to construct the expression? Double_ error(func->function(), expression_); - return std::make_shared>(penaltyNoise(mu), 0.0, error); + return std::make_shared>(penaltyNoise(mu), 0.0, + error); } -/* ********************************************************************************************* */ -NoiseModelFactor::shared_ptr ScalarExpressionInequalityConstraint::penaltyFactorEquality( +/* ************************************************************************* */ +NoiseModelFactor::shared_ptr +ScalarExpressionInequalityConstraint::penaltyFactorEquality( const double mu) const { - return std::make_shared>(penaltyNoise(mu), 0.0, expression_); + return std::make_shared>(penaltyNoise(mu), 0.0, + expression_); } -/* ********************************************************************************************* */ +/* ************************************************************************* */ size_t NonlinearInequalityConstraints::dim() const { size_t dimension = 0; for (const auto& constraint : *this) { @@ -139,26 +148,30 @@ size_t NonlinearInequalityConstraints::dim() const { return dimension; } -/* ********************************************************************************************* */ -Vector NonlinearInequalityConstraints::violationVector(const Values& values, bool whiten) const { +/* ************************************************************************* */ +Vector NonlinearInequalityConstraints::violationVector(const Values& values, + bool whiten) const { Vector violation(dim()); size_t start_idx = 0; for (const auto& constraint : *this) { size_t dim = constraint->dim(); violation.middleCols(start_idx, dim) = - whiten ? constraint->whitenedError(values) : constraint->unwhitenedError(values); + whiten ? constraint->whitenedError(values) + : constraint->unwhitenedError(values); start_idx += dim; } return violation; } -/* ********************************************************************************************* */ -double NonlinearInequalityConstraints::violationNorm(const Values& values) const { +/* ************************************************************************* */ +double NonlinearInequalityConstraints::violationNorm( + const Values& values) const { return violationVector(values, true).norm(); } -/* ********************************************************************************************* */ -NonlinearFactorGraph NonlinearInequalityConstraints::penaltyGraph(const double mu) const { +/* ************************************************************************* */ +NonlinearFactorGraph NonlinearInequalityConstraints::penaltyGraph( + const double mu) const { NonlinearFactorGraph graph; for (const auto& constraint : *this) { graph.add(constraint->penaltyFactor(mu)); @@ -166,7 +179,7 @@ NonlinearFactorGraph NonlinearInequalityConstraints::penaltyGraph(const double m return graph; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ NonlinearFactorGraph NonlinearInequalityConstraints::penaltyGraphCustom( InequalityPenaltyFunction::shared_ptr func, const double mu) const { NonlinearFactorGraph graph; diff --git a/gtsam/constrained/NonlinearInequalityConstraint.h b/gtsam/constrained/NonlinearInequalityConstraint.h index cb0defc3d9..2538083084 100644 --- a/gtsam/constrained/NonlinearInequalityConstraint.h +++ b/gtsam/constrained/NonlinearInequalityConstraint.h @@ -40,25 +40,30 @@ class GTSAM_EXPORT NonlinearInequalityConstraint : public NonlinearConstraint { virtual ~NonlinearInequalityConstraint() {} /** Return g(x). */ - virtual Vector unwhitenedExpr(const Values& x, OptionalMatrixVecType H = nullptr) const = 0; + virtual Vector unwhitenedExpr(const Values& x, + OptionalMatrixVecType H = nullptr) const = 0; virtual Vector whitenedExpr(const Values& x) const; /** Return ramp(g(x)). */ - virtual Vector unwhitenedError(const Values& x, OptionalMatrixVecType H = nullptr) const override; + virtual Vector unwhitenedError( + const Values& x, OptionalMatrixVecType H = nullptr) const override; /** Return true if g(x)>=0 in any dimension. */ virtual bool active(const Values& x) const override; /** Return an equality constraint corresponding to g(x)=0. */ - virtual NonlinearEqualityConstraint::shared_ptr createEqualityConstraint() const; + virtual NonlinearEqualityConstraint::shared_ptr createEqualityConstraint() + const; /** Cost factor using a customized penalty function. */ virtual NoiseModelFactor::shared_ptr penaltyFactorCustom( InequalityPenaltyFunction::shared_ptr func, const double mu = 1.0) const; - /** penalty function as if the constraint is equality, 0.5 * mu * ||g(x)||^2 */ - virtual NoiseModelFactor::shared_ptr penaltyFactorEquality(const double mu = 1.0) const; + /** penalty function as if the constraint is equality, 0.5 * mu * ||g(x)||^2 + */ + virtual NoiseModelFactor::shared_ptr penaltyFactorEquality( + const double mu = 1.0) const; private: #if GTSAM_ENABLE_BOOST_SERIALIZATION @@ -66,8 +71,9 @@ class GTSAM_EXPORT NonlinearInequalityConstraint : public NonlinearConstraint { friend class boost::serialization::access; template void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("NonlinearInequalityConstraint", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "NonlinearInequalityConstraint", + boost::serialization::base_object(*this)); } #endif }; @@ -75,7 +81,8 @@ class GTSAM_EXPORT NonlinearInequalityConstraint : public NonlinearConstraint { /** Inequality constraint that force g(x) <= 0, where g(x) is a scalar-valued * nonlinear function. */ -class GTSAM_EXPORT ScalarExpressionInequalityConstraint : public NonlinearInequalityConstraint { +class GTSAM_EXPORT ScalarExpressionInequalityConstraint + : public NonlinearInequalityConstraint { public: using Base = NonlinearInequalityConstraint; using This = ScalarExpressionInequalityConstraint; @@ -92,32 +99,40 @@ class GTSAM_EXPORT ScalarExpressionInequalityConstraint : public NonlinearInequa * @param expression expression representing g(x) (or -g(x) for GeqZero). * @param sigma scalar representing sigma. */ - ScalarExpressionInequalityConstraint(const Double_& expression, const double& sigma); + ScalarExpressionInequalityConstraint(const Double_& expression, + const double& sigma); - /** Create an inequality constraint g(x)/sigma >= 0, internally represented as -g(x)/sigma <= 0. + /** Create an inequality constraint g(x)/sigma >= 0, internally represented as + * -g(x)/sigma <= 0. */ - static ScalarExpressionInequalityConstraint::shared_ptr GeqZero(const Double_& expression, - const double& sigma); + static ScalarExpressionInequalityConstraint::shared_ptr GeqZero( + const Double_& expression, const double& sigma); /** Create an inequality constraint g(x)/sigma <= 0. */ - static ScalarExpressionInequalityConstraint::shared_ptr LeqZero(const Double_& expression, - const double& sigma); + static ScalarExpressionInequalityConstraint::shared_ptr LeqZero( + const Double_& expression, const double& sigma); /** Compute g(x), or -g(x) for objects constructed from GeqZero. */ - virtual Vector unwhitenedExpr(const Values& x, OptionalMatrixVecType H = nullptr) const override; + virtual Vector unwhitenedExpr( + const Values& x, OptionalMatrixVecType H = nullptr) const override; /** Equality constraint representing g(x)/sigma = 0. */ - NonlinearEqualityConstraint::shared_ptr createEqualityConstraint() const override; + NonlinearEqualityConstraint::shared_ptr createEqualityConstraint() + const override; /** Penalty function 0.5*mu*||ramp(g(x)/sigma||^2. */ - NoiseModelFactor::shared_ptr penaltyFactor(const double mu = 1.0) const override; + NoiseModelFactor::shared_ptr penaltyFactor( + const double mu = 1.0) const override; - /** Penalty function using a smooth approxiamtion of the ramp funciton. */ - NoiseModelFactor::shared_ptr penaltyFactorCustom(InequalityPenaltyFunction::shared_ptr func, - const double mu = 1.0) const override; + /** Penalty function using a smooth approximation of the ramp function. */ + NoiseModelFactor::shared_ptr penaltyFactorCustom( + InequalityPenaltyFunction::shared_ptr func, + const double mu = 1.0) const override; - /** Penalty function as if the constraint is equality, 0.5 * mu * ||g(x)/sigma||^2. */ - virtual NoiseModelFactor::shared_ptr penaltyFactorEquality(const double mu = 1.0) const override; + /** Penalty function as if the constraint is equality, 0.5 * mu * + * ||g(x)/sigma||^2. */ + virtual NoiseModelFactor::shared_ptr penaltyFactorEquality( + const double mu = 1.0) const override; /** Return expression g(x), or -g(x) for objects constructed from GeqZero. */ const Double_& expression() const { return expression_; } @@ -134,8 +149,9 @@ class GTSAM_EXPORT ScalarExpressionInequalityConstraint : public NonlinearInequa friend class boost::serialization::access; template void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("ExpressionEqualityConstraint", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "ExpressionEqualityConstraint", + boost::serialization::base_object(*this)); ar& BOOST_SERIALIZATION_NVP(expression_); ar& BOOST_SERIALIZATION_NVP(dims_); } @@ -165,8 +181,8 @@ class GTSAM_EXPORT NonlinearInequalityConstraints NonlinearFactorGraph penaltyGraph(const double mu = 1.0) const; /** Return the cost graph constructed using a customized penalty function. */ - NonlinearFactorGraph penaltyGraphCustom(InequalityPenaltyFunction::shared_ptr func, - const double mu = 1.0) const; + NonlinearFactorGraph penaltyGraphCustom( + InequalityPenaltyFunction::shared_ptr func, const double mu = 1.0) const; private: #if GTSAM_ENABLE_BOOST_SERIALIZATION @@ -174,8 +190,9 @@ class GTSAM_EXPORT NonlinearInequalityConstraints friend class boost::serialization::access; template void serialize(ARCHIVE& ar, const unsigned int /*version*/) { - ar& boost::serialization::make_nvp("NonlinearInequalityConstraints", - boost::serialization::base_object(*this)); + ar& boost::serialization::make_nvp( + "NonlinearInequalityConstraints", + boost::serialization::base_object(*this)); } #endif }; diff --git a/gtsam/constrained/PenaltyOptimizer.cpp b/gtsam/constrained/PenaltyOptimizer.cpp index 3eb1766a1f..5f8f71bf34 100644 --- a/gtsam/constrained/PenaltyOptimizer.cpp +++ b/gtsam/constrained/PenaltyOptimizer.cpp @@ -41,7 +41,7 @@ PenaltyOptimizer::State PenaltyOptimizer::iterate(const State& state) const { // Run unconstrained optimization. auto optimizer = createUnconstrainedOptimizer(meritGraph, state.values); newState.setValues(optimizer->optimize(), problem_); - newState.unconstrainedIterationss = optimizer->iterations(); + newState.unconstrainedIterations = optimizer->iterations(); return newState; } @@ -78,7 +78,7 @@ PenaltyOptimizer::createUnconstrainedOptimizer( const NonlinearFactorGraph& graph, const Values& values) const { // TODO(yetong): make compatible with all NonlinearOptimizers. return std::make_shared(graph, values, - p_->lm_params); + p_->lmParams); } /* ************************************************************************* */ @@ -122,7 +122,7 @@ void PenaltyOptimizer::logIteration(const State& state) const { cout << "|" << setw(10) << setprecision(4) << state.cost; cout << "|" << setw(10) << setprecision(4) << state.eqConstraintViolation; cout << "|" << setw(10) << setprecision(4) << state.ineqConstraintViolation; - cout << "|" << setw(10) << state.unconstrainedIterationss; + cout << "|" << setw(10) << state.unconstrainedIterations; cout << "|" << setw(10) << state.time; cout << "|" << endl; } diff --git a/gtsam/constrained/PenaltyOptimizer.h b/gtsam/constrained/PenaltyOptimizer.h index 9308ae643e..b4d777d456 100644 --- a/gtsam/constrained/PenaltyOptimizer.h +++ b/gtsam/constrained/PenaltyOptimizer.h @@ -35,10 +35,12 @@ class GTSAM_EXPORT PenaltyOptimizerParams : public ConstrainedOptimizerParams { double muEqIncreaseRate = 2; // increase rate of penalty parameter double muIneqIncreaseRate = 2; InequalityPenaltyFunction::shared_ptr ineqConstraintPenaltyFunction = nullptr; - LevenbergMarquardtParams lm_params; + LevenbergMarquardtParams lmParams; /** Constructor. */ - PenaltyOptimizerParams() : Base() {} + PenaltyOptimizerParams() : Base() { + lmParams.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + } }; /// Details for each iteration. @@ -50,7 +52,7 @@ class GTSAM_EXPORT PenaltyOptimizerState : public ConstrainedOptimizerState { double muEq = 0.0; double muIneq = 0.0; - size_t unconstrainedIterationss = 0; + size_t unconstrainedIterations = 0; using Base::Base; }; @@ -60,8 +62,8 @@ class GTSAM_EXPORT PenaltyOptimizerState : public ConstrainedOptimizerState { * optimization problem that minimize a merit function. The merit function is * constructed as the sum of the cost function and penalty functions for * constraints. - * Example problem: - * argmin_x 0.5 * ||x1-1||^2 + 0.5 * ||x2-1||^2 + * Example problem: + * argmin_x 0.5 * ||x1-1||^2 + 0.5 * ||x2-1||^2 * s.t. x1^2 + x2^2 - 1 = 0 * s.t. 4*x1^2 + 0.25*x2^2 - 1 <= 0 */ @@ -103,7 +105,8 @@ class GTSAM_EXPORT PenaltyOptimizer : public ConstrainedOptimizer { protected: /// Merit function in the form /// m(x) = f(x) + 0.5 muEq * ||h(x)||^2 + 0.5 * muIneq * ||g(x)_+||^2 - NonlinearFactorGraph meritFunction(const double muEq, const double muIneq) const; + NonlinearFactorGraph meritFunction(const double muEq, + const double muIneq) const; /// Create an unconstrained optimizer that solves the merit function (cost + /// penalty functions). diff --git a/gtsam/constrained/constrained.md b/gtsam/constrained/constrained.md new file mode 100644 index 0000000000..c9e6414edd --- /dev/null +++ b/gtsam/constrained/constrained.md @@ -0,0 +1,96 @@ +# Constrained + +The `constrained` module in GTSAM provides constrained nonlinear optimization on top of factor graphs. +It includes classes for representing constraints, building constrained problems, and solving them with penalty and augmented Lagrangian methods. + +## Core Problem Model + +- [`ConstrainedOptProblem`](doc/ConstrainedOptProblem.ipynb): Holds objective costs, equality constraints, and inequality constraints. +- [`ConstrainedOptProblem::AuxiliaryKeyGenerator`](doc/ConstrainedOptProblem.ipynb): Generates keys for auxiliary variables used when transforming inequality constraints. +- [`NonlinearConstraint`](doc/NonlinearConstraint.ipynb): Base class for nonlinear constraints represented as constrained `NoiseModelFactor` objects. + +## Equality Constraints + +- [`NonlinearEqualityConstraint`](doc/NonlinearEqualityConstraint.ipynb): Base class for constraints of the form `h(x) = 0`. +- [`ExpressionEqualityConstraint`](doc/NonlinearEqualityConstraint.ipynb): Equality constraint from an expression and right-hand side. +- [`ZeroCostConstraint`](doc/NonlinearEqualityConstraint.ipynb): Equality constraint that enforces zero residual on a cost factor. +- [`NonlinearEqualityConstraints`](doc/NonlinearEqualityConstraint.ipynb): Container graph for equality constraints. + +## Inequality Constraints + +- [`NonlinearInequalityConstraint`](doc/NonlinearInequalityConstraint.ipynb): Base class for constraints of the form `g(x) <= 0`. +- [`ScalarExpressionInequalityConstraint`](doc/NonlinearInequalityConstraint.ipynb): Scalar expression-based inequality constraint. +- [`NonlinearInequalityConstraints`](doc/NonlinearInequalityConstraint.ipynb): Container graph for inequality constraints. +- [`InequalityPenaltyFunction`](doc/InequalityPenaltyFunction.ipynb): Interface for ramp-like penalty mappings used with inequality constraints. + Derived classes: + - [`RampFunction`](doc/InequalityPenaltyFunction.ipynb) + - [`SmoothRampPoly2`](doc/InequalityPenaltyFunction.ipynb) + - [`SmoothRampPoly3`](doc/InequalityPenaltyFunction.ipynb) + - [`SoftPlusFunction`](doc/InequalityPenaltyFunction.ipynb) + +## Optimizers + +- [`ConstrainedOptimizerParams`](doc/ConstrainedOptimizer.ipynb), [`ConstrainedOptimizerState`](doc/ConstrainedOptimizer.ipynb), [`ConstrainedOptimizer`](doc/ConstrainedOptimizer.ipynb): Shared base interfaces and iteration state for constrained solvers. +- [`PenaltyOptimizerParams`](doc/PenaltyOptimizer.ipynb), [`PenaltyOptimizerState`](doc/PenaltyOptimizer.ipynb), [`PenaltyOptimizer`](doc/PenaltyOptimizer.ipynb): Penalty method solver and its parameters/state. +- [`AugmentedLagrangianParams`](doc/AugmentedLagrangianOptimizer.ipynb), [`AugmentedLagrangianState`](doc/AugmentedLagrangianOptimizer.ipynb), [`AugmentedLagrangianOptimizer`](doc/AugmentedLagrangianOptimizer.ipynb): Augmented Lagrangian solver and its parameters/state. + +## How the Pieces Fit Together + +For a new user, it helps to think in two phases: + +1. Build a constrained problem. +2. Run a constrained solver on that problem. + +Inequality constraints can use different smooth penalty shapes via +`InequalityPenaltyFunction` (ramp, smooth polynomial ramps, or softplus), +which controls behavior near the active constraint boundary. + +### 1) Build the Problem + +This stage is about modeling: you separate what you want to minimize +(objective terms) from what must hold (constraints), then combine them into a +single `ConstrainedOptProblem` object that the solvers can consume. + +```mermaid +flowchart TB + User["User-defined model"] + Costs["Objective terms
NonlinearFactorGraph"] + Eq["Equality constraints
NonlinearEqualityConstraint(s)
h(x)=0"] + Ineq["Inequality constraints
NonlinearInequalityConstraint(s)
g(x)<=0"] + Problem["ConstrainedOptProblem"] + + User --> Costs + User --> Eq + User --> Ineq + Costs --> Problem + Eq --> Problem + Ineq --> Problem +``` + +### 2) Solve the Problem + +This stage is algorithmic: pick a constrained solver, form iterative +unconstrained subproblems internally, and solve those subproblems with a +standard nonlinear optimizer until constraint violation and cost are reduced. + +```mermaid +flowchart TB + Problem["ConstrainedOptProblem"] + Choose{"Choose constrained solver"} + Penalty["PenaltyOptimizer"] + AL["AugmentedLagrangianOptimizer"] + PenFunc["InequalityPenaltyFunction
(ramp / smooth ramp / softplus)"] + Sub["Iterative unconstrained subproblems"] + LM["Nonlinear optimizer
(Levenberg-Marquardt by default)"] + Result["Optimized Values
+ cost and violation metrics"] + + Problem --> Choose + Choose --> Penalty + Choose --> AL + PenFunc --> Penalty + PenFunc --> AL + Penalty --> Sub + AL --> Sub + Sub --> LM + LM --> Result +``` diff --git a/gtsam/constrained/doc/AugmentedLagrangianOptimizer.ipynb b/gtsam/constrained/doc/AugmentedLagrangianOptimizer.ipynb new file mode 100644 index 0000000000..8434c67b81 --- /dev/null +++ b/gtsam/constrained/doc/AugmentedLagrangianOptimizer.ipynb @@ -0,0 +1,119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# AugmentedLagrangianOptimizer\n", + "\n", + "## Overview\n", + "\n", + "AugmentedLagrangianOptimizer combines penalty terms with Lagrange multipliers to improve convergence and conditioning on constrained nonlinear problems." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- AugmentedLagrangianState extends penalty state with equality and inequality multipliers.\n", + "- augmentedLagrangianFunction builds the constrained objective used in each outer iteration.\n", + "- Multiplier updates are done by dual-ascent style steps.\n", + "- Penalty parameters are adapted based on violation reduction." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\nAugmented Lagrangian combines multipliers and penalties:\n\n$$\n\\mathcal{L}_A(x,\\lambda)=\\frac{1}{2}\\|f(x)\\|^2\n-\\lambda_{eq}^T h(x)+\\frac{\\mu_{eq}}{2}\\|h(x)\\|^2\n-\\lambda_{ineq}^T g(x)+\\frac{\\mu_{ineq}}{2}\\|g(x)_-\\|^2.\n$$\n\nThe solver alternates between primal minimization (in $x$) and dual-ascent updates (in multipliers), with adaptive penalty updates.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `AugmentedLagrangianOptimizer(problem, initialValues, params)`\n- `optimize()`\n- `progress()`\n- `augmentedLagrangianFunction(state, epsilon)` (advanced inspection)\n- `AugmentedLagrangianParams`: dual step sizes and penalty-adaptation settings\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n\nusing namespace gtsam;\n\nauto params = std::make_shared();\nparams->verbose = true;\n\nAugmentedLagrangianOptimizer optimizer(problem, init_values, params);\nValues results = optimizer.optimize();\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/doc/ConstrainedOptProblem.ipynb b/gtsam/constrained/doc/ConstrainedOptProblem.ipynb new file mode 100644 index 0000000000..8db30d5507 --- /dev/null +++ b/gtsam/constrained/doc/ConstrainedOptProblem.ipynb @@ -0,0 +1,120 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# ConstrainedOptProblem\n", + "\n", + "## Overview\n", + "\n", + "ConstrainedOptProblem represents a nonlinear constrained optimization problem by combining objective terms, equality constraints, and inequality constraints into one object." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- Objective terms are stored as a NonlinearFactorGraph.\n", + "- Equality constraints enforce h(x)=0 through NonlinearEqualityConstraints.\n", + "- Inequality constraints enforce g(x)<=0 through NonlinearInequalityConstraints.\n", + "- The evaluate method reports cost and both constraint-violation norms.\n", + "- auxiliaryProblem can transform inequality constraints into an equivalent equality-constrained form with auxiliary variables." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\nA constrained problem is modeled as:\n\n$$\n\\min_{x}\\; \\frac{1}{2}\\|f(x)\\|^2 \\quad\n\\text{s.t.}\\; h(x)=0,\\; g(x)\\le 0.\n$$\n\n`ConstrainedOptProblem` stores exactly these three components: costs $f$, equality constraints $h$, and inequality constraints $g$. Its `evaluate` method reports objective cost plus equality/inequality violation magnitudes.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `ConstrainedOptProblem(costs, eqConstraints, ineqConstraints)`\n- `EqConstrainedOptProblem(costs, eqConstraints)`\n- `costs()`, `eConstraints()`, `iConstraints()`\n- `evaluate(values)`\n- `dim()`\n- `auxiliaryProblem(values, generator)` for inequality-to-equality reformulation\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n#include \n\nusing namespace gtsam;\n\nSymbol x1('x', 1), x2('x', 2);\nDouble_ X1(x1), X2(x2);\n\nNonlinearFactorGraph costs;\nauto noise = noiseModel::Isotropic::Sigma(1, 1.0);\ncosts.addPrior(x1, 1.0, noise);\ncosts.addPrior(x2, 1.0, noise);\n\nNonlinearEqualityConstraints eq;\neq.emplace_shared>(\n X1 * X1 + X2 * X2, 1.0, Vector1(1.0));\n\nNonlinearInequalityConstraints ineq;\nineq.emplace_shared(\n 4 * X1 * X1 + 0.25 * X2 * X2 - Double_(1.0), 1.0);\n\nConstrainedOptProblem problem(costs, eq, ineq);\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/doc/ConstrainedOptimizer.ipynb b/gtsam/constrained/doc/ConstrainedOptimizer.ipynb new file mode 100644 index 0000000000..9fc5978f07 --- /dev/null +++ b/gtsam/constrained/doc/ConstrainedOptimizer.ipynb @@ -0,0 +1,118 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# ConstrainedOptimizer\n", + "\n", + "## Overview\n", + "\n", + "ConstrainedOptimizer is the abstract solver interface for constrained nonlinear optimization and tracks progress with dedicated parameter and state classes." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- ConstrainedOptimizerParams defines stopping tolerances, verbosity, and iteration limits.\n", + "- ConstrainedOptimizerState tracks iteration number, values, cost, and constraint violations.\n", + "- Derived optimizers implement optimize and typically solve a sequence of unconstrained subproblems." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\n`ConstrainedOptimizer` is the outer-loop interface for solving:\n\n$$\n\\min_x \\frac{1}{2}\\|f(x)\\|^2\\;\\text{s.t.}\\;h(x)=0,\\;g(x)\\le 0.\n$$\n\nConcrete solvers repeatedly solve unconstrained subproblems and stop when cost and violation metrics meet absolute/relative tolerances.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `optimize()` (implemented by derived solvers)\n- `ConstrainedOptimizerParams`: `maxIterations`, tolerance settings, verbosity\n- `ConstrainedOptimizerState`: `values`, `cost`, `eqConstraintViolation`, `ineqConstraintViolation`, `violation()`\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n#include \n\nusing namespace gtsam;\n\nauto params = std::make_shared();\nparams->maxIterations = 30;\nparams->absoluteViolationTolerance = 1e-6;\n\nPenaltyOptimizer solver(problem, initialValues, params);\nValues result = solver.optimize();\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/doc/InequalityPenaltyFunction.ipynb b/gtsam/constrained/doc/InequalityPenaltyFunction.ipynb new file mode 100644 index 0000000000..778d8b47de --- /dev/null +++ b/gtsam/constrained/doc/InequalityPenaltyFunction.ipynb @@ -0,0 +1,119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# InequalityPenaltyFunction\n", + "\n", + "## Overview\n", + "\n", + "InequalityPenaltyFunction provides the scalar ramp-like mapping used to turn inequality violations into smooth optimization penalties." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- RampFunction implements the exact ramp max(x,0) behavior.\n", + "- SmoothRampPoly2 and SmoothRampPoly3 provide polynomial smooth approximations near the boundary.\n", + "- SoftPlusFunction provides a smooth log-exp approximation.\n", + "- These functions influence solver behavior near active inequality constraints." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\nThese functions shape how inequality violations are penalized by replacing\n$r=\\max(g,0)$ with either the exact ramp or a smooth approximation:\n\n- `RampFunction`: exact, non-smooth at $0$.\n- `SmoothRampPoly2`, `SmoothRampPoly3`: polynomial smoothings near the boundary.\n- `SoftPlusFunction`: smooth log-exp form.\n\nThey are used inside inequality penalty factors to improve optimization behavior near active-set transitions.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `double operator()(double x, OptionalJacobian<1,1> H={})`\n- `function()` to retrieve a callable functor\n- `RampFunction::Ramp(x, H)`\n- `SmoothRampPoly2(epsilon)`, `SmoothRampPoly3(epsilon)`\n- `SoftPlusFunction(k)`\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n\nusing namespace gtsam;\n\nSmoothRampPoly2 phi(2.0);\nMatrix H;\ndouble r = phi(1.0, H); // smooth ramp value and derivative\n\nSoftPlusFunction softPlus(0.5);\ndouble rs = softPlus(2.0);\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/doc/NonlinearConstraint.ipynb b/gtsam/constrained/doc/NonlinearConstraint.ipynb new file mode 100644 index 0000000000..55d9d503d8 --- /dev/null +++ b/gtsam/constrained/doc/NonlinearConstraint.ipynb @@ -0,0 +1,119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# NonlinearConstraint\n", + "\n", + "## Overview\n", + "\n", + "NonlinearConstraint is the abstract base for constrained factors in the constrained module, built on top of NoiseModelFactor with constrained noise models." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- violation computes the constraint violation magnitude from factor error.\n", + "- feasible checks whether a Values assignment satisfies a tolerance.\n", + "- penaltyFactor builds an L2 penalty factor for constrained optimization methods.\n", + "- Derived classes specialize behavior for equality and inequality constraints." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\nA nonlinear constraint is treated as a residual map $c(x)$ (with constrained noise scaling). A common penalty used by constrained solvers is:\n\n$$\n\\phi(x;\\mu)=\\frac{\\mu}{2}\\|c(x)\\|^2.\n$$\n\nThis class provides the shared interface for evaluating constraint violation and creating a penalty factor used in outer-loop constrained optimization.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `violation(values)`\n- `feasible(values, tolerance)`\n- `penaltyFactor(mu)`\n- `sigmas()`\n- `unwhitenedHessian(values)` (advanced)\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n#include \n\nusing namespace gtsam;\n\nSymbol x('x', 0);\nDouble_ X(x);\nExpressionEqualityConstraint c(X * X, 1.0, Vector1(0.1));\n\nValues values;\nvalues.insert(x, 0.8);\n\nbool ok = c.feasible(values, 1e-3);\ndouble v = c.violation(values);\nauto penalty = c.penaltyFactor(10.0);\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/doc/NonlinearEqualityConstraint.ipynb b/gtsam/constrained/doc/NonlinearEqualityConstraint.ipynb new file mode 100644 index 0000000000..11092d3b9b --- /dev/null +++ b/gtsam/constrained/doc/NonlinearEqualityConstraint.ipynb @@ -0,0 +1,118 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# NonlinearEqualityConstraint\n", + "\n", + "## Overview\n", + "\n", + "NonlinearEqualityConstraint defines constraints of the form h(x)=0 and serves as the base for expression-based and zero-cost equality constraints." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- ExpressionEqualityConstraint builds equality constraints from expressions and right-hand-side targets.\n", + "- ZeroCostConstraint turns an existing noise-model factor into an equality constraint by forcing zero residual.\n", + "- NonlinearEqualityConstraints provides a factor-graph container with utilities such as violation vectors and penalty-graph construction." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\nEquality constraints enforce:\n\n$$\nh(x)=0.\n$$\n\nIn penalty form, this contributes:\n\n$$\n\\frac{\\mu}{2}\\|h(x)\\|^2.\n$$\n\n`ExpressionEqualityConstraint` models $h(x)=r$ directly from expressions, while `ZeroCostConstraint` turns an existing noise-model factor residual into an equality constraint.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `ExpressionEqualityConstraint(expression, rhs, sigmas)`\n- `ZeroCostConstraint(factor)`\n- `NonlinearEqualityConstraints::FromCostGraph(graph)`\n- `NonlinearEqualityConstraints::violationVector(values)`\n- `NonlinearEqualityConstraints::violationNorm(values)`\n- `NonlinearEqualityConstraints::penaltyGraph(mu)`\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n#include \n\nusing namespace gtsam;\n\nSymbol x1('x', 1), x2('x', 2);\nDouble_ X1(x1), X2(x2);\n\nNonlinearEqualityConstraints eq;\neq.emplace_shared>(\n X1 + X1 * X1 * X1 + X2 + X2 * X2, 0.0, Vector1(0.1));\n\nValues values;\nvalues.insert(x1, 1.0);\nvalues.insert(x2, 1.0);\n\ndouble norm = eq.violationNorm(values);\nNonlinearFactorGraph penalty = eq.penaltyGraph(4.0);\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/doc/NonlinearInequalityConstraint.ipynb b/gtsam/constrained/doc/NonlinearInequalityConstraint.ipynb new file mode 100644 index 0000000000..03c4e72ede --- /dev/null +++ b/gtsam/constrained/doc/NonlinearInequalityConstraint.ipynb @@ -0,0 +1,119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# NonlinearInequalityConstraint\n", + "\n", + "## Overview\n", + "\n", + "NonlinearInequalityConstraint defines constraints of the form g(x)<=0 and supports direct violation computation plus conversion into penalty terms." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- ScalarExpressionInequalityConstraint is a scalar expression-based implementation.\n", + "- penaltyFactor and penaltyFactorCustom map inequality violations into optimization costs.\n", + "- createEqualityConstraint provides the corresponding boundary equality g(x)=0 when needed.\n", + "- NonlinearInequalityConstraints aggregates multiple inequality constraints and builds combined penalty graphs." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\nInequality constraints enforce:\n\n$$\ng(x)\\le 0.\n$$\n\nThe default violation mapping uses a ramp on each component:\n\n$$\n\\text{ramp}(u)=\\max(u,0),\\quad\n\\phi(x;\\mu)=\\frac{\\mu}{2}\\|\\text{ramp}(g(x))\\|^2.\n$$\n\nThis keeps inactive constraints from contributing cost while penalizing violated constraints.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `ScalarExpressionInequalityConstraint::LeqZero(expression, sigma)`\n- `ScalarExpressionInequalityConstraint::GeqZero(expression, sigma)`\n- `feasible(values, tolerance)`\n- `active(values)`\n- `penaltyFactor(mu)` and `penaltyFactorCustom(func, mu)`\n- `createEqualityConstraint()`\n- `NonlinearInequalityConstraints::penaltyGraph(mu)`\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n#include \n\nusing namespace gtsam;\n\nSymbol x1('x', 1), x2('x', 2);\nDouble_ X1(x1), X2(x2);\nDouble_ g = X1 + X1 * X1 * X1 + X2 + X2 * X2;\n\nauto c = ScalarExpressionInequalityConstraint::LeqZero(g, 0.1);\n\nValues values;\nvalues.insert(x1, 1.0);\nvalues.insert(x2, 1.0);\n\nbool ok = c->feasible(values);\nbool isActive = c->active(values);\nauto p = c->penaltyFactor(9.0);\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/doc/PenaltyOptimizer.ipynb b/gtsam/constrained/doc/PenaltyOptimizer.ipynb new file mode 100644 index 0000000000..4762e36c8c --- /dev/null +++ b/gtsam/constrained/doc/PenaltyOptimizer.ipynb @@ -0,0 +1,119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "overview_cell", + "metadata": {}, + "source": [ + "# PenaltyOptimizer\n", + "\n", + "## Overview\n", + "\n", + "PenaltyOptimizer solves constrained problems by iteratively minimizing a merit function that adds weighted penalty terms for equality and inequality violations." + ] + }, + { + "cell_type": "markdown", + "id": "colab_button", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "copyright", + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colab_import", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "details_cell", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "- PenaltyOptimizerParams controls initial penalty weights and update rates.\n", + "- meritFunction builds the cost-plus-penalty nonlinear factor graph for each outer iteration.\n", + "- Each outer iteration solves an unconstrained nonlinear problem, then increases penalties as needed.\n", + "- progress stores per-iteration diagnostic information." + ] + }, + { + "cell_type": "markdown", + "id": "math_cell", + "metadata": {}, + "source": [ + "## Mathematical Formulation\n\nPenalty method solves a sequence of unconstrained problems:\n\n$$\nm(x)=\\frac{1}{2}\\|f(x)\\|^2 + \\frac{\\mu_{eq}}{2}\\|h(x)\\|^2\n+ \\frac{\\mu_{ineq}}{2}\\|\\text{ramp}(g(x))\\|^2.\n$$\n\nAs outer iterations proceed, penalty weights increase to enforce feasibility more strongly.\n" + ] + }, + { + "cell_type": "markdown", + "id": "api_cell", + "metadata": {}, + "source": [ + "## Key User API\n\n- `PenaltyOptimizer(problem, initialValues, params)`\n- `optimize()`\n- `progress()`\n- `PenaltyOptimizerParams`: `initialMuEq`, `initialMuIneq`, increase rates, `ineqConstraintPenaltyFunction`, `lmParams`\n" + ] + }, + { + "cell_type": "markdown", + "id": "cpp_cell", + "metadata": {}, + "source": [ + "## Concise C++ Example\n\n```cpp\n#include \n\nusing namespace gtsam;\n\nauto params = std::make_shared();\nparams->verbose = true;\nparams->initialMuEq = 1.0;\nparams->initialMuIneq = 1.0;\n\nPenaltyOptimizer optimizer(problem, init_values, params);\nValues results = optimizer.optimize();\n```\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/constrained/tests/testAugmentedLagrangianOptimizer.cpp b/gtsam/constrained/tests/testAugmentedLagrangianOptimizer.cpp index 44de445fe3..3b248ff067 100644 --- a/gtsam/constrained/tests/testAugmentedLagrangianOptimizer.cpp +++ b/gtsam/constrained/tests/testAugmentedLagrangianOptimizer.cpp @@ -10,21 +10,23 @@ * -------------------------------------------------------------------------- */ /** - * @file testAugmentedLagrangianOptimizr.cpp - * @brief Test augmented Lagrangian method optimzier for equality constrained + * @file testAugmentedLagrangianOptimizer.cpp + * @brief Test augmented Lagrangian method optimizer for equality constrained * optimization. * @author: Yetong Zhang */ #include #include +#include +#include #include "constrainedExample.h" #include "gtsam/constrained/NonlinearEqualityConstraint.h" using namespace gtsam; -/* ********************************************************************************************* */ +/* ************************************************************************* */ double EvaluateLagrangeTerm(const std::vector& lambdas, const NonlinearEqualityConstraints& constraints, const Values& values) { @@ -36,7 +38,7 @@ double EvaluateLagrangeTerm(const std::vector& lambdas, return s; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ double EvaluateLagrangeTerm(const std::vector& lambdas, const NonlinearInequalityConstraints& constraints, const Values& values) { @@ -48,7 +50,7 @@ double EvaluateLagrangeTerm(const std::vector& lambdas, return s; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ double ComputeBias(const std::vector& lambdas, double mu) { double norm_squared = 0; for (const auto& lambda : lambdas) { @@ -57,7 +59,7 @@ double ComputeBias(const std::vector& lambdas, double mu) { return 0.5 / mu * norm_squared; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ double ComputeBias(const std::vector& lambdas, double epsilon) { double norm_squared = 0; for (const auto& lambda : lambdas) { @@ -66,7 +68,7 @@ double ComputeBias(const std::vector& lambdas, double epsilon) { return 0.5 / epsilon * norm_squared; } -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(AugmentedLagrangian, constrained_example1) { using namespace constrained_example1; @@ -77,18 +79,22 @@ TEST(AugmentedLagrangian, constrained_example1) { AugmentedLagrangianState state; state.lambdaEq.emplace_back(Vector1(0.3)); state.muEq = 0.2; - NonlinearFactorGraph augmentedLagrangian = optimizer.augmentedLagrangianFunction(state); + NonlinearFactorGraph augmentedLagrangian = + optimizer.augmentedLagrangianFunction(state); const Values& values = init_values; double expected_cost = costs.error(values); - double expected_l2_penalty = eqConstraints.penaltyGraph(state.muEq).error(values); - double expected_lagrange_term = EvaluateLagrangeTerm(state.lambdaEq, eqConstraints, values); + double expected_l2_penalty = + eqConstraints.penaltyGraph(state.muEq).error(values); + double expected_lagrange_term = + EvaluateLagrangeTerm(state.lambdaEq, eqConstraints, values); double bias = ComputeBias(state.lambdaEq, state.muEq); - double expected_error = expected_cost + expected_l2_penalty + expected_lagrange_term + bias; + double expected_error = + expected_cost + expected_l2_penalty + expected_lagrange_term + bias; EXPECT_DOUBLES_EQUAL(expected_error, augmentedLagrangian.error(values), 1e-6); } -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(AugmentedLagrangian, constrained_example2) { using namespace constrained_example2; @@ -102,23 +108,29 @@ TEST(AugmentedLagrangian, constrained_example2) { state.muEq = 0.2; state.muIneq = 0.3; double epsilon = 1.0; - NonlinearFactorGraph augmentedLagrangian = optimizer.augmentedLagrangianFunction(state, epsilon); + NonlinearFactorGraph augmentedLagrangian = + optimizer.augmentedLagrangianFunction(state, epsilon); const Values& values = init_values; double expected_cost = costs.error(values); - double expected_l2_penalty_e = eqConstraints.penaltyGraph(state.muEq).error(values); - double expected_lagrange_term_e = EvaluateLagrangeTerm(state.lambdaEq, eqConstraints, values); + double expected_l2_penalty_e = + eqConstraints.penaltyGraph(state.muEq).error(values); + double expected_lagrange_term_e = + EvaluateLagrangeTerm(state.lambdaEq, eqConstraints, values); double bias_e = ComputeBias(state.lambdaEq, state.muEq); - double expected_penalty_i = ineqConstraints.penaltyGraph(state.muIneq).error(values); - double expected_lagrange_term_i = EvaluateLagrangeTerm(state.lambdaIneq, ineqConstraints, values); + double expected_penalty_i = + ineqConstraints.penaltyGraph(state.muIneq).error(values); + double expected_lagrange_term_i = + EvaluateLagrangeTerm(state.lambdaIneq, ineqConstraints, values); double bias_i = ComputeBias(state.lambdaIneq, epsilon); - double expected_error = expected_cost + expected_l2_penalty_e + expected_penalty_i + - expected_lagrange_term_e + expected_lagrange_term_i + bias_e + bias_i; + double expected_error = expected_cost + expected_l2_penalty_e + + expected_penalty_i + expected_lagrange_term_e + + expected_lagrange_term_i + bias_e + bias_i; EXPECT_DOUBLES_EQUAL(expected_error, augmentedLagrangian.error(values), 1e-6); } -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(AugmentedLagrangianOptimizer, constrained_example1) { using namespace constrained_example1; @@ -131,7 +143,7 @@ TEST(AugmentedLagrangianOptimizer, constrained_example1) { EXPECT(assert_equal(optimal_values, results, 1e-4)); } -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(AugmentedLagrangianOptimizer, constrained_example2) { using namespace constrained_example2; @@ -144,7 +156,54 @@ TEST(AugmentedLagrangianOptimizer, constrained_example2) { EXPECT(assert_equal(optimal_values, results, 1e-4)); } -/* ********************************************************************************************* */ +TEST(AugmentedLagrangian, VectorBiasUsesElementwiseSigmas) { + using namespace gtsam; + + const Symbol x_key('x', 0); + const Vector3_ x(x_key); + + // Non-uniform sigmas are essential to detect the bug in Release. + Vector sigmas(3); + sigmas << 1.0, 2.0, 4.0; + + NonlinearEqualityConstraints eq; + eq.emplace_shared>(x, Vector3::Zero(), + sigmas); + + // Empty cost graph keeps the factor indexing simple. + NonlinearFactorGraph costs; + const auto problem = + ConstrainedOptProblem::EqConstrainedOptProblem(costs, eq); + + Values values; + values.insert( + x_key, + Vector3::Zero()); // satisfy constraint => penalty factor error is zero + + auto params = std::make_shared(); + AugmentedLagrangianOptimizer optimizer(problem, values, params); + + AugmentedLagrangianState state; + state.muEq = 0.2; + state.lambdaEq.emplace_back((Vector(3) << 0.3, -0.5, 1.2).finished()); + + // Buggy code aborts here in Debug (Eigen assert) and gives wrong bias in + // Release. + const NonlinearFactorGraph graph = + optimizer.augmentedLagrangianFunction(state); + EXPECT_LONGS_EQUAL(1, static_cast(graph.size())); + + auto nf = graph.at(0); + auto factor = std::dynamic_pointer_cast(nf); + EXPECT(factor); + + const Vector bias_from_factor = factor->unwhitenedError(values); + const Vector expected = + (state.lambdaEq.at(0) / state.muEq).cwiseProduct(sigmas); + EXPECT(assert_equal(expected, bias_from_factor, 1e-12)); +} + +/* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); diff --git a/gtsam/constrained/tests/testInequalityPenaltyFunction.cpp b/gtsam/constrained/tests/testInequalityPenaltyFunction.cpp index 9b41dbe2c5..c45fda160d 100644 --- a/gtsam/constrained/tests/testInequalityPenaltyFunction.cpp +++ b/gtsam/constrained/tests/testInequalityPenaltyFunction.cpp @@ -24,7 +24,7 @@ using namespace gtsam; -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(RampFunction, error_and_jacobian) { /// Helper function for numerical Jacobian computation. auto ramp_helper = [&](const double& x) { return RampFunction::Ramp(x); }; @@ -42,14 +42,16 @@ TEST(RampFunction, error_and_jacobian) { EXPECT_DOUBLES_EQUAL(expected_r_vec.at(i), r, 1e-9); /// Check derivative. - if (abs(x) > 1e-6) { // function is not smooth at 0, so Jacobian is undefined. - Matrix expected_H = gtsam::numericalDerivative11(ramp_helper, x, 1e-6); + if (abs(x) > + 1e-6) { // function is not smooth at 0, so Jacobian is undefined. + Matrix expected_H = + gtsam::numericalDerivative11(ramp_helper, x, 1e-6); EXPECT(assert_equal(expected_H, H)); } } } -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(RampFunctionPoly2, error_and_jacobian) { /// Helper function for numerical Jacobian computation. SmoothRampPoly2 p_ramp(2.0); @@ -68,12 +70,13 @@ TEST(RampFunctionPoly2, error_and_jacobian) { EXPECT_DOUBLES_EQUAL(expected_r_vec.at(i), r, 1e-9); /// Check derivative. - Matrix expected_H = gtsam::numericalDerivative11(ramp_helper, x, 1e-6); + Matrix expected_H = + gtsam::numericalDerivative11(ramp_helper, x, 1e-6); EXPECT(assert_equal(expected_H, H, 1e-6)); } } -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(RampFunctionPoly3, error_and_jacobian) { /// Helper function for numerical Jacobian computation. SmoothRampPoly3 p_ramp(2.0); @@ -92,12 +95,13 @@ TEST(RampFunctionPoly3, error_and_jacobian) { EXPECT_DOUBLES_EQUAL(expected_r_vec.at(i), r, 1e-9); /// Check derivative. - Matrix expected_H = gtsam::numericalDerivative11(ramp_helper, x, 1e-6); + Matrix expected_H = + gtsam::numericalDerivative11(ramp_helper, x, 1e-6); EXPECT(assert_equal(expected_H, H, 1e-6)); } } -/* ********************************************************************************************* */ +/* ************************************************************************* */ TEST(SoftPlusFunction, error_and_jacobian) { /// Helper function for numerical Jacobian computation. SoftPlusFunction soft_plus(0.5); @@ -105,8 +109,8 @@ TEST(SoftPlusFunction, error_and_jacobian) { /// Create a set of values to test the function. static std::vector x_vec{-3.0, 0.0, 1.0, 2.0, 3.0}; - static std::vector expected_r_vec{ - 0.40282656, 1.38629436, 1.94815397, 2.62652338, 3.40282656}; + static std::vector expected_r_vec{0.40282656, 1.38629436, 1.94815397, + 2.62652338, 3.40282656}; for (size_t i = 0; i < x_vec.size(); i++) { double x = x_vec.at(i); @@ -117,7 +121,8 @@ TEST(SoftPlusFunction, error_and_jacobian) { EXPECT_DOUBLES_EQUAL(expected_r_vec.at(i), r, 1e-6); /// Check derivative. - Matrix expected_H = gtsam::numericalDerivative11(soft_plus_helper, x, 1e-6); + Matrix expected_H = gtsam::numericalDerivative11( + soft_plus_helper, x, 1e-6); EXPECT(assert_equal(expected_H, H, 1e-6)); } } diff --git a/gtsam/constrained/tests/testNonlinearEqualityConstraint.cpp b/gtsam/constrained/tests/testNonlinearEqualityConstraint.cpp index 3255fa7ab3..8cc4ca75b8 100644 --- a/gtsam/constrained/tests/testNonlinearEqualityConstraint.cpp +++ b/gtsam/constrained/tests/testNonlinearEqualityConstraint.cpp @@ -21,10 +21,15 @@ #include #include #include -#include #include +#include +#include +#include #include #include +#include + +#include #include "constrainedExample.h" @@ -33,10 +38,11 @@ using constrained_example::pow; using constrained_example::x1, constrained_example::x2; using constrained_example::x1_key, constrained_example::x2_key; +/* ************************************************************************* */ // Test methods of DoubleExpressionEquality. TEST(ExpressionEqualityConstraint, double) { // create constraint from double expression - // g(x1, x2) = x1 + x1^3 + x2 + x2^2, from Vanderbergh slides + // g(x1, x2) = x1 + x1^3 + x2 + x2^2, from Vandenberghe slides Vector sigmas = Vector1(0.1); auto g = x1 + pow(x1, 3) + x2 + pow(x2, 2); auto constraint = ExpressionEqualityConstraint(g, 0.0, sigmas); @@ -63,8 +69,10 @@ TEST(ExpressionEqualityConstraint, double) { EXPECT(!constraint.feasible(values2)); // Check constraint violation is indeed g(x) at values2. - EXPECT(assert_equal(Vector::Constant(1, 4.0), constraint.unwhitenedError(values2))); - EXPECT(assert_equal(Vector::Constant(1, 40), constraint.whitenedError(values2))); + EXPECT(assert_equal(Vector::Constant(1, 4.0), + constraint.unwhitenedError(values2))); + EXPECT( + assert_equal(Vector::Constant(1, 40), constraint.whitenedError(values2))); EXPECT(assert_equal(800, constraint.error(values2))); // Check dimension is 1 for scalar g. @@ -94,6 +102,7 @@ TEST(ExpressionEqualityConstraint, double) { EXPECT_CORRECT_FACTOR_JACOBIANS(*merit_factor, values2, 1e-7, 1e-5); } +/* ************************************************************************* */ // Test methods of VectorExpressionEquality. TEST(ExpressionEqualityConstraint, Vector2) { // g(v1, v2) = v1 + v2, our own example. @@ -101,7 +110,8 @@ TEST(ExpressionEqualityConstraint, Vector2) { Vector2_ x2_vec_expr(x2_key); auto g = x1_vec_expr + x2_vec_expr; auto sigmas = Vector2(0.1, 0.5); - auto constraint = ExpressionEqualityConstraint(g, Vector2::Zero(), sigmas); + auto constraint = + ExpressionEqualityConstraint(g, Vector2::Zero(), sigmas); EXPECT(constraint.noiseModel()->isConstrained()); EXPECT(assert_equal(sigmas, constraint.noiseModel()->sigmas())); @@ -118,20 +128,24 @@ TEST(ExpressionEqualityConstraint, Vector2) { // Check that violation evaluates as 0 at values1. auto expected_violation1 = (Vector(2) << 0, 0).finished(); - EXPECT(assert_equal(expected_violation1, constraint.unwhitenedError(values1))); + EXPECT( + assert_equal(expected_violation1, constraint.unwhitenedError(values1))); auto expected_scaled_violation1 = (Vector(2) << 0, 0).finished(); - EXPECT(assert_equal(expected_scaled_violation1, constraint.whitenedError(values1))); + EXPECT(assert_equal(expected_scaled_violation1, + constraint.whitenedError(values1))); // Check that values2 are indeed deemed infeasible. EXPECT(!constraint.feasible(values2)); // Check constraint violation is indeed g(x) at values2. auto expected_violation2 = (Vector(2) << 2, 2).finished(); - EXPECT(assert_equal(expected_violation2, constraint.unwhitenedError(values2))); + EXPECT( + assert_equal(expected_violation2, constraint.unwhitenedError(values2))); // Check scaled violation is indeed g(x)/sigmas at values2. auto expected_scaled_violation2 = (Vector(2) << 20, 4).finished(); - EXPECT(assert_equal(expected_scaled_violation2, constraint.whitenedError(values2))); + EXPECT(assert_equal(expected_scaled_violation2, + constraint.whitenedError(values2))); // Check dim is the dimension of the vector. EXPECT(constraint.dim() == 2); @@ -155,6 +169,7 @@ TEST(ExpressionEqualityConstraint, Vector2) { EXPECT_CORRECT_FACTOR_JACOBIANS(*merit_factor, values2, 1e-7, 1e-5); } +/* ************************************************************************* */ // Test methods of FactorZeroErrorConstraint. TEST(ZeroCostConstraint, BetweenFactor) { Key x1_key = 1; @@ -162,7 +177,8 @@ TEST(ZeroCostConstraint, BetweenFactor) { Vector sigmas = Vector2(0.5, 0.1); auto noise = noiseModel::Diagonal::Sigmas(sigmas); - auto factor = std::make_shared>(x1_key, x2_key, Vector2(1, 1), noise); + auto factor = std::make_shared>(x1_key, x2_key, + Vector2(1, 1), noise); auto constraint = ZeroCostConstraint(factor); EXPECT(constraint.noiseModel()->isConstrained()); @@ -180,20 +196,24 @@ TEST(ZeroCostConstraint, BetweenFactor) { // Check that violation evaluates as 0 at values1. auto expected_violation1 = (Vector(2) << 0, 0).finished(); - EXPECT(assert_equal(expected_violation1, constraint.unwhitenedError(values1))); + EXPECT( + assert_equal(expected_violation1, constraint.unwhitenedError(values1))); auto expected_scaled_violation1 = (Vector(2) << 0, 0).finished(); - EXPECT(assert_equal(expected_scaled_violation1, constraint.whitenedError(values1))); + EXPECT(assert_equal(expected_scaled_violation1, + constraint.whitenedError(values1))); // Check that values2 are indeed deemed infeasible. EXPECT(!constraint.feasible(values2)); // Check constraint violation is indeed g(x) at values2. auto expected_violation2 = (Vector(2) << 1, 2).finished(); - EXPECT(assert_equal(expected_violation2, constraint.unwhitenedError(values2))); + EXPECT( + assert_equal(expected_violation2, constraint.unwhitenedError(values2))); // Check scaled violation is indeed g(x)/sigmas at values2. auto expected_scaled_violation2 = (Vector(2) << 2, 20).finished(); - EXPECT(assert_equal(expected_scaled_violation2, constraint.whitenedError(values2))); + EXPECT(assert_equal(expected_scaled_violation2, + constraint.whitenedError(values2))); // Check dim is the dimension of the vector. EXPECT(constraint.dim() == 2); @@ -217,6 +237,7 @@ TEST(ZeroCostConstraint, BetweenFactor) { EXPECT_CORRECT_FACTOR_JACOBIANS(*merit_factor, values2, 1e-7, 1e-5); } +/* ************************************************************************* */ TEST(NonlinearEqualityConstraints, Container) { NonlinearEqualityConstraints constraints; @@ -227,8 +248,10 @@ TEST(NonlinearEqualityConstraints, Container) { auto g2 = x1_vec_expr + x2_vec_expr; Vector sigmas2 = Vector2(0.1, 0.5); - constraints.emplace_shared>(g1, 0.0, sigmas1); - constraints.emplace_shared>(g2, Vector2::Zero(), sigmas2); + constraints.emplace_shared>(g1, 0.0, + sigmas1); + constraints.emplace_shared>( + g2, Vector2::Zero(), sigmas2); // Check size. EXPECT_LONGS_EQUAL(2, constraints.size()); @@ -252,8 +275,56 @@ TEST(NonlinearEqualityConstraints, Container) { // Check constraint violation. } -TEST(NonlinearEqualityConstraints, FromCostGraph) {} +TEST(GtsamConstrained, VectorEqualityViolationVectorMixedDims) { + using namespace gtsam; + + const Symbol x_key('x', 0); // Pose3 (dim 6) + const Symbol p_key('p', 0); // Vector3 (dim 3) + + const Pose3_ x(x_key); + const Vector3_ p(p_key); + const Vector3_ world_point(x, &Pose3::transformFrom, p); + + // Create many constraints so the stacked violation vector is non-trivial. + // 28 * 3 = 84 to mirror real-world constraint stacks. + NonlinearEqualityConstraints constraints; + const Vector3 target(0.1, -0.2, 0.3); + const Vector3_ target_expr(target); + const Vector3_ error_expr = world_point - target_expr; + + // Use the "cost-factor wrapped as a constraint" path (ZeroCostConstraint), + // as this matches how downstream projects (like GTDynamics) typically + // construct constraints. + const auto noise = noiseModel::Isotropic::Sigma(3, 1.0); + for (size_t i = 0; i < 28; ++i) { + auto factor = std::make_shared>( + noise, Vector3::Zero(), error_expr); + constraints.emplace_shared(factor); + } + + Values values; + values.insert(x_key, Pose3()); + values.insert(p_key, Vector3(0.0, 0.0, 0.0)); + + // This call is the primary reproducer: it should return a finite vector with + // size 84. On affected platforms/builds it may abort inside Eigen. + const Vector v = constraints.violationVector(values); + EXPECT_LONGS_EQUAL(84, static_cast(v.size())); + for (int i = 0; i < static_cast(v.size()); ++i) { + EXPECT(std::isfinite(v(i))); + } + + // Also probe per-constraint violation evaluation, as some failures only show + // up when the constraint graph is small. + for (size_t i = 0; i < constraints.size(); ++i) { + NonlinearEqualityConstraints single; + single.push_back(constraints.at(i)); + const double norm = single.violationNorm(values); + EXPECT(std::isfinite(norm)); + } +} +/* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); diff --git a/gtsam/constrained/tests/testNonlinearInequalityConstraint.cpp b/gtsam/constrained/tests/testNonlinearInequalityConstraint.cpp index 4d9034daa2..6a626732a4 100644 --- a/gtsam/constrained/tests/testNonlinearInequalityConstraint.cpp +++ b/gtsam/constrained/tests/testNonlinearInequalityConstraint.cpp @@ -30,10 +30,11 @@ using constrained_example::pow; using constrained_example::x1, constrained_example::x2; using constrained_example::x1_key, constrained_example::x2_key; +/* ************************************************************************* */ // Test methods of DoubleExpressionEquality. TEST(NonlinearInequalityConstraint, ScalarExpressionInequalityConstraint) { // create constraint from double expression - // g(x1, x2) = x1 + x1^3 + x2 + x2^2, from Vanderbergh slides + // g(x1, x2) = x1 + x1^3 + x2 + x2^2, from Vandenberghe slides double sigma = 0.1; auto g = x1 + pow(x1, 3) + x2 + pow(x2, 2); auto constraint_geq = ScalarExpressionInequalityConstraint::GeqZero(g, sigma); @@ -111,6 +112,7 @@ TEST(NonlinearInequalityConstraint, ScalarExpressionInequalityConstraint) { EXPECT(assert_equal(3200.0, constraint_eq2->error(values3))); } +/* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); diff --git a/gtsam/constrained/tests/testPenaltyOptimizer.cpp b/gtsam/constrained/tests/testPenaltyOptimizer.cpp index 6ca8ebd29a..058e8327c7 100644 --- a/gtsam/constrained/tests/testPenaltyOptimizer.cpp +++ b/gtsam/constrained/tests/testPenaltyOptimizer.cpp @@ -10,8 +10,8 @@ * -------------------------------------------------------------------------- */ /** - * @file testPenaltyOptimizr.cpp - * @brief Test penalty method optimzier for constrained optimization. + * @file testPenaltyOptimizer.cpp + * @brief Test penalty method optimizer for constrained optimization. * @author: Yetong Zhang */ @@ -53,10 +53,10 @@ TEST(PenaltyOptimizer, constrained_example2) { // Check constructor from a single factor graph works { NonlinearFactorGraph graph = costs; - for (const auto& factor: eqConstraints) { + for (const auto& factor : eqConstraints) { graph.push_back(factor); } - for (const auto& factor: ineqConstraints) { + for (const auto& factor : ineqConstraints) { graph.push_back(factor); } PenaltyOptimizer optimizer(graph, init_values, params); @@ -65,9 +65,9 @@ TEST(PenaltyOptimizer, constrained_example2) { /// Check the result is correct within tolerance. EXPECT(assert_equal(optimal_values, results, 1e-4)); } - } +/* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); diff --git a/gtsam/discrete/DiscreteConditional.cpp b/gtsam/discrete/DiscreteConditional.cpp index e3ae18d12f..d65153da16 100644 --- a/gtsam/discrete/DiscreteConditional.cpp +++ b/gtsam/discrete/DiscreteConditional.cpp @@ -87,7 +87,7 @@ DiscreteConditional DiscreteConditional::operator*( } // Take union of frontal keys - std::set newFrontals; + KeySet newFrontals; for (auto&& key : this->frontals()) newFrontals.insert(key); for (auto&& key : other.frontals()) newFrontals.insert(key); diff --git a/gtsam/discrete/DiscreteKey.h b/gtsam/discrete/DiscreteKey.h index d200792c83..26d29e30ba 100644 --- a/gtsam/discrete/DiscreteKey.h +++ b/gtsam/discrete/DiscreteKey.h @@ -43,9 +43,6 @@ namespace gtsam { // Forward all constructors. using std::vector::vector; - /// Constructor for serialization - DiscreteKeys() : std::vector::vector() {} - /// Construct from a key explicit DiscreteKeys(const DiscreteKey& key) { push_back(key); } diff --git a/gtsam/discrete/DiscreteSearch.h b/gtsam/discrete/DiscreteSearch.h index db3dd5f03f..06dfb84f69 100644 --- a/gtsam/discrete/DiscreteSearch.h +++ b/gtsam/discrete/DiscreteSearch.h @@ -113,7 +113,7 @@ class GTSAM_EXPORT DiscreteSearch { /// Construct from a DiscreteJunctionTree. DiscreteSearch(const DiscreteJunctionTree& junctionTree); - //// Construct from a DiscreteBayesNet. + /// Construct from a DiscreteBayesNet. DiscreteSearch(const DiscreteBayesNet& bayesNet); /// Construct from a DiscreteBayesTree. diff --git a/gtsam/geometry/ExtendedPose3-inl.h b/gtsam/geometry/ExtendedPose3-inl.h new file mode 100644 index 0000000000..8cadbccb52 --- /dev/null +++ b/gtsam/geometry/ExtendedPose3-inl.h @@ -0,0 +1,395 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file ExtendedPose3-inl.h + * @brief Template implementations for ExtendedPose3 + * @author Frank Dellaert, et al. + */ + +#pragma once + +namespace gtsam { + +template +size_t ExtendedPose3::RuntimeK(const TangentVector& xi) { + if constexpr (K == Eigen::Dynamic) { + assert(xi.size() >= 3 && (xi.size() - 3) % 3 == 0); + return static_cast((xi.size() - 3) / 3); + } else { + return static_cast(K); + } +} + +template +void ExtendedPose3::ZeroJacobian(ChartJacobian H, Eigen::Index d) { + if (!H) return; + if constexpr (dimension == Eigen::Dynamic) { + H->setZero(d, d); + } else { + (void)d; + H->setZero(); + } +} + +template +ExtendedPose3::ExtendedPose3(const Rot3& R, const Matrix3K& x) + : R_(R), t_(x) {} + +template +ExtendedPose3::ExtendedPose3(const MatrixRep& T) { + const Eigen::Index n = T.rows(); + if constexpr (K == Eigen::Dynamic) { + if (T.cols() != n || n < 3) { + throw std::invalid_argument("ExtendedPose3: invalid matrix shape."); + } + t_.resize(3, n - 3); + } else { + if (n != matrixDim || T.cols() != matrixDim) { + throw std::invalid_argument("ExtendedPose3: invalid matrix shape."); + } + } + + R_ = Rot3(T.template block<3, 3>(0, 0)); + t_ = T.block(0, 3, 3, n - 3); +} + +template +const Rot3& ExtendedPose3::rotation(ComponentJacobian H) const { + if (H) { + if constexpr (dimension == Eigen::Dynamic) { + H->setZero(3, static_cast(dim())); + } else { + H->setZero(); + } + H->block(0, 0, 3, 3) = I_3x3; + } + return R_; +} + +template +Point3 ExtendedPose3::x(size_t i, ComponentJacobian H) const { + if (i >= k()) throw std::out_of_range("ExtendedPose3: x(i) out of range."); + if (H) { + if constexpr (dimension == Eigen::Dynamic) { + H->setZero(3, static_cast(dim())); + } else { + H->setZero(); + } + const Eigen::Index idx = 3 + 3 * static_cast(i); + H->block(0, idx, 3, 3) = R_.matrix(); + } + return t_.col(static_cast(i)); +} + +template +const typename ExtendedPose3::Matrix3K& +ExtendedPose3::xMatrix() const { + return t_; +} + +template +typename ExtendedPose3::Matrix3K& +ExtendedPose3::xMatrix() { + return t_; +} + +template +void ExtendedPose3::print(const std::string& s) const { + std::cout << (s.empty() ? s : s + " ") << *this << std::endl; +} + +template +bool ExtendedPose3::equals(const ExtendedPose3& other, + double tol) const { + return R_.equals(other.R_, tol) && equal_with_abs_tol(t_, other.t_, tol); +} + +template +typename ExtendedPose3::This ExtendedPose3::inverse() + const { + const Rot3 Rt = R_.inverse(); + const Matrix3K x = -(Rt.matrix() * t_); + return MakeReturn(ExtendedPose3(Rt, x)); +} + +template +typename ExtendedPose3::This ExtendedPose3::operator*( + const This& other) const { + const ExtendedPose3& otherBase = AsBase(other); + if constexpr (K == Eigen::Dynamic) { + if (k() != otherBase.k()) { + throw std::invalid_argument("ExtendedPose3: compose requires matching k."); + } + } + Matrix3K x = t_ + R_.matrix() * otherBase.t_; + return MakeReturn(ExtendedPose3(R_ * otherBase.R_, x)); +} + +// Expmap is implemented in so3::ExpmapFunctor::expmap, based on Ethan Eade's +// elegant Lie group document, at https://www.ethaneade.org/lie.pdf. +// See also [this document](doc/Jacobians.md) +template +typename ExtendedPose3::This ExtendedPose3::Expmap( + const TangentVector& xi, ChartJacobian Hxi) { + // Get angular velocity omega + const Vector3 w = xi.template head<3>(); + + // Instantiate functor for Dexp-related operations: + const so3::DexpFunctor local(w); + + // Compute rotation using Expmap +#ifdef GTSAM_USE_QUATERNIONS + // Reuse any quaternion-specific validation inside Rot3::Expmap. + const Rot3 R = Rot3::Expmap(w); +#else + const Rot3 R(local.expmap()); +#endif + + const Eigen::Index k = static_cast(RuntimeK(xi)); + + // The translation t = local.Jacobian().left() * v. + // Below we call local.Jacobian().applyLeft, which is faster if you don't need + // Jacobians, and returns Jacobian of t with respect to w if asked. + // NOTE(Frank): this does the same as the intuitive formulas: + // t_parallel = w * w.dot(v); // translation parallel to axis + // w_cross_v = w.cross(v); // translation orthogonal to axis + // t = (w_cross_v - Rot3::Expmap(w) * w_cross_v + t_parallel) / theta2; + // but Local does not need R, deals automatically with the case where theta2 + // is near zero, and also gives us the machinery for the Jacobians. + + Matrix3K x; + if constexpr (K == Eigen::Dynamic) x.resize(3, k); + + if (Hxi) { + ZeroJacobian(Hxi, 3 + 3 * k); + const Matrix3 Jr = local.Jacobian().right(); + Hxi->block(0, 0, 3, 3) = Jr; // Jr here *is* the Jacobian of expmap + const Matrix3 Rt = R.transpose(); + for (Eigen::Index i = 0; i < k; ++i) { + Matrix3 H_xi_w; + const Eigen::Index idx = 3 + 3 * i; + const Vector3 rho = xi.template segment<3>(idx); + x.col(i) = local.Jacobian().applyLeft(rho, &H_xi_w); + Hxi->block(idx, 0, 3, 3) = Rt * H_xi_w; + Hxi->block(idx, idx, 3, 3) = Jr; + // In the last row, Jr = R^T * Jl, see Barfoot eq. (8.83). + // Jl is the left Jacobian of SO(3) at w. + } + } else { + for (Eigen::Index i = 0; i < k; ++i) { + const Eigen::Index idx = 3 + 3 * i; + const Vector3 rho = xi.template segment<3>(idx); + x.col(i) = local.Jacobian().applyLeft(rho); + } + } + + return MakeReturn(ExtendedPose3(R, x)); +} + +template +typename ExtendedPose3::TangentVector +ExtendedPose3::Logmap(const This& pose, ChartJacobian H) { + const ExtendedPose3& poseBase = AsBase(pose); + const Vector3 w = Rot3::Logmap(poseBase.R_); + const so3::DexpFunctor local(w); + + TangentVector xi; + if constexpr (K == Eigen::Dynamic) + xi.resize(static_cast(poseBase.dim())); + xi.template head<3>() = w; + const Eigen::Index k = static_cast(poseBase.k()); + for (Eigen::Index i = 0; i < k; ++i) { + const Eigen::Index idx = 3 + 3 * i; + xi.template segment<3>(idx) = + local.InvJacobian().applyLeft(poseBase.t_.col(i)); + } + + if (H) *H = LogmapDerivative(xi); + return xi; +} + +template +typename ExtendedPose3::Jacobian +ExtendedPose3::AdjointMap() const { + const Matrix3 R = R_.matrix(); + + Jacobian adj; + if constexpr (dimension == Eigen::Dynamic) { + adj.setZero(dim(), dim()); + } else { + adj.setZero(); + } + + adj.block(0, 0, 3, 3) = R; + const Eigen::Index k = static_cast(this->k()); + for (Eigen::Index i = 0; i < k; ++i) { + const Eigen::Index idx = 3 + 3 * i; + adj.block(idx, 0, 3, 3) = skewSymmetric(t_.col(i)) * R; + adj.block(idx, idx, 3, 3) = R; + } + return adj; +} + +template +typename ExtendedPose3::Jacobian +ExtendedPose3::adjointMap(const TangentVector& xi) { + const Matrix3 w_hat = skewSymmetric(xi(0), xi(1), xi(2)); + + const Eigen::Index k = static_cast(RuntimeK(xi)); + + Jacobian adj; + if constexpr (dimension == Eigen::Dynamic) { + adj.setZero(3 + 3 * k, 3 + 3 * k); + } else { + adj.setZero(); + } + + adj.block(0, 0, 3, 3) = w_hat; + for (Eigen::Index i = 0; i < k; ++i) { + const Eigen::Index idx = 3 + 3 * i; + adj.block(idx, 0, 3, 3) = + skewSymmetric(xi(idx + 0), xi(idx + 1), xi(idx + 2)); + adj.block(idx, idx, 3, 3) = w_hat; + } + return adj; +} + +template +typename ExtendedPose3::Jacobian +ExtendedPose3::ExpmapDerivative(const TangentVector& xi) { + Jacobian J; + Expmap(xi, J); + return J; +} + +template +typename ExtendedPose3::Jacobian +ExtendedPose3::LogmapDerivative(const TangentVector& xi) { + const Vector3 w = xi.template head<3>(); + + // Instantiate functor for Dexp-related operations: + const so3::DexpFunctor local(w); + + const Eigen::Index k = static_cast(RuntimeK(xi)); + const Matrix3 Rt = local.expmap().transpose(); + const Matrix3 Jw = Rot3::LogmapDerivative(w); + + Jacobian J; + if constexpr (dimension == Eigen::Dynamic) { + J.setZero(3 + 3 * k, 3 + 3 * k); + } else { + J.setZero(); + } + + J.block(0, 0, 3, 3) = Jw; + for (Eigen::Index i = 0; i < k; ++i) { + Matrix3 H_xi_w; + const Eigen::Index idx = 3 + 3 * i; + local.Jacobian().applyLeft(xi.template segment<3>(idx), H_xi_w); + const Matrix3 Q = Rt * H_xi_w; + J.block(idx, 0, 3, 3) = -Jw * Q * Jw; + J.block(idx, idx, 3, 3) = Jw; + } + return J; +} + +template +typename ExtendedPose3::Jacobian +ExtendedPose3::LogmapDerivative(const This& pose) { + return LogmapDerivative(Logmap(pose)); +} + +template +typename ExtendedPose3::This +ExtendedPose3::ChartAtOrigin::Retract(const TangentVector& xi, + ChartJacobian Hxi) { + return ExtendedPose3::Expmap(xi, Hxi); +} + +template +typename ExtendedPose3::TangentVector +ExtendedPose3::ChartAtOrigin::Local(const This& pose, + ChartJacobian H) { + return ExtendedPose3::Logmap(pose, H); +} + +template +typename ExtendedPose3::MatrixRep +ExtendedPose3::matrix() const { + MatrixRep M; + if constexpr (matrixDim == Eigen::Dynamic) { + const Eigen::Index k = static_cast(this->k()); + const Eigen::Index n = 3 + k; + M = MatrixRep::Identity(n, n); + } else { + M = MatrixRep::Identity(); + } + M.template block<3, 3>(0, 0) = R_.matrix(); + M.block(0, 3, 3, static_cast(this->k())) = t_; + return M; +} + +template +typename ExtendedPose3::LieAlgebra ExtendedPose3::Hat( + const TangentVector& xi) { + const Eigen::Index k = static_cast(RuntimeK(xi)); + LieAlgebra X; + if constexpr (matrixDim == Eigen::Dynamic) { + X.setZero(3 + k, 3 + k); + } else { + X.setZero(); + } + X.block(0, 0, 3, 3) = skewSymmetric(xi(0), xi(1), xi(2)); + for (Eigen::Index i = 0; i < k; ++i) { + const Eigen::Index idx = 3 + 3 * i; + X.block(0, 3 + i, 3, 1) = xi.template segment<3>(idx); + } + return X; +} + +template +typename ExtendedPose3::TangentVector +ExtendedPose3::Vee(const LieAlgebra& X) { + if (X.rows() != X.cols() || X.rows() < 3) { + throw std::invalid_argument("ExtendedPose3::Vee: invalid matrix shape."); + } + + const Eigen::Index k = [&]() -> Eigen::Index { + if constexpr (K == Eigen::Dynamic) { + return X.cols() - 3; + } else { + if (X.rows() != matrixDim) { + throw std::invalid_argument( + "ExtendedPose3::Vee: invalid matrix shape."); + } + return static_cast(K); + } + }(); + + TangentVector xi; + if constexpr (dimension == Eigen::Dynamic) { + xi.resize(3 + 3 * k); + xi.setZero(); + } else { + xi.setZero(); + } + xi(0) = X(2, 1); + xi(1) = X(0, 2); + xi(2) = X(1, 0); + for (Eigen::Index i = 0; i < k; ++i) { + const Eigen::Index idx = 3 + 3 * i; + xi.template segment<3>(idx) = X.template block<3, 1>(0, 3 + i); + } + return xi; +} + +} // namespace gtsam diff --git a/gtsam/geometry/ExtendedPose3.cpp b/gtsam/geometry/ExtendedPose3.cpp new file mode 100644 index 0000000000..128233cd18 --- /dev/null +++ b/gtsam/geometry/ExtendedPose3.cpp @@ -0,0 +1,28 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file ExtendedPose3.cpp + * @brief Explicit instantiations for ExtendedPose3 + * @author Frank Dellaert, et al. + */ + +#include + +namespace gtsam { + +template class GTSAM_EXPORT ExtendedPose3<1>; +template class GTSAM_EXPORT ExtendedPose3<2>; +template class GTSAM_EXPORT ExtendedPose3<3>; +template class GTSAM_EXPORT ExtendedPose3<4>; +template class GTSAM_EXPORT ExtendedPose3<6>; + +} // namespace gtsam diff --git a/gtsam/geometry/ExtendedPose3.h b/gtsam/geometry/ExtendedPose3.h new file mode 100644 index 0000000000..0d121a94b1 --- /dev/null +++ b/gtsam/geometry/ExtendedPose3.h @@ -0,0 +1,410 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file ExtendedPose3.h + * @brief Extended pose Lie group SE_k(3), with static or dynamic k. + * @author Frank Dellaert, et al. + */ + +#pragma once + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#if GTSAM_ENABLE_BOOST_SERIALIZATION +#include +#endif + +namespace gtsam { + +template +class ExtendedPose3; + +/** + * Lie group SE_k(3): semidirect product of SO(3) with k copies of R^3. + * State ordering is (R, x_1, ..., x_k) with R in SO(3) and x_i in R^3. + * Tangent ordering is [omega, rho_1, ..., rho_k], each block in R^3. + * + * The manifold dimension is 3+3k and the homogeneous matrix size is 3+k. + * Template parameter K can be fixed (K >= 1) or Eigen::Dynamic. + */ +template +class ExtendedPose3 + : public MatrixLieGroup, + ExtendedPose3, Derived>, + (K == Eigen::Dynamic) ? Eigen::Dynamic : 3 + 3 * K, + (K == Eigen::Dynamic) ? Eigen::Dynamic : 3 + K> { + public: + using This = std::conditional_t, + ExtendedPose3, Derived>; + inline constexpr static int dimension = + (K == Eigen::Dynamic) ? Eigen::Dynamic : 3 + 3 * K; + inline constexpr static int matrixDim = + (K == Eigen::Dynamic) ? Eigen::Dynamic : 3 + K; + + using Base = MatrixLieGroup; + using TangentVector = typename Base::TangentVector; + using Jacobian = typename Base::Jacobian; + using ChartJacobian = typename Base::ChartJacobian; + using ComponentJacobian = + std::conditional_t, + OptionalJacobian<3, dimension>>; + /// Homogeneous matrix representation in the group. + using MatrixRep = Eigen::Matrix; + /// Lie algebra matrix type used by Hat/Vee. + using LieAlgebra = Eigen::Matrix; + using Matrix3K = Eigen::Matrix; + + static_assert(K == Eigen::Dynamic || K >= 1, + "ExtendedPose3: K should be >= 1 or Eigen::Dynamic."); + + protected: + Rot3 R_; ///< Rotation component. + Matrix3K t_; ///< K translation-like columns in world frame. + + template + using IsDynamic = typename std::enable_if::type; + template + using IsFixed = typename std::enable_if= 1, void>::type; + + public: + /// @name Constructors + /// @{ + + /** + * Construct a fixed-size identity element. + * + * For fixed K, this creates R=I and x_i=0 for i=1..k. + * The manifold dimension is 3+3k and matrix size is (3+k)x(3+k). + */ + template > + ExtendedPose3() : R_(Rot3::Identity()), t_(Matrix3K::Zero()) {} + + /** + * Construct a dynamic-size identity element. + * + * @param k Number of R^3 blocks. + * Creates R=I and x_i=0 for i=1..k. + * The manifold dimension is 3+3k and matrix size is (3+k)x(3+k). + */ + template > + explicit ExtendedPose3(size_t k = 0) + : R_(Rot3::Identity()), t_(3, static_cast(k)) { + t_.setZero(); + } + + /** Copy constructor. */ + ExtendedPose3(const ExtendedPose3&) = default; + + /** Copy assignment. */ + ExtendedPose3& operator=(const ExtendedPose3&) = default; + + /** + * Construct from rotation and 3xk block. + * + * @param R Rotation in SO(3). + * @param x Matrix in R^(3xk), where column i stores x_i. + */ + ExtendedPose3(const Rot3& R, const Matrix3K& x); + + /** + * Construct from homogeneous matrix representation. + * + * @param T Homogeneous matrix in R^((3+k)x(3+k)). + * Top-left 3x3 is R, top-right 3xk stores x_1..x_k. + */ + explicit ExtendedPose3(const MatrixRep& T); + + /// @} + /// @name Access + /// @{ + + /** + * Runtime manifold dimension helper. + * + * @param k Number of R^3 blocks. + * @return 3+3k. + */ + static size_t Dimension(size_t k) { return 3 + 3 * k; } + + /** @return Number of R^3 blocks, k. */ + size_t k() const { return static_cast(t_.cols()); } + + /** @return Runtime manifold dimension, 3+3k. */ + size_t dim() const { return Dimension(k()); } + + /** + * Rotation component. + * + * @param H Optional Jacobian in R^(3xdim) for local rotation coordinates. + * @return Rotation R. + */ + const Rot3& rotation(ComponentJacobian H = {}) const; + + /** + * i-th R^3 component, returned by value. + * + * @param i Zero-based block index in [0, k). + * @param H Optional Jacobian in R^(3xdim). + * @return x_i in R^3. + */ + Point3 x(size_t i, ComponentJacobian H = {}) const; + + /** + * Access all x_i blocks. + * + * @return Matrix in R^(3xk) with columns x_1..x_k. + */ + const Matrix3K& xMatrix() const; + + /** + * Mutable access to all x_i blocks. + * + * @return Matrix in R^(3xk) with columns x_1..x_k. + */ + Matrix3K& xMatrix(); + + /// @} + /// @name Testable + /// @{ + + /** + * Print this state. + * + * @param s Optional prefix string. + */ + void print(const std::string& s = "") const; + + /** + * Equality check with tolerance. + * + * @param other Other state. + * @param tol Absolute tolerance. + * @return True if rotation and all x_i blocks are equal within tol. + */ + bool equals(const ExtendedPose3& other, double tol = 1e-9) const; + + /// @} + /// @name Group + /// @{ + + /** + * Identity element for fixed-size K. + * + * @return Identity with manifold dimension 3+3k and matrix size 3+k. + */ + template > + static This Identity() { + return MakeReturn(ExtendedPose3()); + } + + /** + * Identity element for dynamic-size K. + * + * @param k Number of R^3 blocks. + * @return Identity with manifold dimension 3+3k and matrix size 3+k. + */ + template > + static This Identity(size_t k = 0) { + return MakeReturn(ExtendedPose3(k)); + } + + /** + * Group inverse. + * + * @return X^{-1}. + */ + This inverse() const; + + /** + * Group composition. + * + * @param other Right-hand operand with the same k. + * @return this * other. + */ + This operator*(const This& other) const; + + /// @} + /// @name Lie Group + /// @{ + + /** + * Exponential map from tangent to group. + * + * @param xi Tangent vector in R^dim. + * @param Hxi Optional Jacobian in R^(dimxdim). + * @return Group element in SE_k(3). + */ + static This Expmap(const TangentVector& xi, ChartJacobian Hxi = {}); + + /** + * Logarithm map from group to tangent. + * + * @param pose Group element in SE_k(3). + * @param Hpose Optional Jacobian in R^(dimxdim). + * @return Tangent vector in R^dim. + */ + static TangentVector Logmap(const This& pose, ChartJacobian Hpose = {}); + + /** + * Adjoint map. + * + * @return Matrix in R^(dimxdim). + */ + Jacobian AdjointMap() const; + + /** + * Lie algebra adjoint map. + * + * @param xi Tangent vector in R^dim. + * @return ad_xi matrix in R^(dimxdim). + */ + static Jacobian adjointMap(const TangentVector& xi); + + /** + * Jacobian of Expmap. + * + * @param xi Tangent vector in R^dim. + * @return Matrix in R^(dimxdim). + */ + static Jacobian ExpmapDerivative(const TangentVector& xi); + + /** + * Jacobian of Logmap evaluated from tangent coordinates. + * + * @param xi Tangent vector in R^dim. + * @return Matrix in R^(dimxdim). + */ + static Jacobian LogmapDerivative(const TangentVector& xi); + + /** + * Jacobian of Logmap evaluated at a group element. + * + * @param pose Group element in SE_k(3). + * @return Matrix in R^(dimxdim). + */ + static Jacobian LogmapDerivative(const This& pose); + + /** Chart operations at identity for LieGroup/Manifold compatibility. */ + struct ChartAtOrigin { + /** + * Retract at identity. + * + * @param xi Tangent vector in R^dim. + * @param Hxi Optional Jacobian in R^(dimxdim). + * @return Expmap(xi). + */ + static This Retract(const TangentVector& xi, ChartJacobian Hxi = {}); + + /** + * Local coordinates at identity. + * + * @param pose Group element in SE_k(3). + * @param Hpose Optional Jacobian in R^(dimxdim). + * @return Logmap(pose) in R^dim. + */ + static TangentVector Local(const This& pose, ChartJacobian Hpose = {}); + }; + + using LieGroup::inverse; + + /// @} + /// @name Matrix Lie Group + /// @{ + + /** + * Homogeneous matrix representation. + * + * @return Matrix in R^((3+k)x(3+k)). + */ + MatrixRep matrix() const; + + /** + * Hat operator from tangent to Lie algebra. + * + * @param xi Tangent vector in R^dim. + * @return Matrix in R^((3+k)x(3+k)). + */ + static LieAlgebra Hat(const TangentVector& xi); + + /** + * Vee operator from Lie algebra to tangent. + * + * @param X Matrix in R^((3+k)x(3+k)). + * @return Tangent vector in R^dim. + */ + static TangentVector Vee(const LieAlgebra& X); + + /// @} + + friend std::ostream& operator<<(std::ostream& os, const ExtendedPose3& p) { + os << "R: " << p.R_ << "\n"; + os << "x: " << p.t_; + return os; + } + + protected: + static This MakeReturn(const ExtendedPose3& value) { + if constexpr (std::is_void_v) { + return value; + } else { + return This(value); + } + } + + static const ExtendedPose3& AsBase(const This& value) { + if constexpr (std::is_void_v) { + return value; + } else { + return static_cast(value); + } + } + + static size_t RuntimeK(const TangentVector& xi); + static void ZeroJacobian(ChartJacobian H, Eigen::Index d); + + private: +#if GTSAM_ENABLE_BOOST_SERIALIZATION + friend class boost::serialization::access; + template + void serialize(Archive& ar, const unsigned int /*version*/) { + ar& BOOST_SERIALIZATION_NVP(R_); + ar& BOOST_SERIALIZATION_NVP(t_); + } +#endif +}; + +/// Convenience typedef for dynamic k. +using ExtendedPose3Dynamic = ExtendedPose3; + +template +struct traits> + : public internal::MatrixLieGroup, + ExtendedPose3::matrixDim> {}; + +template +struct traits> + : public internal::MatrixLieGroup, + ExtendedPose3::matrixDim> {}; + +} // namespace gtsam + +#include "ExtendedPose3-inl.h" diff --git a/gtsam/geometry/Gal3.cpp b/gtsam/geometry/Gal3.cpp index 836f52bc7f..abcc05eeb4 100644 --- a/gtsam/geometry/Gal3.cpp +++ b/gtsam/geometry/Gal3.cpp @@ -169,6 +169,45 @@ const double& Gal3::time(OptionalJacobian<1, 10> H) const { return t_; } +//------------------------------------------------------------------------------ +double Gal3::range(const Point3& point, OptionalJacobian<1, 10> Hself, + OptionalJacobian<1, 3> Hpoint) const { + const Vector3 delta = point - r_; + const double r = delta.norm(); + if (!Hself && !Hpoint) return r; + + const Vector3 u = delta / r; // unit vector from translation to point + const Matrix13 D_r_point = u.transpose(); + + if (Hpoint) *Hpoint = D_r_point; + if (Hself) { + Hself->setZero(); + // translation() = r + R * dRho + v * dAlpha, so chain those. + Hself->block<1, 3>(0, 6) = -D_r_point * R_.matrix(); // rho + (*Hself)(0, 9) = -D_r_point.dot(v_); // alpha + } + return r; +} + +//------------------------------------------------------------------------------ +Unit3 Gal3::bearing(const Point3& point, OptionalJacobian<2, 10> Hself, + OptionalJacobian<2, 3> Hpoint) const { + const Pose3 pose(R_, r_); + Matrix26 Hpose; + OptionalJacobian<2, 6> HposeOptional(Hself ? &Hpose : nullptr); + const Unit3 b = pose.bearing(point, HposeOptional, Hpoint); + + if (Hself) { + Hself->setZero(); + Hself->block<2, 3>(0, 0) = Hpose.block<2, 3>(0, 0); // w + Hself->block<2, 3>(0, 6) = Hpose.block<2, 3>(0, 3); // rho + + const Vector3 bodyVelocity = R_.unrotate(v_); + Hself->col(9) = Hpose.block<2, 3>(0, 3) * bodyVelocity; // alpha + } + return b; +} + //------------------------------------------------------------------------------ Matrix5 Gal3::matrix() const { // Returns 5x5 matrix representation as in Equation 9, Page 5 @@ -350,29 +389,6 @@ Gal3::Jacobian Gal3::AdjointMap() const { return Ad; } -//------------------------------------------------------------------------------ -Gal3::TangentVector Gal3::Adjoint(const TangentVector& xi, OptionalJacobian<10, 10> H_g, OptionalJacobian<10, 10> H_xi) const { - Jacobian Ad = AdjointMap(); - TangentVector y = Ad * xi; - - if (H_xi) { - *H_xi = Ad; - } - - if (H_g) { - // NOTE: Using numerical derivative for the Jacobian with respect to - // the group element instead of deriving the analytical expression. - // Future work to use analytical instead. - std::function adjoint_action_wrt_g = - [&](const Gal3& g_in, const TangentVector& xi_in) { - return g_in.Adjoint(xi_in); - }; - *H_g = numericalDerivative21(adjoint_action_wrt_g, *this, xi, 1e-7); - } - return y; -} - -//------------------------------------------------------------------------------ Gal3::Jacobian Gal3::adjointMap(const TangentVector& xi) { // Implements adjoint representation as in Equation 28, Page 10 const Matrix3 Omega = skewSymmetric(xi_w(xi)); @@ -389,16 +405,6 @@ Gal3::Jacobian Gal3::adjointMap(const TangentVector& xi) { return ad; } -//------------------------------------------------------------------------------ -Gal3::TangentVector Gal3::adjoint(const TangentVector& xi, const TangentVector& y, OptionalJacobian<10, 10> Hxi, OptionalJacobian<10, 10> Hy) { - Jacobian ad_xi = adjointMap(xi); - if (Hy) *Hy = ad_xi; - if (Hxi) { - *Hxi = -adjointMap(y); - } - return ad_xi * y; -} - //------------------------------------------------------------------------------ Gal3::Jacobian Gal3::ExpmapDerivative(const TangentVector& xi) { Gal3::Jacobian J; diff --git a/gtsam/geometry/Gal3.h b/gtsam/geometry/Gal3.h index a34bc7a2ae..f824898007 100644 --- a/gtsam/geometry/Gal3.h +++ b/gtsam/geometry/Gal3.h @@ -18,6 +18,7 @@ #include #include +#include #include #include // For std::sqrt, std::cos, std::sin @@ -113,6 +114,22 @@ class GTSAM_EXPORT Gal3 : public MatrixLieGroup { /// Return time scalar const double& t() const { return t_; } + /** + * Calculate range to a 3D landmark. + * @param point 3D location of landmark + * @return range (double) + */ + double range(const Point3& point, OptionalJacobian<1, 10> Hself = {}, + OptionalJacobian<1, 3> Hpoint = {}) const; + + /** + * Calculate bearing to a 3D landmark. + * @param point 3D location of landmark + * @return bearing (Unit3) + */ + Unit3 bearing(const Point3& point, OptionalJacobian<2, 10> Hself = {}, + OptionalJacobian<2, 3> Hpoint = {}) const; + /// @} /// @name Testable /// @{ @@ -171,17 +188,6 @@ class GTSAM_EXPORT Gal3 : public MatrixLieGroup { /// Calculate Adjoint map Ad_g Jacobian AdjointMap() const; - /// Apply this element's AdjointMap Ad_g to a tangent vector xi_base at - /// identity - TangentVector Adjoint(const TangentVector& xi_base, - OptionalJacobian<10, 10> H_g = {}, - OptionalJacobian<10, 10> H_xi = {}) const; - - /// The adjoint action `ad(xi, y)` = `adjointMap(xi) * y` - static TangentVector adjoint(const TangentVector& xi, const TangentVector& y, - OptionalJacobian<10, 10> Hxi = {}, - OptionalJacobian<10, 10> Hy = {}); - /// Compute the adjoint map `ad(xi)` associated with tangent vector xi static Jacobian adjointMap(const TangentVector& xi); @@ -242,4 +248,11 @@ struct traits : public internal::MatrixLieGroup {}; template <> struct traits : public internal::MatrixLieGroup {}; +// bearing and range traits, used in RangeFactor and BearingFactor +template <> +struct Bearing : HasBearing {}; + +template <> +struct Range : HasRange {}; + } // namespace gtsam diff --git a/gtsam/geometry/Pose2.h b/gtsam/geometry/Pose2.h index 2fd5d34dc5..5da5c24ab4 100644 --- a/gtsam/geometry/Pose2.h +++ b/gtsam/geometry/Pose2.h @@ -158,30 +158,11 @@ class GTSAM_EXPORT Pose2: public MatrixLieGroup { */ Matrix3 AdjointMap() const; - /// Apply AdjointMap to twist xi - inline Vector3 Adjoint(const Vector3& xi) const { - return AdjointMap()*xi; - } - /** * Compute the [ad(w,v)] operator for SE2 as in [Kobilarov09siggraph], pg 19 */ static Matrix3 adjointMap(const Vector3& v); - /** - * Action of the adjointMap on a Lie-algebra vector y, with optional derivatives - */ - static Vector3 adjoint(const Vector3& xi, const Vector3& y) { - return adjointMap(xi) * y; - } - - /** - * The dual version of adjoint action, acting on the dual space of the Lie-algebra vector space. - */ - static Vector3 adjointTranspose(const Vector3& xi, const Vector3& y) { - return adjointMap(xi).transpose() * y; - } - // temporary fix for wrappers until case issue is resolved static Matrix3 adjointMap_(const Vector3 &xi) { return adjointMap(xi);} static Vector3 adjoint_(const Vector3 &xi, const Vector3 &y) { return adjoint(xi, y);} @@ -393,4 +374,3 @@ template struct Range : HasRange {}; } // namespace gtsam - diff --git a/gtsam/geometry/Pose3.cpp b/gtsam/geometry/Pose3.cpp index 99decd5818..846be08064 100644 --- a/gtsam/geometry/Pose3.cpp +++ b/gtsam/geometry/Pose3.cpp @@ -31,10 +31,9 @@ namespace gtsam { GTSAM_CONCEPT_POSE_INST(Pose3) /* ************************************************************************* */ -Pose3::Pose3(const Pose2& pose2) : - R_(Rot3::Rodrigues(0, 0, pose2.theta())), t_( - Point3(pose2.x(), pose2.y(), 0)) { -} +Pose3::Pose3(const Pose2& pose2) + : Base(Rot3::Rodrigues(0, 0, pose2.theta()), + Vector3(pose2.x(), pose2.y(), 0.0)) {} /* ************************************************************************* */ Pose3 Pose3::Create(const Rot3& R, const Point3& t, OptionalJacobian<6, 3> HR, @@ -58,124 +57,6 @@ Pose3 Pose3::FromPose2(const Pose2& p, OptionalJacobian<6, 3> H) { return Pose3(p); } -/* ************************************************************************* */ -Pose3 Pose3::inverse() const { - Rot3 Rt = R_.inverse(); - return Pose3(Rt, Rt * (-t_)); -} - -/* ************************************************************************* */ -// Calculate Adjoint map -// Ad_pose is 6*6 matrix that when applied to twist xi, returns Ad_pose(xi) -Matrix6 Pose3::AdjointMap() const { - const Matrix3 R = R_.matrix(); - Matrix3 A = skewSymmetric(t_.x(), t_.y(), t_.z()) * R; - Matrix6 adj; - adj << R, Z_3x3, A, R; // Gives [R 0; A R] - return adj; -} - -/* ************************************************************************* */ -// Calculate AdjointMap applied to xi_b, with Jacobians -Vector6 Pose3::Adjoint(const Vector6& xi_b, OptionalJacobian<6, 6> H_pose, - OptionalJacobian<6, 6> H_xib) const { - const Matrix6 Ad = AdjointMap(); - - // Jacobians - // D1 Ad_T(xi_b) = D1 Ad_T Ad_I(xi_b) = Ad_T * D1 Ad_I(xi_b) = Ad_T * ad_xi_b - // D2 Ad_T(xi_b) = Ad_T - // See docs/math.pdf for more details. - // In D1 calculation, we could be more efficient by writing it out, but do not - // for readability - if (H_pose) *H_pose = -Ad * adjointMap(xi_b); - if (H_xib) *H_xib = Ad; - - return Ad * xi_b; -} - -/* ************************************************************************* */ -/// The dual version of Adjoint -Vector6 Pose3::AdjointTranspose(const Vector6& x, OptionalJacobian<6, 6> H_pose, - OptionalJacobian<6, 6> H_x) const { - const Matrix6 Ad = AdjointMap(); - const Vector6 AdTx = Ad.transpose() * x; - - // Jacobians - // See docs/math.pdf for more details. - if (H_pose) { - const auto w_T_hat = skewSymmetric(AdTx.head<3>()), - v_T_hat = skewSymmetric(AdTx.tail<3>()); - *H_pose << w_T_hat, v_T_hat, // - /* */ v_T_hat, Z_3x3; - } - if (H_x) { - *H_x = Ad.transpose(); - } - - return AdTx; -} - -/* ************************************************************************* */ -Matrix6 Pose3::adjointMap(const Vector6& xi) { - Matrix3 w_hat = skewSymmetric(xi(0), xi(1), xi(2)); - Matrix3 v_hat = skewSymmetric(xi(3), xi(4), xi(5)); - Matrix6 adj; - adj << w_hat, Z_3x3, v_hat, w_hat; - - return adj; -} - -/* ************************************************************************* */ -Vector6 Pose3::adjoint(const Vector6& xi, const Vector6& y, - OptionalJacobian<6, 6> Hxi, OptionalJacobian<6, 6> H_y) { - if (Hxi) { - Hxi->setZero(); - for (int i = 0; i < 6; ++i) { - Vector6 dxi; - dxi.setZero(); - dxi(i) = 1.0; - Matrix6 Gi = adjointMap(dxi); - Hxi->col(i) = Gi * y; - } - } - const Matrix6& ad_xi = adjointMap(xi); - if (H_y) *H_y = ad_xi; - return ad_xi * y; -} - -/* ************************************************************************* */ -Vector6 Pose3::adjointTranspose(const Vector6& xi, const Vector6& y, - OptionalJacobian<6, 6> Hxi, OptionalJacobian<6, 6> H_y) { - if (Hxi) { - Hxi->setZero(); - for (int i = 0; i < 6; ++i) { - Vector6 dxi; - dxi.setZero(); - dxi(i) = 1.0; - Matrix6 GTi = adjointMap(dxi).transpose(); - Hxi->col(i) = GTi * y; - } - } - const Matrix6& adT_xi = adjointMap(xi).transpose(); - if (H_y) *H_y = adT_xi; - return adT_xi * y; -} - -/* ************************************************************************* */ -Matrix4 Pose3::Hat(const Vector6& xi) { - Matrix4 X; - const double wx = xi(0), wy = xi(1), wz = xi(2), vx = xi(3), vy = xi(4), vz = xi(5); - X << 0., -wz, wy, vx, wz, 0., -wx, vy, -wy, wx, 0., vz, 0., 0., 0., 0.; - return X; -} - -/* ************************************************************************* */ -Vector6 Pose3::Vee(const Matrix4& Xi) { - Vector6 xi; - xi << Xi(2, 1), Xi(0, 2), Xi(1, 0), Xi(0, 3), Xi(1, 3), Xi(2, 3); - return xi; -} - /* ************************************************************************* */ void Pose3::print(const std::string& s) const { std::cout << (s.empty() ? s : s + " ") << *this << std::endl; @@ -209,13 +90,9 @@ Pose3 Pose3::interpolateRt(const Pose3& T, double t, } return Pose3(interpolate(R_, T.R_, t), interpolate(t_, T.t_, t)); - } /* ************************************************************************* */ -// Expmap is implemented in so3::ExpmapFunctor::expmap, based on Ethan Eade's -// elegant Lie group document, at https://www.ethaneade.org/lie.pdf. -// See also [this document](doc/Jacobians.md) Pose3 Pose3::Expmap(const Vector6& xi, OptionalJacobian<6, 6> Hxi) { // Get angular velocity omega and translational velocity v from twist xi const Vector3 w = xi.head<3>(), v = xi.tail<3>(); @@ -231,57 +108,33 @@ Pose3 Pose3::Expmap(const Vector6& xi, OptionalJacobian<6, 6> Hxi) { #endif // The translation t = local.Jacobian().left() * v. - // Here we call local.Jacobian().applyLeft, which is faster if you don't need - // Jacobians, and returns Jacobian of t with respect to w if asked. - // NOTE(Frank): this does the same as the intuitive formulas: - // t_parallel = w * w.dot(v); // translation parallel to axis - // w_cross_v = w.cross(v); // translation orthogonal to axis - // t = (w_cross_v - Rot3::Expmap(w) * w_cross_v + t_parallel) / theta2; - // but Local does not need R, deals automatically with the case where theta2 - // is near zero, and also gives us the machinery for the Jacobians. Matrix3 H; const Vector3 t = local.Jacobian().applyLeft(v, Hxi ? &H : nullptr); if (Hxi) { // The Jacobian of expmap is given by the right Jacobian of SO(3): const Matrix3 Jr = local.Jacobian().right(); - // We are creating a Pose3, so we still need to chain H with R^T, the - // Jacobian of Pose3::Create with respect to t. + // Chain H with R^T, the Jacobian of Pose3::Create with respect to t. const Matrix3 Rt = R.transpose(); *Hxi << Jr, Z_3x3, // Jr here *is* the Jacobian of expmap - Rt * H, Jr; // Here Jr = R^T * Jl, with Jl the Jacobian of t in v. + Rt * H, Jr; // Jr = R^T * Jl, with Jl Jacobian of t in v. } return Pose3(R, t); } -/* ************************************************************************* */ -Vector6 Pose3::Logmap(const Pose3& pose, OptionalJacobian<6, 6> Hpose) { - const Vector3 w = Rot3::Logmap(pose.rotation()); - - // Instantiate functor for Dexp-related operations: - const so3::DexpFunctor local(w); - - const Vector3 t = pose.translation(); - const Vector3 u = local.InvJacobian().applyLeft(t); - Vector6 xi; - xi << w, u; - if (Hpose) *Hpose = LogmapDerivative(xi); - return xi; -} - /* ************************************************************************* */ Pose3 Pose3::ChartAtOrigin::Retract(const Vector6& xi, ChartJacobian Hxi) { #ifdef GTSAM_POSE3_EXPMAP return Expmap(xi, Hxi); #else Matrix3 DR; - Rot3 R = Rot3::Retract(xi.head<3>(), Hxi ? &DR : 0); + const Rot3 R = Rot3::Retract(xi.head<3>(), Hxi ? &DR : nullptr); if (Hxi) { - *Hxi = I_6x6; - Hxi->topLeftCorner<3, 3>() = DR; + Hxi->setIdentity(); + Hxi->block<3, 3>(0, 0) = DR; } - return Pose3(R, Point3(xi.tail<3>())); + return Pose3(R, xi.tail<3>()); #endif } @@ -291,99 +144,23 @@ Vector6 Pose3::ChartAtOrigin::Local(const Pose3& pose, ChartJacobian Hpose) { return Logmap(pose, Hpose); #else Matrix3 DR; - Vector3 omega = Rot3::LocalCoordinates(pose.rotation(), Hpose ? &DR : 0); + Vector6 xi; + xi.head<3>() = Rot3::LocalCoordinates(pose.rotation(), Hpose ? &DR : nullptr); + xi.tail<3>() = pose.translation(); if (Hpose) { - *Hpose = I_6x6; - Hpose->topLeftCorner<3, 3>() = DR; + Hpose->setIdentity(); + Hpose->block<3, 3>(0, 0) = DR; } - Vector6 xi; - xi << omega, pose.translation(); return xi; #endif } -/* ************************************************************************* */ -Matrix6 Pose3::ExpmapDerivative(const Vector6& xi) { - Matrix6 J; - Expmap(xi, J); - return J; -} - -/* ************************************************************************* */ -Matrix6 Pose3::LogmapDerivative(const Vector6& xi) { - const Vector3 w = xi.head<3>(); - Vector3 v = xi.segment<3>(3); - - // Instantiate functor for Dexp-related operations: - const so3::DexpFunctor local(w); - - // Call applyLeftJacobian to get its Jacobians - Matrix3 H_t_w; - local.Jacobian().applyLeft(v, H_t_w); - - // Multiply with R^T to account for NavState::Create Jacobian. - const Matrix3 R = local.expmap(); - const Matrix3 Qt = R.transpose() * H_t_w; - - // Now compute the blocks of the LogmapDerivative Jacobian - const Matrix3 Jw = Rot3::LogmapDerivative(w); - const Matrix3 Qt2 = -Jw * Qt * Jw; - - Matrix6 J; - J << Jw, Z_3x3, Qt2, Jw; - return J; -} - -/* ************************************************************************* */ -Matrix6 Pose3::LogmapDerivative(const Pose3& pose) { - const Vector6 xi = Logmap(pose); - return LogmapDerivative(xi); -} - /* ************************************************************************* */ const Point3& Pose3::translation(OptionalJacobian<3, 6> Hself) const { if (Hself) *Hself << Z_3x3, rotation().matrix(); return t_; } -/* ************************************************************************* */ -const Rot3& Pose3::rotation(OptionalJacobian<3, 6> Hself) const { - if (Hself) { - *Hself << I_3x3, Z_3x3; - } - return R_; -} - -/* ************************************************************************* */ -Matrix4 Pose3::matrix() const { - static const auto A14 = Eigen::RowVector4d(0,0,0,1); - Matrix4 mat; - mat << R_.matrix(), t_, A14; - return mat; -} - -/* ************************************************************************* */ -Pose3::Vector16 Pose3::vec(OptionalJacobian<16, 6> H) const { - // Vectorize - const Matrix4 M = matrix(); - const Vector16 v = Eigen::Map(M.data()); - - // If requested, calculate H - if (H) { - H->setZero(); - auto R = M.block<3, 3>(0, 0); - H->block<3, 1>(0, 1) = -R.col(2); - H->block<3, 1>(0, 2) = R.col(1); - H->block<3, 1>(4, 0) = R.col(2); - H->block<3, 1>(4, 2) = -R.col(0); - H->block<3, 1>(8, 0) = -R.col(1); - H->block<3, 1>(8, 1) = R.col(0); - H->block<3,3>(12,3) = R; - } - - return v; -} - /* ************************************************************************* */ Pose3 Pose3::transformPoseFrom(const Pose3& aTb, OptionalJacobian<6, 6> Hself, OptionalJacobian<6, 6> HaTb) const { @@ -455,56 +232,77 @@ Matrix Pose3::transformTo(const Matrix& points) const { /* ************************************************************************* */ double Pose3::range(const Point3& point, OptionalJacobian<1, 6> Hself, OptionalJacobian<1, 3> Hpoint) const { - Matrix36 D_local_pose; - Matrix3 D_local_point; - Point3 local = transformTo(point, Hself ? &D_local_pose : 0, Hpoint ? &D_local_point : 0); - if (!Hself && !Hpoint) { - return local.norm(); - } else { - Matrix13 D_r_local; - const double r = norm3(local, D_r_local); - if (Hself) *Hself = D_r_local * D_local_pose; - if (Hpoint) *Hpoint = D_r_local * D_local_point; - return r; + const Vector3 delta = point - t_; + if (!Hself && !Hpoint) return delta.norm(); + + Matrix13 D_r_point; + const double r = norm3(delta, D_r_point); + + if (Hpoint) *Hpoint = D_r_point; + if (Hself) { + // Range is rotation-invariant: ||R^T(p-t)|| = ||p-t||, so d(range)/d(rotation) = 0. + Hself->leftCols<3>().setZero(); + // Translation coordinates are in the body frame: dt_world = R * dt_body. + Hself->rightCols<3>() = -D_r_point * R_.matrix(); } + return r; } /* ************************************************************************* */ double Pose3::range(const Pose3& pose, OptionalJacobian<1, 6> Hself, OptionalJacobian<1, 6> Hpose) const { - Matrix36 D_point_pose; - Matrix13 D_local_point; - Point3 point = pose.translation(Hpose ? &D_point_pose : 0); - double r = range(point, Hself, Hpose ? &D_local_point : 0); - if (Hpose) *Hpose = D_local_point * D_point_pose; + const Vector3 delta = pose.t_ - t_; + if (!Hself && !Hpose) return delta.norm(); + + Matrix13 D_r_point; + const double r = norm3(delta, D_r_point); + + if (Hself) { + // Range depends only on translation: ||t2-t1||. + Hself->leftCols<3>().setZero(); + // Translation coordinates are in the body frame: dt_world = R * dt_body. + Hself->rightCols<3>() = -D_r_point * R_.matrix(); + } + + if (Hpose) { + Hpose->leftCols<3>().setZero(); + // Translation coordinates are in the body frame: dt_world = R * dt_body. + Hpose->rightCols<3>() = D_r_point * pose.R_.matrix(); + } + return r; } /* ************************************************************************* */ Unit3 Pose3::bearing(const Point3& point, OptionalJacobian<2, 6> Hself, OptionalJacobian<2, 3> Hpoint) const { - Matrix36 D_local_pose; - Matrix3 D_local_point; - Point3 at = transformTo(point, Hself ? &D_local_pose : 0, Hpoint ? &D_local_point : 0); - if (!Hself && !Hpoint) { - return Unit3(at); - } else { - Matrix23 D_b_local; - Unit3 b = Unit3::FromPoint3(at, D_b_local); - if (Hself) *Hself = D_b_local * D_local_pose; - if (Hpoint) *Hpoint = D_b_local * D_local_point; - return b; + const Matrix3 Rt = R_.transpose(); + const Point3 local(Rt * (point - t_)); + + if (!Hself && !Hpoint) return Unit3(local); + + Matrix23 D_b_local; + const Unit3 b = Unit3::FromPoint3(local, D_b_local); + if (Hself) { + Hself->leftCols<3>() = D_b_local * skewSymmetric(local.x(), local.y(), local.z()); + Hself->rightCols<3>() = -D_b_local; + } + if (Hpoint) { + *Hpoint = D_b_local * Rt; } + return b; } /* ************************************************************************* */ Unit3 Pose3::bearing(const Pose3& pose, OptionalJacobian<2, 6> Hself, OptionalJacobian<2, 6> Hpose) const { - Matrix36 D_point_pose; - Matrix23 D_local_point; - Point3 point = pose.translation(Hpose ? &D_point_pose : 0); - Unit3 b = bearing(point, Hself, Hpose ? &D_local_point : 0); - if (Hpose) *Hpose = D_local_point * D_point_pose; + Matrix23 D_bearing_point; + const Point3 point = pose.translation(); + const Unit3 b = bearing(point, Hself, Hpose ? &D_bearing_point : 0); + if (Hpose) { + Hpose->leftCols<3>().setZero(); + Hpose->rightCols<3>() = D_bearing_point * pose.rotation().matrix(); + } return b; } diff --git a/gtsam/geometry/Pose3.h b/gtsam/geometry/Pose3.h index a6b9c40b94..6d4bf0c3bc 100644 --- a/gtsam/geometry/Pose3.h +++ b/gtsam/geometry/Pose3.h @@ -20,10 +20,15 @@ #include #include +#include #include #include #include +#if GTSAM_ENABLE_BOOST_SERIALIZATION +#include +#endif + namespace gtsam { class Pose2; @@ -34,45 +39,41 @@ class Pose2; * @ingroup geometry * \nosubgrouping */ -class GTSAM_EXPORT Pose3: public MatrixLieGroup { +class GTSAM_EXPORT Pose3: public ExtendedPose3<1, Pose3> { public: + using Base = ExtendedPose3<1, Pose3>; /** Pose Concept requirements */ typedef Rot3 Rotation; typedef Point3 Translation; - -private: - - Rot3 R_; ///< Rotation gRp, between global and pose frame - Point3 t_; ///< Translation gPp, from global origin to pose frame origin + inline constexpr static auto dimension = 6; public: using Vector16 = Eigen::Matrix; + using Base::operator*; /// @name Standard Constructors /// @{ /** Default constructor is origin */ - Pose3() : R_(traits::Identity()), t_(traits::Identity()) {} + Pose3() : Base() {} /** Copy constructor */ Pose3(const Pose3& pose) = default; Pose3& operator=(const Pose3& other) = default; + Pose3(const Base& other) : Base(other) {} + /** Construct from R,t */ - Pose3(const Rot3& R, const Point3& t) : - R_(R), t_(t) { - } + Pose3(const Rot3& R, const Point3& t) + : Base(R, Vector3(t.x(), t.y(), t.z())) {} /** Construct from Pose2 */ explicit Pose3(const Pose2& pose2); /** Constructor from 4*4 matrix */ - Pose3(const Matrix &T) : - R_(T(0, 0), T(0, 1), T(0, 2), T(1, 0), T(1, 1), T(1, 2), T(2, 0), T(2, 1), - T(2, 2)), t_(T(0, 3), T(1, 3), T(2, 3)) { - } + Pose3(const Matrix &T) : Base(Matrix4(T)) {} /// Named constructor with derivatives static Pose3 Create(const Rot3& R, const Point3& t, @@ -106,19 +107,6 @@ class GTSAM_EXPORT Pose3: public MatrixLieGroup { /// @name Group /// @{ - /// identity for group operation - static Pose3 Identity() { - return Pose3(); - } - - /// inverse transformation - Pose3 inverse() const; - - /// compose syntactic sugar - Pose3 operator*(const Pose3& T) const { - return Pose3(R_ * T.R_, t_ + R_ * T.t_); - } - /** * Interpolate between two poses via individual rotation and translation * interpolation. @@ -138,103 +126,30 @@ class GTSAM_EXPORT Pose3: public MatrixLieGroup { OptionalJacobian<6, 6> Harg = {}, OptionalJacobian<6, 1> Ht = {}) const; + /// Compose syntactic sugar. + Pose3 operator*(const Pose3& T) const { + return Pose3(R_ * T.R_, t_ + R_ * T.t_); + } + /// @} /// @name Lie Group /// @{ using LieAlgebra = Matrix4; - /// Exponential map at identity - create a rotation from canonical coordinates \f$ [R_x,R_y,R_z,T_x,T_y,T_z] \f$ + /// Exponential map at identity. static Pose3 Expmap(const Vector6& xi, OptionalJacobian<6, 6> Hxi = {}); - /// Log map at identity - return the canonical coordinates \f$ [R_x,R_y,R_z,T_x,T_y,T_z] \f$ of this rotation - static Vector6 Logmap(const Pose3& pose, OptionalJacobian<6, 6> Hpose = {}); - - /** - * Calculate Adjoint map, transforming a twist in this pose's (i.e, body) frame to the world spatial frame - * Ad_pose is 6*6 matrix that when applied to twist xi \f$ [R_x,R_y,R_z,T_x,T_y,T_z] \f$, returns Ad_pose(xi) - */ - Matrix6 AdjointMap() const; - - /** - * Apply this pose's AdjointMap Ad_g to a twist \f$ \xi_b \f$, i.e. a - * body-fixed velocity, transforming it to the spatial frame - * \f$ \xi^s = g*\xi^b*g^{-1} = Ad_g * \xi^b \f$ - * Note that H_xib = AdjointMap() - */ - Vector6 Adjoint(const Vector6& xi_b, - OptionalJacobian<6, 6> H_this = {}, - OptionalJacobian<6, 6> H_xib = {}) const; - - /// The dual version of Adjoint - Vector6 AdjointTranspose(const Vector6& x, - OptionalJacobian<6, 6> H_this = {}, - OptionalJacobian<6, 6> H_x = {}) const; - - /** - * Compute the [ad(w,v)] operator as defined in [Kobilarov09siggraph], pg 11 - * [ad(w,v)] = [w^, zero3; v^, w^] - * Note that this is the matrix representation of the adjoint operator for se3 Lie algebra, - * aka the Lie bracket, and also the derivative of Adjoint map for the Lie group SE3. - * - * Let \f$ \hat{\xi}_i \f$ be the se3 Lie algebra, and \f$ \hat{\xi}_i^\vee = \xi_i = [\omega_i,v_i] \in \mathbb{R}^6\f$ be its - * vector representation. - * We have the following relationship: - * \f$ [\hat{\xi}_1,\hat{\xi}_2]^\vee = ad_{\xi_1}(\xi_2) = [ad_{(\omega_1,v_1)}]*\xi_2 \f$ - * - * We use this to compute the discrete version of the inverse right-trivialized tangent map, - * and its inverse transpose in the discrete Euler Poincare' (DEP) operator. - * - */ - static Matrix6 adjointMap(const Vector6& xi); - - /** - * Action of the adjointMap on a Lie-algebra vector y, with optional derivatives - */ - static Vector6 adjoint(const Vector6& xi, const Vector6& y, - OptionalJacobian<6, 6> Hxi = {}, - OptionalJacobian<6, 6> H_y = {}); - // temporary fix for wrappers until case issue is resolved static Matrix6 adjointMap_(const Vector6 &xi) { return adjointMap(xi);} static Vector6 adjoint_(const Vector6 &xi, const Vector6 &y) { return adjoint(xi, y);} - /** - * The dual version of adjoint action, acting on the dual space of the Lie-algebra vector space. - */ - static Vector6 adjointTranspose(const Vector6& xi, const Vector6& y, - OptionalJacobian<6, 6> Hxi = {}, - OptionalJacobian<6, 6> H_y = {}); - - /// Derivative of Expmap - static Matrix6 ExpmapDerivative(const Vector6& xi); - - /// Derivative of Logmap - static Matrix6 LogmapDerivative(const Vector6& xi); - - /// Derivative of Logmap, Pose3 version. TODO(Frank): deprecate? - static Matrix6 LogmapDerivative(const Pose3& pose); - // Chart at origin, depends on compile-time flag GTSAM_POSE3_EXPMAP struct GTSAM_EXPORT ChartAtOrigin { static Pose3 Retract(const Vector6& xi, ChartJacobian Hxi = {}); static Vector6 Local(const Pose3& pose, ChartJacobian Hpose = {}); }; - using LieGroup::inverse; // version with derivative - - /** - * Hat for Pose3: - * @param xi 6-dim twist (omega,v) where - * omega = (wx,wy,wz) 3D angular velocity - * v (vx,vy,vz) = 3D velocity - * @return xihat, 4*4 element of Lie algebra that can be exponentiated - */ - static Matrix4 Hat(const Vector6& xi); - - /// Vee maps from Lie algebra to tangent vector - static Vector6 Vee(const Matrix4& X); - /// @} /// @name Group Action on Point3 /// @{ @@ -282,33 +197,24 @@ class GTSAM_EXPORT Pose3: public MatrixLieGroup { /// @name Standard Interface /// @{ - /// get rotation - const Rot3& rotation(OptionalJacobian<3, 6> Hself = {}) const; - /// get translation const Point3& translation(OptionalJacobian<3, 6> Hself = {}) const; /// get x double x() const { - return t_.x(); + return translation().x(); } /// get y double y() const { - return t_.y(); + return translation().y(); } /// get z double z() const { - return t_.z(); + return translation().z(); } - /** convert to 4*4 matrix */ - Matrix4 matrix() const; - - /// Return vectorized SE(3) matrix in column order. - Vector16 vec(OptionalJacobian<16, 6> H = {}) const; - /** * Assuming self == wTa, takes a pose aTb in local coordinates * and transforms it to world coordinates wTb = wTa * aTb. diff --git a/gtsam/geometry/Rot3.cpp b/gtsam/geometry/Rot3.cpp index b18a32d5e0..0d82e5bdb2 100644 --- a/gtsam/geometry/Rot3.cpp +++ b/gtsam/geometry/Rot3.cpp @@ -121,7 +121,7 @@ Unit3 Rot3::unrotate(const Unit3& p, OptionalJacobian<2,3> HR, OptionalJacobian<2,2> Hp) const { Matrix32 Dp; Unit3 q = Unit3(unrotate(p.point3(Dp))); - if (Hp) *Hp = q.basis().transpose() * matrix().transpose () * Dp; + if (Hp) *Hp = q.basis().transpose() * matrix().transpose() * Dp; if (HR) *HR = q.basis().transpose() * q.skew(); return q; } @@ -245,19 +245,6 @@ Matrix3 Rot3::LogmapDerivative(const Vector3& x) { return SO3::LogmapDerivative(x); } -/* ************************************************************************* */ -Matrix3 Rot3::adjointMap(const Vector3& xi) { return Hat(xi); } - -/* ************************************************************************* */ -Vector3 Rot3::adjoint(const Vector3& xi, const Vector3& y, - OptionalJacobian<3, 3> Hxi, - OptionalJacobian<3, 3> Hy) { - const Matrix3 ad_xi = adjointMap(xi); - if (Hxi) *Hxi = -Hat(y); - if (Hy) *Hy = ad_xi; - return ad_xi * y; -} - /* ************************************************************************* */ pair RQ(const Matrix3& A, OptionalJacobian<3, 9> H) { const double x = -atan2(-A(2, 1), A(2, 2)); diff --git a/gtsam/geometry/Rot3.h b/gtsam/geometry/Rot3.h index c77fe2c77e..5c5b0496cd 100644 --- a/gtsam/geometry/Rot3.h +++ b/gtsam/geometry/Rot3.h @@ -55,7 +55,7 @@ namespace gtsam { * if it is defined. * @ingroup geometry */ -class GTSAM_EXPORT Rot3 : public LieGroup { +class GTSAM_EXPORT Rot3 : public MatrixLieGroup { public: static constexpr size_t MatrixM = 3; private: @@ -182,7 +182,7 @@ class GTSAM_EXPORT Rot3 : public LieGroup { /// Positive pitch is up (increasing aircraft altitude).See ypr static Rot3 Pitch(double t) { return Ry(t); } - //// Positive roll is to right (increasing yaw in aircraft). + /// Positive roll is to right (increasing yaw in aircraft). static Rot3 Roll (double t) { return Rx(t); } /** @@ -397,12 +397,7 @@ class GTSAM_EXPORT Rot3 : public LieGroup { Matrix3 AdjointMap() const { return matrix(); } /// Matrix representation of the Lie-algebra adjoint operator ad_xi on so(3). - static Matrix3 adjointMap(const Vector3& xi); - - /// Apply the Lie-algebra adjoint map to y with optional derivatives. - static Vector3 adjoint(const Vector3& xi, const Vector3& y, - OptionalJacobian<3, 3> Hxi = {}, - OptionalJacobian<3, 3> Hy = {}); + static Matrix3 adjointMap(const Vector3& xi) { return Hat(xi); } // Chart at origin, depends on compile-time flag ROT3_DEFAULT_COORDINATES_MODE struct GTSAM_EXPORT ChartAtOrigin { diff --git a/gtsam/geometry/SL4.cpp b/gtsam/geometry/SL4.cpp index 165707395e..04046fc64f 100644 --- a/gtsam/geometry/SL4.cpp +++ b/gtsam/geometry/SL4.cpp @@ -5,6 +5,7 @@ */ #include +#include // To use exp(), log() #include @@ -15,59 +16,106 @@ using namespace std; namespace { -Eigen::Matrix I_15x15 = - Eigen::Matrix::Identity(); +using gtsam::Matrix44; +using gtsam::Vector6; -Eigen::Matrix setVecToAlgMatrix() { - Eigen::Matrix alg = Eigen::Matrix::Zero(); +constexpr double kInvSqrt2 = 0.7071067811865475244; +constexpr double kInvSqrt6 = 0.4082482904638630164; +constexpr double kInvSqrt12 = 0.2886751345948128823; - // 12 Off-diagonal E_ij generators - int k = 0; - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - if (i != j) { - alg(i * 4 + j, k++) = 1.0; - } - } - } +Vector6 SkewToSO4(const Vector6& r) { + Vector6 so4; + so4 << r(5), -r(4), r(2), -r(3), r(1), -r(0); + return so4; +} - // For Diagonal generators B1 = diag(1, -1, 0, 0) - alg(0, 12) = 1.0; - alg(5, 12) = -1.0; +Vector6 SO4ToSkew(const Vector6& so4) { + Vector6 r; + r << -so4(5), so4(4), so4(2), -so4(3), -so4(1), so4(0); + return r; +} - // For B2 = diag(0, 1, -1, 0) - alg(5, 13) = 1.0; - alg(10, 13) = -1.0; +Matrix44 HatSym4(const Vector6& s) { + Matrix44 A = Matrix44::Zero(); + A(0, 1) = s(0); + A(1, 0) = s(0); + A(0, 2) = s(1); + A(2, 0) = s(1); + A(0, 3) = s(2); + A(3, 0) = s(2); + A(1, 2) = s(3); + A(2, 1) = s(3); + A(1, 3) = s(4); + A(3, 1) = s(4); + A(2, 3) = s(5); + A(3, 2) = s(5); + return A; +} - // For B3 = diag(0, 0, 1, -1) - alg(10, 14) = 1.0; - alg(15, 14) = -1.0; +Vector6 VeeSym4(const Matrix44& A) { + Vector6 s; + s << A(0, 1), A(0, 2), A(0, 3), A(1, 2), A(1, 3), A(2, 3); + return s; +} + +Eigen::Matrix setVecToAlgMatrix() { + Eigen::Matrix alg = Eigen::Matrix::Zero(); + + int k = 0; + auto set_skew = [&](int i, int j) { + alg(i * 4 + j, k) = kInvSqrt2; + alg(j * 4 + i, k) = -kInvSqrt2; + ++k; + }; + auto set_sym = [&](int i, int j) { + alg(i * 4 + j, k) = kInvSqrt2; + alg(j * 4 + i, k) = kInvSqrt2; + ++k; + }; + + // Rotations (skew-symmetric). + set_skew(0, 1); + set_skew(0, 2); + set_skew(0, 3); + set_skew(1, 2); + set_skew(1, 3); + set_skew(2, 3); + + // Symmetric off-diagonal shears. + set_sym(0, 1); + set_sym(0, 2); + set_sym(0, 3); + set_sym(1, 2); + set_sym(1, 3); + set_sym(2, 3); + + // Traceless diagonal scalings. + alg(0, k) = kInvSqrt2; + alg(5, k) = -kInvSqrt2; + ++k; + + alg(0, k) = kInvSqrt6; + alg(5, k) = kInvSqrt6; + alg(10, k) = -2.0 * kInvSqrt6; + ++k; + + alg(0, k) = kInvSqrt12; + alg(5, k) = kInvSqrt12; + alg(10, k) = kInvSqrt12; + alg(15, k) = -3.0 * kInvSqrt12; + ++k; return alg; } -Eigen::Matrix setAlgtoVecMatrix() { - Eigen::Matrix mat; - mat << 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., - 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., - 0., 0., 0., 0., 0., -1.; - return mat; +Eigen::Matrix setAlgtoVecMatrix( + const Eigen::Matrix& vec_to_alg) { + return vec_to_alg.transpose(); } -// ALG_TO_VEC * VEC_TO_ALG is equals to I_15x15 +// For the orthonormal basis, ALG_TO_VEC * VEC_TO_ALG is the identity. const Eigen::Matrix VEC_TO_ALG = setVecToAlgMatrix(); -const Eigen::Matrix ALG_TO_VEC = setAlgtoVecMatrix(); +const Eigen::Matrix ALG_TO_VEC = setAlgtoVecMatrix(VEC_TO_ALG); } // namespace namespace gtsam { @@ -185,28 +233,35 @@ Matrix44 SL4::Hat(const Vector& xi) { "SL4::Hat: xi must be a vector of size 15. Got size " + std::to_string(xi.size())); } - Matrix44 A; - const double d11 = xi(12); - const double d22 = -xi(12) + xi(13); - const double d33 = -xi(13) + xi(14); - const double d44 = -xi(14); + const Vector6 r = kInvSqrt2 * xi.head<6>(); + const Vector6 s = kInvSqrt2 * xi.segment<6>(6); + + Matrix44 A = SO4::Hat(SkewToSO4(r)) + HatSym4(s); - A << d11, xi(0), xi(1), xi(2), xi(3), d22, xi(4), xi(5), xi(6), xi(7), d33, - xi(8), xi(9), xi(10), xi(11), d44; + // Traceless diagonal scalings. + const double a = kInvSqrt2 * xi(12); + const double b = kInvSqrt6 * xi(13); + const double c = kInvSqrt12 * xi(14); + + Vector4 diag; + diag << a + b + c, -a + b + c, -2.0 * b + c, -3.0 * c; + A.diagonal() += diag; return A; } /* ************************************************************************* */ -// NOTE(hlim): Why 'X'? - I just follow the convention of GTSAM -Vector SL4::Vee(const Matrix44& X) { - Vector vec(15); - const double x12 = X(0, 0); - const double x13 = X(1, 1) + x12; - const double x14 = -X(3, 3); - vec << X(0, 1), X(0, 2), X(0, 3), X(1, 0), X(1, 2), X(1, 3), X(2, 0), X(2, 1), - X(2, 3), X(3, 0), X(3, 1), X(3, 2), x12, x13, x14; - return vec; +// Used consistent notation with Hat() +Vector SL4::Vee(const Matrix44& A) { + Vector xi(15); + const Matrix44 skew = A - A.transpose(); + const Matrix44 sym = A + A.transpose(); + xi.head<6>() = kInvSqrt2 * SO4ToSkew(SO4::Vee(skew)); + xi.segment<6>(6) = kInvSqrt2 * VeeSym4(sym); + xi(12) = kInvSqrt2 * (A(0, 0) - A(1, 1)); + xi(13) = kInvSqrt6 * (A(0, 0) + A(1, 1) - 2.0 * A(2, 2)); + xi(14) = kInvSqrt12 * (A(0, 0) + A(1, 1) + A(2, 2) - 3.0 * A(3, 3)); + return xi; } } // namespace gtsam diff --git a/gtsam/geometry/SL4.h b/gtsam/geometry/SL4.h index ee2b63afca..871004c286 100644 --- a/gtsam/geometry/SL4.h +++ b/gtsam/geometry/SL4.h @@ -102,6 +102,25 @@ class GTSAM_EXPORT SL4 : public MatrixLieGroup { /// @{ using LieAlgebra = Matrix44; + /** + * Lie algebra coordinates for sl(4) using an orthonormal basis. + * + * We use the orthogonal vector-space decomposition: + * sl(4) = so(4) ⊕ sym_off(4) ⊕ diag_traceless(4) + * where so(4) is skew-symmetric rotations, sym_off is symmetric off-diagonal + * shears, and diag_traceless is the 3-D traceless diagonal subspace. + * + * Ordering of xi (15x1): + * [r12 r13 r14 r23 r24 r34 s12 s13 s14 s23 s24 s34 h1 h2 h3] + * + * Basis: + * - r_ij scale (E_ij - E_ji)/sqrt(2): skew-symmetric rotations. + * - s_ij scale (E_ij + E_ji)/sqrt(2): symmetric off-diagonal shears. + * - h1,h2,h3 scale orthonormal traceless diagonals: + * H1 = (1/sqrt(2)) diag( 1, -1, 0, 0) + * H2 = (1/sqrt(6)) diag( 1, 1, -2, 0) + * H3 = (1/sqrt(12)) diag( 1, 1, 1, -3) + */ static Matrix44 Hat(const Vector& xi); static Vector Vee(const Matrix44& X); diff --git a/gtsam/geometry/Similarity3.cpp b/gtsam/geometry/Similarity3.cpp index 0f1011f512..c7aa2d1aa4 100644 --- a/gtsam/geometry/Similarity3.cpp +++ b/gtsam/geometry/Similarity3.cpp @@ -118,6 +118,29 @@ void Similarity3::print(const std::string& s) const { std::cout << "t: " << translation().transpose() << " s: " << scale() << std::endl; } +Rot3 Similarity3::rotation(OptionalJacobian<3, 7> Hself) const { + if (Hself) { + Hself->setZero(); + Hself->block<3, 3>(0, 0) = I_3x3; + } + return R_; +} + +Point3 Similarity3::translation(OptionalJacobian<3, 7> Hself) const { + if (Hself) { + *Hself << Z_3x3, rotation().matrix(), -t_; + } + return t_; +} + +double Similarity3::scale(OptionalJacobian<1, 7> Hself) const { + if (Hself) { + Hself->setZero(); + (*Hself)(0, 6) = s_; + } + return s_; +} + Similarity3 Similarity3::Identity() { return Similarity3(); } @@ -145,9 +168,35 @@ Point3 Similarity3::transformFrom(const Point3& p, // return s_ * q; } -Pose3 Similarity3::transformFrom(const Pose3& T) const { - Rot3 R = R_.compose(T.rotation()); - Point3 t = Point3(s_ * (R_ * T.translation() + t_)); +Pose3 Similarity3::transformFrom(const Pose3& bTi, + OptionalJacobian<6, 7> Hself, OptionalJacobian<6, 6> H_bTi) const { + const Rot3& bRi = bTi.rotation(); + const Point3& bti = bTi.translation(); + if (!Hself && !H_bTi) { + return Pose3(R_ * bRi, transformFrom(bti)); + } + + const Rot3 R = R_ * bRi; + + // Delegate the translation jacobians to the point3 transformFrom. + Matrix37 Dt_dsim; + Matrix3 Dt_dp; + const Point3 t = transformFrom(bti, Hself ? &Dt_dsim : nullptr, H_bTi ? &Dt_dp : nullptr); + + if (Hself) { + Hself->setZero(); + Hself->block<3, 3>(0, 0) = bRi.transpose(); // DR_dsimR + // Chain D_result_t (ie R.T) * D_t_sim (3x7). + Hself->block<3, 7>(3, 0) = R.transpose() * Dt_dsim; + } + + if (H_bTi) { + H_bTi->setIdentity(); + // DR_dTR = I_3x3 + // Chain D_result_t (ie R.T) * D_t_p (ie s * R_) * D_p_bTi (ie [Z_3x3, bRi]) + // bRi.T * R_.T * s * R * bRi => s * I_3x3 + H_bTi->block<3, 3>(3, 3) *= s_; + } return Pose3(R, t); } diff --git a/gtsam/geometry/Similarity3.h b/gtsam/geometry/Similarity3.h index 0a2a569905..f91fcdefc7 100644 --- a/gtsam/geometry/Similarity3.h +++ b/gtsam/geometry/Similarity3.h @@ -118,7 +118,9 @@ class GTSAM_EXPORT Similarity3 : public MatrixLieGroup { * This group action satisfies the compatibility condition. * For more details, refer to: https://en.wikipedia.org/wiki/Group_action */ - Pose3 transformFrom(const Pose3& T) const; + Pose3 transformFrom(const Pose3& T, + OptionalJacobian<6, 7> H1 = {}, // + OptionalJacobian<6, 6> H2 = {}) const; /** syntactic sugar for transformFrom */ Point3 operator*(const Point3& p) const; @@ -191,14 +193,14 @@ class GTSAM_EXPORT Similarity3 : public MatrixLieGroup { /// Calculate 4*4 matrix group equivalent Matrix4 matrix() const; - /// Return a GTSAM rotation - Rot3 rotation() const { return R_; } + /// Return a rotation + Rot3 rotation(OptionalJacobian<3, 7> Hself = {}) const; - /// Return a GTSAM translation - Point3 translation() const { return t_; } + /// Return a translation with pushforward + Point3 translation(OptionalJacobian<3, 7> Hself = {}) const; /// Return the scale - double scale() const { return s_; } + double scale(OptionalJacobian<1, 7> Hself = {}) const; /// @} /// @name Deprecated diff --git a/gtsam/geometry/doc/ExtendedPose3.ipynb b/gtsam/geometry/doc/ExtendedPose3.ipynb new file mode 100644 index 0000000000..b2be902286 --- /dev/null +++ b/gtsam/geometry/doc/ExtendedPose3.ipynb @@ -0,0 +1,441 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "090d20ac", + "metadata": {}, + "source": [ + "# ExtendedPose3\n", + "\n", + "The `ExtendedPose3` class is the generic matrix Lie group $SE_K(3)$: the semi-direct product of `SO(3)` with `K` copies of $\\mathbb{R}^3$.\n", + "\n", + "This notebook focuses on Python usage of `ExtendedPose36` (the `K=6` instantiation), including construction, group operations, and manifold/Lie operations.\n" + ] + }, + { + "cell_type": "markdown", + "id": "e5b31ed7", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "markdown", + "id": "b45cbfc5", + "metadata": {}, + "source": [ + "\"Open\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "acccf586", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c70f339f", + "metadata": {}, + "outputs": [], + "source": [ + "import gtsam\n", + "import numpy as np\n", + "from gtsam import Rot3\n", + "\n", + "ExtendedPose36 = gtsam.ExtendedPose36\n" + ] + }, + { + "cell_type": "markdown", + "id": "9b4dc088", + "metadata": {}, + "source": [ + "## Lie Group Math Overview\n", + "\n", + "An element of $SE_K(3)$ is $X=(R, x_1, \\ldots, x_K)$ with $R \\in SO(3)$ and $x_i \\in \\mathbb{R}^3$.\n", + "\n", + "Group composition is:\n", + "\n", + "\\begin{equation}\n", + "(R, x_i) \\cdot (S, y_i) = (RS, x_i + R y_i).\n", + "\\end{equation}\n", + "\n", + "Group inverse is:\n", + "\n", + "\\begin{equation}\n", + "(R, x_i)^{-1} = (R^T, -R^T x_i).\n", + "\\end{equation}\n", + "\n", + "The tangent vector is ordered as $\\xi=[\\omega, \\rho_1, \\ldots, \\rho_K] \\in \\mathbb{R}^{3+3K}$.\n", + "The exponential and logarithm maps are:\n", + "\n", + "\\begin{equation}\n", + "X = \\operatorname{Exp}(\\xi), \\quad \\xi = \\operatorname{Log}(X).\n", + "\\end{equation}\n", + "\n", + "For the matrix-Lie-group view, $\\operatorname{Hat}(\\xi)$ maps tangent vectors to Lie algebra matrices and $\\operatorname{Vee}(\\cdot)$ is the inverse map:\n", + "\n", + "\\begin{equation}\n", + "\\operatorname{Vee}(\\operatorname{Hat}(\\xi)) = \\xi.\n", + "\\end{equation}\n", + "\n", + "The adjoint map transports perturbations between frames:\n", + "\n", + "\\begin{equation}\n", + "\\operatorname{Ad}_X \\eta = \\operatorname{AdjointMap}(X) \\; \\eta.\n", + "\\end{equation}\n", + "\n", + "As a manifold, local updates use retraction and local coordinates:\n", + "\n", + "\\begin{equation}\n", + "X' = X \\oplus \\delta = \\operatorname{Retract}_X(\\delta), \\quad \\delta = \\operatorname{Local}_X(X').\n", + "\\end{equation}\n" + ] + }, + { + "cell_type": "markdown", + "id": "fa791c1f", + "metadata": {}, + "source": [ + "## Constructing `ExtendedPose36`\n", + "\n", + "`ExtendedPose36` stores one `Rot3` and six 3-vectors $x_1,\\dots,x_6$.\n", + "The manifold dimension is `3 + 3*K = 21`, and the homogeneous matrix is `(3+K) x (3+K) = 9 x 9`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "207ee70e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "k = 6, dim = 21, Dim = 21\n", + "matrix shape: (9, 9)\n", + "[[1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", + " [0. 1. 0. 0. 0. 0. 0. 0. 0.]\n", + " [0. 0. 1. 0. 0. 0. 0. 0. 0.]\n", + " [0. 0. 0. 1. 0. 0. 0. 0. 0.]\n", + " [0. 0. 0. 0. 1. 0. 0. 0. 0.]\n", + " [0. 0. 0. 0. 0. 1. 0. 0. 0.]\n", + " [0. 0. 0. 0. 0. 0. 1. 0. 0.]\n", + " [0. 0. 0. 0. 0. 0. 0. 1. 0.]\n", + " [0. 0. 0. 0. 0. 0. 0. 0. 1.]]\n" + ] + } + ], + "source": [ + "X_identity = ExtendedPose36()\n", + "print(f\"k = {X_identity.k()}, dim = {X_identity.dim()}, Dim = {ExtendedPose36.Dim()}\")\n", + "print(\"matrix shape:\", X_identity.matrix().shape)\n", + "print(X_identity.matrix())\n" + ] + }, + { + "cell_type": "markdown", + "id": "44ec8306", + "metadata": {}, + "source": [ + "### Construct from rotation + 3xK block\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3c6f232d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x(0): [1. 2. 3.]\n", + "xMatrix: [[ 1. 4. -1. 0.5 2.1 -0.3]\n", + " [ 2. 5. 0.5 -1.2 3.3 0.8]\n", + " [ 3. 6. 2. 1.4 -2.7 0.6]]\n" + ] + } + ], + "source": [ + "R = Rot3.Yaw(np.deg2rad(20.0))\n", + "X_block = np.array([\n", + " [1.0, 4.0, -1.0, 0.5, 2.1, -0.3],\n", + " [2.0, 5.0, 0.5, -1.2, 3.3, 0.8],\n", + " [3.0, 6.0, 2.0, 1.4, -2.7, 0.6],\n", + "])\n", + "\n", + "X1 = ExtendedPose36(R, X_block)\n", + "print(\"x(0):\", np.array(X1.x(0)))\n", + "print(\"xMatrix:\", X1.xMatrix())\n" + ] + }, + { + "cell_type": "markdown", + "id": "2c4a45a8", + "metadata": {}, + "source": [ + "### Construct from homogeneous matrix\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3408e416", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "equals: True\n" + ] + } + ], + "source": [ + "T = X1.matrix()\n", + "X1_from_T = ExtendedPose36(T)\n", + "print(\"equals:\", X1.equals(X1_from_T, 1e-9))" + ] + }, + { + "cell_type": "markdown", + "id": "caa03a92", + "metadata": {}, + "source": [ + "## Group operations\n", + "\n", + "Composition, inverse, and between follow the same `Pose3`-style API.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "51421896", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "compose == matrix multiply: True\n", + "between == inverse-compose: True\n" + ] + } + ], + "source": [ + "xi2 = np.array([\n", + " 0.02, -0.01, 0.03,\n", + " 0.1, 0.2, -0.1,\n", + " -0.2, 0.3, 0.4,\n", + " 0.5, -0.6, 0.2,\n", + " -0.3, 0.1, 0.2,\n", + " 0.4, 0.2, -0.5,\n", + " -0.1, 0.7, 0.2,\n", + "])\n", + "X2 = ExtendedPose36.Expmap(xi2)\n", + "\n", + "X12 = X1.compose(X2)\n", + "print(\"compose == matrix multiply:\", np.allclose(X12.matrix(), X1.matrix() @ X2.matrix(), atol=1e-9))\n", + "\n", + "X_between = X1.between(X2)\n", + "X_between_expected = X1.inverse().compose(X2)\n", + "print(\"between == inverse-compose:\", X_between.equals(X_between_expected, 1e-9))\n" + ] + }, + { + "cell_type": "markdown", + "id": "45698ac4", + "metadata": {}, + "source": [ + "## Expmap / Logmap and tangent vectors\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "25a46216", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "log(exp(xi)) ~= xi: True\n" + ] + } + ], + "source": [ + "xi = np.array([\n", + " 0.11, -0.07, 0.05,\n", + " 0.30, -0.40, 0.10,\n", + " -0.20, 0.60, -0.50,\n", + " 0.70, -0.10, 0.20,\n", + " -0.40, 0.30, 0.80,\n", + " 0.50, -0.20, -0.30,\n", + " 0.10, 0.20, -0.60,\n", + "])\n", + "\n", + "X = ExtendedPose36.Expmap(xi)\n", + "xi_round_trip = ExtendedPose36.Logmap(X)\n", + "print(\"log(exp(xi)) ~= xi:\", np.allclose(xi_round_trip, xi, atol=1e-9))" + ] + }, + { + "cell_type": "markdown", + "id": "1a2eb160", + "metadata": {}, + "source": [ + "### Hat / Vee\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "576cb79d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "vee(hat(xi)) ~= xi: True\n" + ] + } + ], + "source": [ + "X_hat = ExtendedPose36.Hat(xi)\n", + "xi_from_hat = ExtendedPose36.Vee(X_hat)\n", + "print(\"vee(hat(xi)) ~= xi:\", np.allclose(xi_from_hat, xi, atol=1e-9))" + ] + }, + { + "cell_type": "markdown", + "id": "494d04cc", + "metadata": {}, + "source": [ + "## Manifold operations\n", + "\n", + "As with `Pose3`, optimization-facing operations are `retract` and `localCoordinates`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "20419fb4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "localCoordinates(retract(delta)) ~= delta: True\n" + ] + } + ], + "source": [ + "delta = 1e-2 * np.ones(21)\n", + "X_perturbed = X1.retract(delta)\n", + "delta_back = X1.localCoordinates(X_perturbed)\n", + "print(\"localCoordinates(retract(delta)) ~= delta:\", np.allclose(delta_back, delta, atol=1e-7))" + ] + }, + { + "cell_type": "markdown", + "id": "cde834ce", + "metadata": {}, + "source": [ + "## Adjoint\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "46a15f60", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AdjointMap shape: (21, 21)\n", + "Adjoint(eta) == AdjointMap @ eta: True\n" + ] + } + ], + "source": [ + "eta = np.linspace(-0.3, 0.3, 21)\n", + "Ad = X1.AdjointMap()\n", + "eta_adjoint = X1.Adjoint(eta)\n", + "print(\"AdjointMap shape:\", Ad.shape)\n", + "print(\"Adjoint(eta) == AdjointMap @ eta:\", np.allclose(eta_adjoint, Ad @ eta, atol=1e-9))" + ] + }, + { + "cell_type": "markdown", + "id": "6a2a253f", + "metadata": {}, + "source": [ + "## Notes and references\n", + "\n", + "`ExtendedPose3` is meaning-agnostic: it only defines the group structure. Semantic interpretation of each $x_i$ (e.g., position, velocity, bias, contact points) is left to derived/application-level code.\n", + "\n", + "For an invariant-filter application context (including walking-robot style state design ideas), see:\n", + "- [InvariantEKF notebook](../../navigation/doc/InvariantEKF.ipynb)\n", + "- [NavState notebook](../../navigation/doc/NavState.ipynb)\n", + "\n", + "For `Pose3`-specific behavior and conventions, see:\n", + "- [Pose3 notebook](./Pose3.ipynb)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/geometry/geometry.i b/gtsam/geometry/geometry.i index d04dda7896..f282d53c73 100644 --- a/gtsam/geometry/geometry.i +++ b/gtsam/geometry/geometry.i @@ -177,6 +177,12 @@ class Rot2 { gtsam::Vector logmap(const gtsam::Rot2& g); // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -293,6 +299,12 @@ class SO3 { gtsam::Vector3 logmap(const gtsam::SO3& g); // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -332,6 +344,12 @@ class SO4 { gtsam::Vector logmap(const gtsam::SO4& g); // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -373,6 +391,12 @@ class SOn { gtsam::Vector logmap(const gtsam::SOn& g); // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -450,6 +474,12 @@ class Rot3 { gtsam::Vector logmap(const gtsam::Rot3& g); // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -530,13 +560,16 @@ class Pose2 { gtsam::Vector logmap(const gtsam::Pose2& g, Eigen::Ref H1, Eigen::Ref H2); static gtsam::Matrix ExpmapDerivative(gtsam::Vector v); static gtsam::Matrix LogmapDerivative(const gtsam::Pose2& v); + + // Matrix Lie Group gtsam::Matrix AdjointMap() const; gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); static gtsam::Matrix adjointMap_(gtsam::Vector xi); static gtsam::Vector adjoint_(gtsam::Vector xi, gtsam::Vector y); - static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); - - // Matrix Lie Group gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -624,6 +657,7 @@ class Pose3 { gtsam::Vector logmap(const gtsam::Pose3& g); gtsam::Vector logmap(const gtsam::Pose3& g, Eigen::Ref H1, Eigen::Ref H2); + // Matrix Lie Group gtsam::Matrix AdjointMap() const; gtsam::Vector Adjoint(gtsam::Vector xi_b) const; gtsam::Vector Adjoint(gtsam::Vector xi_b, Eigen::Ref H_this, @@ -633,11 +667,9 @@ class Pose3 { Eigen::Ref H_x) const; static gtsam::Matrix adjointMap(gtsam::Vector xi); static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); static gtsam::Matrix adjointMap_(gtsam::Vector xi); static gtsam::Vector adjoint_(gtsam::Vector xi, gtsam::Vector y); - static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); - - // Matrix Lie Group gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -675,6 +707,69 @@ class Pose3 { double range(const gtsam::Pose3& pose); double range(const gtsam::Pose3& pose, Eigen::Ref Hself, Eigen::Ref Hpose); + gtsam::Unit3 bearing(const gtsam::Point3& point); + gtsam::Unit3 bearing(const gtsam::Point3& point, Eigen::Ref Hself, + Eigen::Ref Hpoint); + gtsam::Unit3 bearing(const gtsam::Pose3& pose); + gtsam::Unit3 bearing(const gtsam::Pose3& pose, Eigen::Ref Hself, + Eigen::Ref Hpose); + + // enabling serialization functionality + void serialize() const; +}; + +#include +template +class ExtendedPose3 { + // Standard Constructors + ExtendedPose3(); + ExtendedPose3(const This& other); + ExtendedPose3(const gtsam::Rot3& R, const gtsam::Matrix& x); + ExtendedPose3(const gtsam::Matrix& T); + + // Testable + void print(string s = "") const; + bool equals(const This& other, double tol = 1e-9) const; + + // Access + size_t k() const; + gtsam::Rot3 rotation() const; + gtsam::Point3 x(size_t i) const; + gtsam::Matrix xMatrix() const; + + // Group + static This Identity(); + This inverse() const; + This compose(const This& g) const; + This between(const This& g) const; + + // Operator Overloads + This operator*(const This& other) const; + + // Manifold + static size_t Dim(); + size_t dim() const; + This retract(gtsam::Vector v) const; + gtsam::Vector localCoordinates(const This& g) const; + + // Lie Group + static This Expmap(gtsam::Vector xi); + static gtsam::Vector Logmap(const This& pose); + static gtsam::Matrix ExpmapDerivative(gtsam::Vector xi); + static gtsam::Matrix LogmapDerivative(gtsam::Vector xi); + static gtsam::Matrix LogmapDerivative(const This& pose); + + // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi_b) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); + gtsam::Vector vec() const; + gtsam::Matrix matrix() const; + static gtsam::Matrix Hat(const gtsam::Vector& xi); + static gtsam::Vector Vee(const gtsam::Matrix& X); // enabling serialization functionality void serialize() const; @@ -721,6 +816,12 @@ class SL4 { gtsam::Vector logmap(const gtsam::SL4& g); // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); @@ -1406,13 +1507,22 @@ class Similarity2 { static gtsam::Vector Logmap(const gtsam::Similarity2& S); gtsam::Similarity2 expmap(const gtsam::Vector& v); gtsam::Vector logmap(const gtsam::Similarity2& g); + + // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); + gtsam::Vector vec() const; + gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); static gtsam::Vector Vee(const gtsam::Matrix& X); // Standard Interface bool equals(const gtsam::Similarity2& sim, double tol) const; void print(string s = "") const; - gtsam::Matrix matrix() const; gtsam::Rot2& rotation(); gtsam::Point2& translation(); double scale() const; @@ -1453,13 +1563,22 @@ class Similarity3 { static gtsam::Vector Logmap(const gtsam::Similarity3& s); gtsam::Similarity3 expmap(const gtsam::Vector& v); gtsam::Vector logmap(const gtsam::Similarity3& g); + + // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); + gtsam::Vector vec() const; + gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); static gtsam::Vector Vee(const gtsam::Matrix& X); // Standard Interface bool equals(const gtsam::Similarity3& sim, double tol) const; void print(string s = "") const; - gtsam::Matrix matrix() const; gtsam::Rot3& rotation(); gtsam::Point3& translation(); double scale() const; @@ -1506,6 +1625,12 @@ class Gal3 { gtsam::Gal3 compose(const gtsam::Gal3& other) const; gtsam::Gal3 between(const gtsam::Gal3& other) const; gtsam::Event act(const gtsam::Event& e) const; + double range(const gtsam::Point3& point) const; + double range(const gtsam::Point3& point, Eigen::Ref Hself, + Eigen::Ref Hpoint) const; + gtsam::Unit3 bearing(const gtsam::Point3& point) const; + gtsam::Unit3 bearing(const gtsam::Point3& point, Eigen::Ref Hself, + Eigen::Ref Hpoint) const; // Operator Overloads gtsam::Gal3 operator*(const gtsam::Gal3& other) const; @@ -1517,6 +1642,12 @@ class Gal3 { gtsam::Vector10 logmap(const gtsam::Gal3& g); // Matrix Lie Group + gtsam::Matrix AdjointMap() const; + gtsam::Vector Adjoint(gtsam::Vector xi) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); gtsam::Vector vec() const; gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); diff --git a/gtsam/geometry/tests/testExtendedPose3.cpp b/gtsam/geometry/tests/testExtendedPose3.cpp new file mode 100644 index 0000000000..32bef7936e --- /dev/null +++ b/gtsam/geometry/tests/testExtendedPose3.cpp @@ -0,0 +1,318 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file testExtendedPose3.cpp + * @brief Unit tests for ExtendedPose3 + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace gtsam; + +using ExtendedPose33 = ExtendedPose3<3>; +using ExtendedPose3d = ExtendedPose3; + +GTSAM_CONCEPT_TESTABLE_INST(ExtendedPose33) +GTSAM_CONCEPT_MATRIX_LIE_GROUP_INST(ExtendedPose33) +GTSAM_CONCEPT_TESTABLE_INST(ExtendedPose3d) +GTSAM_CONCEPT_MATRIX_LIE_GROUP_INST(ExtendedPose3d) + +namespace { + +const Rot3 kR1 = Rot3::RzRyRx(0.1, -0.2, 0.3); +const Rot3 kR2 = Rot3::RzRyRx(-0.3, 0.4, -0.2); +const Matrix3 kX1 = + (Matrix3() << 1.0, 4.0, -1.0, 2.0, 5.0, 0.5, 3.0, 6.0, 2.0).finished(); +const Matrix3 kX2 = + (Matrix3() << -2.0, 1.0, 0.1, 0.3, -1.5, 2.2, 0.7, -0.9, 1.6).finished(); +const Vector12 kXi = (Vector12() << 0.11, -0.07, 0.05, 0.3, -0.4, 0.1, -0.2, + 0.6, -0.5, 0.7, -0.1, 0.2) + .finished(); + +} // namespace + +//****************************************************************************** +TEST(ExtendedPose3, Concept) { + GTSAM_CONCEPT_ASSERT(IsGroup); + GTSAM_CONCEPT_ASSERT(IsManifold); + GTSAM_CONCEPT_ASSERT(IsMatrixLieGroup); + + GTSAM_CONCEPT_ASSERT(IsGroup); + GTSAM_CONCEPT_ASSERT(IsManifold); + GTSAM_CONCEPT_ASSERT(IsMatrixLieGroup); +} + +//****************************************************************************** +TEST(ExtendedPose3, Dimensions) { + const ExtendedPose33 fixed; + EXPECT_LONGS_EQUAL(12, traits::GetDimension(fixed)); + EXPECT_LONGS_EQUAL(3, fixed.k()); + + const ExtendedPose3d placeholder; + EXPECT_LONGS_EQUAL(0, placeholder.k()); + EXPECT_LONGS_EQUAL(3, placeholder.dim()); + + const ExtendedPose3d dynamic(3); + EXPECT_LONGS_EQUAL(3, dynamic.k()); + EXPECT_LONGS_EQUAL(12, dynamic.dim()); +} + +//****************************************************************************** +TEST(ExtendedPose3, ConstructorsAndAccess) { + const ExtendedPose33 fixed(kR1, kX1); + const ExtendedPose3d dynamic(kR1, ExtendedPose3d::Matrix3K(kX1)); + + EXPECT(assert_equal(kR1, fixed.rotation())); + EXPECT(assert_equal(kR1, dynamic.rotation())); + + for (size_t i = 0; i < 3; ++i) { + EXPECT(assert_equal(Point3(kX1.col(static_cast(i))), + fixed.x(i))); + EXPECT(assert_equal(Point3(kX1.col(static_cast(i))), + dynamic.x(i))); + } + + EXPECT(assert_equal(fixed.matrix(), dynamic.matrix())); +} + +//****************************************************************************** +TEST(ExtendedPose3, GroupOperationsMatch) { + const ExtendedPose33 f1(kR1, kX1), f2(kR2, kX2); + const ExtendedPose3d d1(kR1, ExtendedPose3d::Matrix3K(kX1)); + const ExtendedPose3d d2(kR2, ExtendedPose3d::Matrix3K(kX2)); + + const auto f12 = f1 * f2; + const auto d12 = d1 * d2; + EXPECT(assert_equal(f12.matrix(), d12.matrix())); + + const auto f_id = f1 * f1.inverse(); + const auto d_id = d1 * d1.inverse(); + EXPECT( + assert_equal(ExtendedPose33::Identity().matrix(), f_id.matrix(), 1e-9)); + EXPECT( + assert_equal(ExtendedPose3d::Identity(3).matrix(), d_id.matrix(), 1e-9)); + + const auto f_between = f1.between(f2); + const auto d_between = d1.between(d2); + EXPECT(assert_equal(f_between.matrix(), d_between.matrix(), 1e-9)); +} + +//****************************************************************************** +TEST(ExtendedPose3, HatVee) { + const Vector xi = kXi; + const auto Xf = ExtendedPose33::Hat(kXi); + const auto Xd = ExtendedPose3d::Hat(xi); + + EXPECT(assert_equal(xi, Vector(ExtendedPose33::Vee(Xf)))); + EXPECT(assert_equal(xi, ExtendedPose3d::Vee(Xd))); + EXPECT(assert_equal(Xf, Xd)); +} + +//****************************************************************************** +TEST(ExtendedPose3, ExpmapLogmapRoundTrip) { + const Vector xi = kXi; + const ExtendedPose33 f = ExtendedPose33::Expmap(kXi); + const ExtendedPose3d d = ExtendedPose3d::Expmap(xi); + + EXPECT(assert_equal(f.matrix(), d.matrix(), 1e-9)); + EXPECT(assert_equal(xi, Vector(ExtendedPose33::Logmap(f)), 1e-9)); + EXPECT(assert_equal(xi, ExtendedPose3d::Logmap(d), 1e-9)); +} + +//****************************************************************************** +TEST(ExtendedPose3, AdjointConsistency) { + const ExtendedPose33 f(kR1, kX1); + const ExtendedPose3d d(kR1, ExtendedPose3d::Matrix3K(kX1)); + const Vector xi = kXi; + + const auto f_conj = f * ExtendedPose33::Expmap(kXi) * f.inverse(); + const auto d_conj = d * ExtendedPose3d::Expmap(xi) * d.inverse(); + + const auto f_adj = ExtendedPose33::Expmap(f.Adjoint(kXi)); + const auto d_adj = ExtendedPose3d::Expmap(d.Adjoint(xi)); + EXPECT(assert_equal(f_conj.matrix(), f_adj.matrix(), 1e-9)); + EXPECT(assert_equal(d_conj.matrix(), d_adj.matrix(), 1e-9)); + + const ExtendedPose33::Jacobian f_generic = + static_cast*>(&f) + ->AdjointMap(); + const Matrix d_generic = + static_cast*>(&d) + ->AdjointMap(); + EXPECT(assert_equal(Matrix(f_generic), Matrix(f.AdjointMap()), 1e-9)); + EXPECT(assert_equal(d_generic, d.AdjointMap(), 1e-9)); +} + +//****************************************************************************** +TEST(ExtendedPose3, AdjointTranspose) { + const ExtendedPose33 f(kR1, kX1); + const ExtendedPose3d d(kR1, ExtendedPose3d::Matrix3K(kX1)); + const Vector12 x = kXi; + const Vector x_dynamic = x; + + EXPECT(assert_equal(Vector(f.AdjointMap().transpose() * x), + Vector(f.AdjointTranspose(x)))); + EXPECT(assert_equal(d.AdjointMap().transpose() * x_dynamic, + d.AdjointTranspose(x_dynamic))); + + std::function + f_adjoint_transpose = [](const ExtendedPose33& g, const Vector12& v) { + return Vector12(g.AdjointTranspose(v)); + }; + Matrix Hf_state, Hf_x; + f.AdjointTranspose(x, Hf_state, Hf_x); + EXPECT(assert_equal(numericalDerivative21(f_adjoint_transpose, f, x), Hf_state, + 1e-8)); + EXPECT( + assert_equal(numericalDerivative22(f_adjoint_transpose, f, x), Hf_x)); + + std::function + d_adjoint_transpose = [](const ExtendedPose3d& g, const Vector& v) { + return g.AdjointTranspose(v); + }; + Matrix Hd_state, Hd_x; + d.AdjointTranspose(x_dynamic, Hd_state, Hd_x); + EXPECT(assert_equal( + numericalDerivative21( + d_adjoint_transpose, d, x_dynamic), + Hd_state, 1e-8)); + EXPECT(assert_equal( + numericalDerivative22( + d_adjoint_transpose, d, x_dynamic), + Hd_x)); +} + +//****************************************************************************** +TEST(ExtendedPose3, adjointTranspose) { + const Vector12 xi = kXi; + const Vector12 y = + (Vector12() << 0.03, -0.07, 0.02, 0.4, 0.1, -0.2, -0.3, 0.5, 0.9, 0.2, + -0.8, 0.6) + .finished(); + const Vector xi_dynamic = xi; + const Vector y_dynamic = y; + + EXPECT(assert_equal(Vector(ExtendedPose33::adjointMap(xi).transpose() * y), + Vector(ExtendedPose33::adjointTranspose(xi, y)))); + EXPECT(assert_equal(ExtendedPose3d::adjointMap(xi_dynamic).transpose() * + y_dynamic, + ExtendedPose3d::adjointTranspose(xi_dynamic, y_dynamic))); + + std::function + f_adjoint_transpose = [](const Vector12& x, const Vector12& v) { + return Vector12(ExtendedPose33::adjointTranspose(x, v)); + }; + Matrix Hf_xi, Hf_y; + EXPECT(assert_equal(Vector(ExtendedPose33::adjointTranspose(xi, y, Hf_xi, Hf_y)), + Vector(f_adjoint_transpose(xi, y)))); + EXPECT( + assert_equal(numericalDerivative21(f_adjoint_transpose, xi, y, 1e-5), Hf_xi, + 1e-5)); + EXPECT( + assert_equal(numericalDerivative22(f_adjoint_transpose, xi, y, 1e-5), Hf_y, + 1e-5)); + + std::function d_adjoint_transpose = + [](const Vector& x, const Vector& v) { + return ExtendedPose3d::adjointTranspose(x, v); + }; + Matrix Hd_xi, Hd_y; + EXPECT(assert_equal(ExtendedPose3d::adjointTranspose(xi_dynamic, y_dynamic, + Hd_xi, Hd_y), + d_adjoint_transpose(xi_dynamic, y_dynamic))); + EXPECT(assert_equal( + numericalDerivative21( + d_adjoint_transpose, xi_dynamic, y_dynamic, 1e-5), + Hd_xi, 1e-5)); + EXPECT(assert_equal( + numericalDerivative22( + d_adjoint_transpose, xi_dynamic, y_dynamic, 1e-5), + Hd_y, 1e-5)); +} + +//****************************************************************************** +TEST(ExtendedPose3, Derivatives) { + const ExtendedPose33 f(kR1, kX1); + const ExtendedPose3d d(kR1, ExtendedPose3d::Matrix3K(kX1)); + const Vector xi = kXi; + + Matrix Hf; + ExtendedPose33::Expmap(kXi, Hf); + const auto f_exp = [](const Vector12& v) { + return ExtendedPose33::Expmap(v); + }; + const Matrix Hf_num = + numericalDerivative11(f_exp, kXi); + EXPECT(assert_equal(Hf_num, Hf, 1e-6)); + + Matrix Hd; + ExtendedPose3d::Expmap(xi, Hd); + const auto d_exp = [](const Vector& v) { return ExtendedPose3d::Expmap(v); }; + const Matrix Hd_num = + numericalDerivative11(d_exp, xi); + EXPECT(assert_equal(Hd_num, Hd, 1e-6)); + + Matrix Lf; + ExtendedPose33::Logmap(f, Lf); + const auto f_log = [](const ExtendedPose33& g) { + return Vector12(ExtendedPose33::Logmap(g)); + }; + const Matrix Lf_num = + numericalDerivative11(f_log, f); + EXPECT(assert_equal(Lf_num, Lf, 1e-6)); + + Matrix Ld; + ExtendedPose3d::Logmap(d, Ld); + const auto d_log = [](const ExtendedPose3d& g) { + return ExtendedPose3d::Logmap(g); + }; + const Matrix Ld_num = + numericalDerivative11(d_log, d); + EXPECT(assert_equal(Ld_num, Ld, 1e-6)); +} + +//****************************************************************************** +TEST(ExtendedPose3, VecJacobian) { + const ExtendedPose33 f(kR1, kX1); + const ExtendedPose3d d(kR1, ExtendedPose3d::Matrix3K(kX1)); + + Matrix Hf; + const Vector vf = f.vec(Hf); + const auto fv = [](const ExtendedPose33& g) { return Vector(g.vec()); }; + const Matrix Hf_num = + numericalDerivative11(fv, f); + EXPECT(assert_equal(Hf_num, Hf, 1e-6)); + EXPECT_LONGS_EQUAL(36, vf.size()); + + Matrix Hd; + const Vector vd = d.vec(Hd); + const auto dv = [](const ExtendedPose3d& g) { return Vector(g.vec()); }; + const Matrix Hd_num = + numericalDerivative11(dv, d); + EXPECT(assert_equal(Hd_num, Hd, 1e-6)); + EXPECT_LONGS_EQUAL(36, vd.size()); +} + +//****************************************************************************** +int main() { + TestResult tr; + return TestRegistry::runAllTests(tr); +} +//****************************************************************************** diff --git a/gtsam/geometry/tests/testGal3.cpp b/gtsam/geometry/tests/testGal3.cpp index 6b5bc151b3..0199380e48 100644 --- a/gtsam/geometry/tests/testGal3.cpp +++ b/gtsam/geometry/tests/testGal3.cpp @@ -21,6 +21,7 @@ #include #include #include // Included for kTestPose definition +#include #include #include @@ -44,6 +45,12 @@ const double kTestTime = 1.5; const Pose3 kTestPose(kTestRot, kTestPos); const Gal3 kTestGal3(kTestRot, kTestPos, kTestVel, kTestTime); +// Some shared test values - pulled from equivalent tests in Pose3 +static const Point3 l1(1, 0, 0), l2(1, 1, 0), l3(2, 2, 0), l4(1, 4, -4); +static const Gal3 x1(Rot3(), Point3::Zero(), Velocity3(0.4, 0.5, 0.6), 0.0), + x2(Rot3::Ypr(0.0, 0.0, 0.0), l2, Velocity3(0.4, 0.5, 0.6), 0.0), + x3(Rot3::Ypr(M_PI / 4.0, 0.0, 0.0), l2, Velocity3(0.4, 0.5, 0.6), 0.0); + /* ************************************************************************* */ TEST(Gal3, Concept) { @@ -76,6 +83,27 @@ TEST(Gal3, ChartDerivatives) { CHECK_CHART_DERIVATIVES(kTestGal3_Lie1, kTestGal3_Lie2); } +/* ************************************************************************* */ +TEST(Gal3, RetractJacobians) { + const Gal3 g = kTestGal3_Lie1; + const Vector10 v = (Vector10() << 0.01, -0.02, 0.03, 0.1, -0.05, 0.2, 0.4, + -0.3, 0.2, 0.01) + .finished(); + + Matrix actualH1, actualH2; + traits::Retract(g, v, &actualH1, &actualH2); + + std::function retract_proxy = + [](const Gal3& g_, const Vector10& v_) { return g_.retract(v_); }; + Matrix expectedH1 = + numericalDerivative21(retract_proxy, g, v); + Matrix expectedH2 = + numericalDerivative22(retract_proxy, g, v); + + EXPECT(assert_equal(expectedH1, actualH1, 1e-5)); + EXPECT(assert_equal(expectedH2, actualH2, 1e-5)); +} + /* ************************************************************************* */ TEST(Gal3, StaticConstructorsValue) { @@ -105,6 +133,56 @@ TEST(Gal3, ComponentAccessorsValue) { EXPECT_DOUBLES_EQUAL(kTestTime, kTestGal3.t(), kTol); } +/* ************************************************************************* */ +double range_proxy(const Gal3& gal3, const Point3& point) { + return gal3.range(point); +} +TEST(Gal3, RangeToPoint3) { + Matrix expectedH1, actualH1, expectedH2, actualH2; + + // Establish range is indeed 1. + EXPECT_DOUBLES_EQUAL(1.0, x1.range(l1), 1e-9); + + // Establish range is indeed sqrt(2). + EXPECT_DOUBLES_EQUAL(std::sqrt(2.0), x1.range(l2), 1e-9); + + // Another pair + double actual23 = x2.range(l3, actualH1, actualH2); + EXPECT_DOUBLES_EQUAL(std::sqrt(2.0), actual23, 1e-9); + + // Check numerical derivatives + expectedH1 = numericalDerivative21(range_proxy, x2, l3); + expectedH2 = numericalDerivative22(range_proxy, x2, l3); + EXPECT(assert_equal(expectedH1, actualH1)); + EXPECT(assert_equal(expectedH2, actualH2)); + + // Another test + double actual34 = x3.range(l4, actualH1, actualH2); + EXPECT_DOUBLES_EQUAL(5.0, actual34, 1e-9); + + // Check numerical derivatives + expectedH1 = numericalDerivative21(range_proxy, x3, l4); + expectedH2 = numericalDerivative22(range_proxy, x3, l4); + EXPECT(assert_equal(expectedH1, actualH1)); + EXPECT(assert_equal(expectedH2, actualH2)); +} + +/* ************************************************************************* */ +Unit3 bearing_proxy(const Gal3& gal3, const Point3& point) { + return gal3.bearing(point); +} +TEST(Gal3, BearingToPoint3) { + Matrix expectedH1, actualH1, expectedH2, actualH2; + + EXPECT(assert_equal(Unit3(1, 0, 0), x1.bearing(l1, actualH1, actualH2), 1e-9)); + + // Check numerical derivatives + expectedH1 = numericalDerivative21(bearing_proxy, x1, l1); + expectedH2 = numericalDerivative22(bearing_proxy, x1, l1); + EXPECT(assert_equal(expectedH1, actualH1, 1e-5)); + EXPECT(assert_equal(expectedH2, actualH2, 1e-5)); +} + /* ************************************************************************* */ TEST(Gal3, MatrixConstructorValue) { Matrix5 M_known = kTestGal3.matrix(); diff --git a/gtsam/geometry/tests/testPose2.cpp b/gtsam/geometry/tests/testPose2.cpp index 55c3092a14..7282522527 100644 --- a/gtsam/geometry/tests/testPose2.cpp +++ b/gtsam/geometry/tests/testPose2.cpp @@ -75,6 +75,20 @@ TEST(Pose2, retract) { EXPECT(assert_equal(expected, actual, 1e-5)); } +/* ************************************************************************* */ +TEST(Pose2, retractJacobian) { + Pose2 pose(M_PI / 2.0, Point2(1, 2)); + Vector3 v(0.01, -0.015, 0.99); + + Matrix3 actualH; + traits::Retract(pose, v, {}, &actualH); + + auto retract_from_pose = [&](const Vector3& delta) { return pose.retract(delta); }; + Matrix3 expectedH = numericalDerivative11(retract_from_pose, v, 1e-6); + + EXPECT(assert_equal(expectedH, actualH, 1e-5)); +} + /* ************************************************************************* */ TEST(Pose2, expmap) { Pose2 pose(M_PI/2.0, Point2(1, 2)); @@ -991,10 +1005,43 @@ TEST(Pose2, AdjointMap) { EXPECT(assert_equal(specialized_Adj, generic_Adj, 1e-9)); } +/* ************************************************************************* */ +TEST(Pose2, AdjointTranspose) { + const Pose2 pose(Rot2::fromAngle(0.5), Point2(1.0, 2.0)); + const Vector3 xi(0.2, -0.4, 0.7); + + EXPECT(assert_equal(Vector(pose.AdjointMap().transpose() * xi), + Vector(pose.AdjointTranspose(xi)))); + + Matrix33 actualH1, actualH2; + std::function proxy = + [](const Pose2& g, const Vector3& x) { + return Vector3(g.AdjointTranspose(x)); + }; + pose.AdjointTranspose(xi, actualH1, actualH2); + EXPECT(assert_equal(numericalDerivative21(proxy, pose, xi), actualH1, 1e-8)); + EXPECT(assert_equal(numericalDerivative22(proxy, pose, xi), actualH2)); +} + +/* ************************************************************************* */ +TEST(Pose2, adjointTranspose) { + const Vector3 xi(0.2, -0.4, 0.7); + const Vector3 y(-0.3, 0.5, 0.9); + + Matrix33 Hxi, Hy; + const Vector3 actual = Pose2::adjointTranspose(xi, y, Hxi, Hy); + std::function f = + [](const Vector3& x, const Vector3& v) { + return Pose2::adjointTranspose(x, v); + }; + EXPECT(assert_equal(f(xi, y), actual)); + EXPECT(assert_equal(numericalDerivative21(f, xi, y, 1e-5), Hxi, 1e-5)); + EXPECT(assert_equal(numericalDerivative22(f, xi, y, 1e-5), Hy, 1e-5)); +} + /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); } /* ************************************************************************* */ - diff --git a/gtsam/geometry/tests/testPose3.cpp b/gtsam/geometry/tests/testPose3.cpp index 3797e77619..fc3a82f4dc 100644 --- a/gtsam/geometry/tests/testPose3.cpp +++ b/gtsam/geometry/tests/testPose3.cpp @@ -1469,21 +1469,6 @@ TEST(Pose3, Vec) { EXPECT(assert_equal(numericalH, actualH, 1e-9)); } -/* ************************************************************************* */ -TEST(Pose3, AdjointMap) { - // Create a non-trivial Pose3 object - const Pose3 pose(Rot3::Rodrigues(0.1, 0.2, 0.3), Point3(1.0, 2.0, 3.0)); - - // Call the specialized AdjointMap - Matrix6 specialized_Adj = pose.AdjointMap(); - - // Call the generic AdjointMap from the base class - Matrix6 generic_Adj = static_cast*>(&pose)->AdjointMap(); - - // Assert that they are equal - EXPECT(assert_equal(specialized_Adj, generic_Adj, 1e-9)); -} - /* ************************************************************************* */ int main() { TestResult tr; diff --git a/gtsam/geometry/tests/testSL4.cpp b/gtsam/geometry/tests/testSL4.cpp index a6825efd14..2aca1c9ce3 100644 --- a/gtsam/geometry/tests/testSL4.cpp +++ b/gtsam/geometry/tests/testSL4.cpp @@ -13,6 +13,9 @@ #include #include +#include +#include + using namespace std; using namespace gtsam; @@ -171,9 +174,96 @@ TEST(SL4, HatVeeAreInverses) { EXPECT(assert_equal(xi0, xi_recovered, 1e-8)); } +/* ************************************************************************* */ +TEST(SL4, HatTraceIsZero) { + Vector15 eta = + (Vector15() << 0.31, -0.22, 0.14, -0.09, 0.27, -0.18, 0.05, -0.12, 0.08, + 0.11, -0.06, 0.02, 0.07, -0.04, 0.13) + .finished(); + Matrix4 A = SL4::Hat(eta); + EXPECT_DOUBLES_EQUAL(0.0, A.trace(), 1e-12); +} + +/* ************************************************************************* */ +TEST(SL4, HatVeeRoundTrip) { + Vector15 eta = + (Vector15() << -0.25, 0.19, -0.11, 0.07, -0.03, 0.29, -0.17, 0.09, 0.21, + -0.13, 0.04, -0.06, 0.15, -0.08, 0.02) + .finished(); + Vector eta_recovered = SL4::Vee(SL4::Hat(eta)); + EXPECT(assert_equal(eta, eta_recovered, 1e-12)); +} + +/* ************************************************************************* */ +TEST(SL4, HatBasisIsOrthonormal) { + std::vector generators; + generators.reserve(15); + + for (int k = 0; k < 15; ++k) { + Vector15 e = Vector15::Zero(); + e(k) = 1.0; + generators.push_back(SL4::Hat(e)); + } + + for (int i = 0; i < 15; ++i) { + for (int j = 0; j < 15; ++j) { + const double inner = + (generators[i].array() * generators[j].array()).sum(); + const double expected = (i == j) ? 1.0 : 0.0; + EXPECT_DOUBLES_EQUAL(expected, inner, 1e-12); + } + } +} + +/* ************************************************************************* */ +TEST(SL4, HatMatchesOrthonormalDefinition) { + const double inv_sqrt2 = 1.0 / std::sqrt(2.0); + const double inv_sqrt6 = 1.0 / std::sqrt(6.0); + const double inv_sqrt12 = 1.0 / std::sqrt(12.0); + + const Vector15 eta = xi0; + Matrix4 expected = Matrix4::Zero(); + + expected(0, 1) += inv_sqrt2 * eta(0); + expected(1, 0) -= inv_sqrt2 * eta(0); + expected(0, 2) += inv_sqrt2 * eta(1); + expected(2, 0) -= inv_sqrt2 * eta(1); + expected(0, 3) += inv_sqrt2 * eta(2); + expected(3, 0) -= inv_sqrt2 * eta(2); + expected(1, 2) += inv_sqrt2 * eta(3); + expected(2, 1) -= inv_sqrt2 * eta(3); + expected(1, 3) += inv_sqrt2 * eta(4); + expected(3, 1) -= inv_sqrt2 * eta(4); + expected(2, 3) += inv_sqrt2 * eta(5); + expected(3, 2) -= inv_sqrt2 * eta(5); + + expected(0, 1) += inv_sqrt2 * eta(6); + expected(1, 0) += inv_sqrt2 * eta(6); + expected(0, 2) += inv_sqrt2 * eta(7); + expected(2, 0) += inv_sqrt2 * eta(7); + expected(0, 3) += inv_sqrt2 * eta(8); + expected(3, 0) += inv_sqrt2 * eta(8); + expected(1, 2) += inv_sqrt2 * eta(9); + expected(2, 1) += inv_sqrt2 * eta(9); + expected(1, 3) += inv_sqrt2 * eta(10); + expected(3, 1) += inv_sqrt2 * eta(10); + expected(2, 3) += inv_sqrt2 * eta(11); + expected(3, 2) += inv_sqrt2 * eta(11); + + const double a = inv_sqrt2 * eta(12); + const double b = inv_sqrt6 * eta(13); + const double c = inv_sqrt12 * eta(14); + expected(0, 0) = a + b + c; + expected(1, 1) = -a + b + c; + expected(2, 2) = -2.0 * b + c; + expected(3, 3) = -3.0 * c; + + EXPECT(assert_equal(expected, SL4::Hat(eta), 1e-12)); +} + /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); } -/* ************************************************************************* */ \ No newline at end of file +/* ************************************************************************* */ diff --git a/gtsam/geometry/tests/testSimilarity2.cpp b/gtsam/geometry/tests/testSimilarity2.cpp index 3ad23cac2d..483f64a8ad 100644 --- a/gtsam/geometry/tests/testSimilarity2.cpp +++ b/gtsam/geometry/tests/testSimilarity2.cpp @@ -240,6 +240,60 @@ TEST(Similarity2, AdjointMap) { EXPECT(assert_equal(specialized_Adj, generic_Adj, 1e-9)); } +//****************************************************************************** +TEST(Similarity2, AdjointTranspose) { + const Similarity2 sim(Rot2::fromAngle(-0.7), Point2(1.5, -2.3), 0.5); + const Vector4 xi(0.2, -0.4, 0.7, -0.1); + + EXPECT(assert_equal(Vector(sim.AdjointMap().transpose() * xi), + Vector(sim.AdjointTranspose(xi)))); + + Matrix44 actualH1, actualH2; + std::function + adjointTransposeProxy = [](const Similarity2& g, const Vector4& x) { + return Vector4(g.AdjointTranspose(x)); + }; + sim.AdjointTranspose(xi, actualH1, actualH2); + EXPECT(assert_equal(numericalDerivative21(adjointTransposeProxy, sim, xi), + actualH1, 1e-8)); + EXPECT(assert_equal(numericalDerivative22(adjointTransposeProxy, sim, xi), + actualH2)); +} + +//****************************************************************************** +TEST(Similarity2, adjointTranspose) { + const Vector4 xi(0.2, -0.4, 0.7, -0.1); + const Vector4 y(-0.3, 0.5, 0.9, -0.2); + + std::function f = + [](const Vector4& x, const Vector4& v) { + return Vector4(Similarity2::adjointTranspose(x, v)); + }; + + Matrix44 Hxi, Hy; + const Vector4 actual = Similarity2::adjointTranspose(xi, y, Hxi, Hy); + EXPECT(assert_equal(f(xi, y), actual)); + EXPECT(assert_equal(numericalDerivative21(f, xi, y, 1e-5), Hxi, 1e-5)); + EXPECT(assert_equal(numericalDerivative22(f, xi, y, 1e-5), Hy, 1e-5)); +} + +//****************************************************************************** +TEST(Similarity2, adjoint) { + const Vector4 xi(0.2, -0.4, 0.7, -0.1); + const Vector4 y(-0.3, 0.5, 0.9, -0.2); + + std::function f = + [](const Vector4& x, const Vector4& v) { + return Vector4(Similarity2::adjoint(x, v)); + }; + + Matrix44 Hxi, Hy; + const Vector4 actual = Similarity2::adjoint(xi, y, Hxi, Hy); + EXPECT(assert_equal(f(xi, y), actual)); + EXPECT(assert_equal(numericalDerivative21(f, xi, y, 1e-5), Hxi, 1e-5)); + EXPECT(assert_equal(numericalDerivative22(f, xi, y, 1e-5), Hy, 1e-5)); +} + //****************************************************************************** int main() { TestResult tr; diff --git a/gtsam/geometry/tests/testSimilarity3.cpp b/gtsam/geometry/tests/testSimilarity3.cpp index f48a710f18..9ab493ce49 100644 --- a/gtsam/geometry/tests/testSimilarity3.cpp +++ b/gtsam/geometry/tests/testSimilarity3.cpp @@ -80,6 +80,39 @@ TEST(Similarity3, Getters) { EXPECT_DOUBLES_EQUAL(7.0, sim3.scale(), 1e-9); } +/* ************************************************************************* */ +// Check translation and its pushforward +TEST(Similarity3, translation) { + Matrix37 actualH; + EXPECT(assert_equal(Point3(3.5, -8.2, 4.2), T1.translation(&actualH), 1e-8)); + + std::function f = [](const Similarity3& T) { return T.translation(); }; + Matrix37 numericalH = numericalDerivative11(f, T1); + EXPECT(assert_equal(numericalH, actualH, 1e-6)); +} + +/* ************************************************************************* */ +// Check scale and its pushforward +TEST(Similarity3, scale) { + Matrix17 actualH; + EXPECT_DOUBLES_EQUAL(10.0, T5.scale(&actualH), 1e-8); + + std::function f = [](const Similarity3& T) { return T.scale(); }; + Matrix17 numericalH = numericalDerivative11(f, T5); + EXPECT(assert_equal(numericalH, actualH, 1e-6)); +} + +/* ************************************************************************* */ +// Check rotation and its pushforward +TEST(Similarity3, rotation) { + Matrix37 actualH; + EXPECT(assert_equal(Rot3::Rodrigues(0.3, 0.2, 0.1), T2.rotation(&actualH), 1e-8)); + + std::function f = [](const Similarity3& T) { return T.rotation(); }; + Matrix37 numericalH = numericalDerivative11(f, T2); + EXPECT(assert_equal(numericalH, actualH, 1e-6)); +} + /* ************************************************************************* */ TEST(Similarity3, HatAndVee) { // Create a few test vectors @@ -274,7 +307,7 @@ TEST(Similarity3, GroupAction) { Point3 q(1, 2, 3); for (const auto& T : { T1, T2, T3, T4, T5, T6 }) { - Point3 q(1, 0, 0); + // Point3 q(1, 2, 3); Matrix H1 = numericalDerivative21(f, T, q); Matrix H2 = numericalDerivative22(f, T, q); Matrix actualH1, actualH2; @@ -307,6 +340,29 @@ TEST(Similarity3, GroupActionPose3) { // objects now live in the world frame, instead of in the egovehicle frame EXPECT(assert_equal(expected_wTo1, wSe.transformFrom(eTo1))); EXPECT(assert_equal(expected_wTo2, wSe.transformFrom(eTo2))); + + Similarity3 wSe2(Rot3::RzRyRx(60 * degree, 50 * degree, 30 * degree), Point3(2, 3, 5), 2.0); + std::function + f = [](const Similarity3& S, const Pose3& T){ return S.transformFrom(T); }; + + { + Matrix H1 = numericalDerivative21(f, wSe2, eTo1); + Matrix H2 = numericalDerivative22(f, wSe2, eTo1); + Matrix actualH1, actualH2; + wSe2.transformFrom(eTo1, actualH1, actualH2); + EXPECT(assert_equal(H1, actualH1)); + EXPECT(assert_equal(H2, actualH2)); + } + + { + Pose3 eTo(Rot3::RzRyRx(20 * degree, -15 * degree, 10 * degree), Point3(1, 2, 3)); + Matrix H1 = numericalDerivative21(f, wSe2, eTo); + Matrix H2 = numericalDerivative22(f, wSe2, eTo); + Matrix actualH1, actualH2; + wSe2.transformFrom(eTo, actualH1, actualH2); + EXPECT(assert_equal(H1, actualH1)); + EXPECT(assert_equal(H2, actualH2)); + } } // Test left group action compatibility. @@ -597,10 +653,62 @@ TEST(Similarity3, AdjointMap) { EXPECT(assert_equal(specialized_Adj, generic_Adj, 1e-9)); } +//****************************************************************************** +TEST(Similarity3, AdjointTranspose) { + const Similarity3 sim(Rot3::Rodrigues(0.3, 0.2, 0.1), Point3(3.5, -8.2, 4.2), + 0.8); + const Vector7 xi(0.2, -0.4, 0.7, -0.1, 0.3, -0.6, 0.5); + + EXPECT(assert_equal(Vector(sim.AdjointMap().transpose() * xi), + Vector(sim.AdjointTranspose(xi)))); + + Matrix77 actualH1, actualH2; + std::function proxy = + [](const Similarity3& g, const Vector7& x) { + return Vector7(g.AdjointTranspose(x)); + }; + sim.AdjointTranspose(xi, actualH1, actualH2); + EXPECT(assert_equal(numericalDerivative21(proxy, sim, xi), actualH1, 1e-8)); + EXPECT(assert_equal(numericalDerivative22(proxy, sim, xi), actualH2)); +} + +//****************************************************************************** +TEST(Similarity3, adjointTranspose) { + const Vector7 xi(0.2, -0.4, 0.7, -0.1, 0.3, -0.6, 0.5); + const Vector7 y(-0.3, 0.5, 0.9, -0.2, 0.4, -0.8, 0.1); + + std::function f = + [](const Vector7& x, const Vector7& v) { + return Vector7(Similarity3::adjointTranspose(x, v)); + }; + + Matrix77 Hxi, Hy; + const Vector7 actual = Similarity3::adjointTranspose(xi, y, Hxi, Hy); + EXPECT(assert_equal(f(xi, y), actual)); + EXPECT(assert_equal(numericalDerivative21(f, xi, y, 1e-5), Hxi, 1e-5)); + EXPECT(assert_equal(numericalDerivative22(f, xi, y, 1e-5), Hy, 1e-5)); +} + +//****************************************************************************** +TEST(Similarity3, adjoint) { + const Vector7 xi(0.2, -0.4, 0.7, -0.1, 0.3, -0.6, 0.5); + const Vector7 y(-0.3, 0.5, 0.9, -0.2, 0.4, -0.8, 0.1); + + std::function f = + [](const Vector7& x, const Vector7& v) { + return Vector7(Similarity3::adjoint(x, v)); + }; + + Matrix77 Hxi, Hy; + const Vector7 actual = Similarity3::adjoint(xi, y, Hxi, Hy); + EXPECT(assert_equal(f(xi, y), actual)); + EXPECT(assert_equal(numericalDerivative21(f, xi, y, 1e-5), Hxi, 1e-5)); + EXPECT(assert_equal(numericalDerivative22(f, xi, y, 1e-5), Hy, 1e-5)); +} + //****************************************************************************** int main() { TestResult tr; return TestRegistry::runAllTests(tr); } //****************************************************************************** - diff --git a/gtsam/geometry/triangulation.h b/gtsam/geometry/triangulation.h index a715f32f99..ad105a7765 100644 --- a/gtsam/geometry/triangulation.h +++ b/gtsam/geometry/triangulation.h @@ -459,9 +459,11 @@ Point3 triangulatePoint3(const std::vector& poses, } // Then refine using non-linear optimization - if (optimize) + if (optimize) { + const auto noiseModel = noiseModel::validOrDefault(Point2(0, 0), model); point = triangulateNonlinear // - (poses, sharedCal, measurements, point, model); + (poses, sharedCal, measurements, point, noiseModel); + } #ifdef GTSAM_THROW_CHEIRALITY_EXCEPTION // verify that the triangulated point lies in front of all cameras diff --git a/gtsam/gtsam.i b/gtsam/gtsam.i index 39b5401e2b..3069601254 100644 --- a/gtsam/gtsam.i +++ b/gtsam/gtsam.i @@ -178,6 +178,8 @@ void perturbPoint2(gtsam::Values& values, double sigma, int seed = 42u); void perturbPose2(gtsam::Values& values, double sigmaT, double sigmaR, int seed = 42u); void perturbPoint3(gtsam::Values& values, double sigma, int seed = 42u); +void perturbPose3(gtsam::Values& values, double sigmaT, double sigmaR, + int seed = 42u); void insertBackprojections(gtsam::Values& values, const gtsam::PinholeCamera& c, gtsam::Vector J, gtsam::Matrix Z, double depth); diff --git a/gtsam/hybrid/HybridGaussianConditional.cpp b/gtsam/hybrid/HybridGaussianConditional.cpp index 51359de927..14496b355d 100644 --- a/gtsam/hybrid/HybridGaussianConditional.cpp +++ b/gtsam/hybrid/HybridGaussianConditional.cpp @@ -315,8 +315,8 @@ std::set DiscreteKeysAsSet(const DiscreteKeys &discreteKeys) { HybridGaussianConditional::shared_ptr HybridGaussianConditional::prune( const DiscreteConditional &discreteProbs) const { // Find keys in discreteProbs.keys() but not in this->keys(): - std::set mine(this->keys().begin(), this->keys().end()); - std::set theirs(discreteProbs.keys().begin(), + KeySet mine(this->keys().begin(), this->keys().end()); + KeySet theirs(discreteProbs.keys().begin(), discreteProbs.keys().end()); std::vector diff; std::set_difference(theirs.begin(), theirs.end(), mine.begin(), mine.end(), diff --git a/gtsam/hybrid/HybridNonlinearFactor.cpp b/gtsam/hybrid/HybridNonlinearFactor.cpp index 45c337c2f3..0573fb3495 100644 --- a/gtsam/hybrid/HybridNonlinearFactor.cpp +++ b/gtsam/hybrid/HybridNonlinearFactor.cpp @@ -216,8 +216,8 @@ std::shared_ptr HybridNonlinearFactor::linearize( HybridNonlinearFactor::shared_ptr HybridNonlinearFactor::prune( const DecisionTreeFactor& discreteProbs) const { // Find keys in discreteProbs.keys() but not in this->keys(): - std::set mine(this->keys().begin(), this->keys().end()); - std::set theirs(discreteProbs.keys().begin(), + KeySet mine(this->keys().begin(), this->keys().end()); + KeySet theirs(discreteProbs.keys().begin(), discreteProbs.keys().end()); std::vector diff; std::set_difference(theirs.begin(), theirs.end(), mine.begin(), mine.end(), diff --git a/gtsam/inference/BayesTree-inst.h b/gtsam/inference/BayesTree-inst.h index fc6a407b01..9de5b3f107 100644 --- a/gtsam/inference/BayesTree-inst.h +++ b/gtsam/inference/BayesTree-inst.h @@ -269,8 +269,35 @@ namespace gtsam { /* ************************************************************************* */ template bool BayesTree::equals(const BayesTree& other, double tol) const { - return size()==other.size() && - std::equal(nodes_.begin(), nodes_.end(), other.nodes_.begin(), &check_sharedCliques); + // Compare number of cliques first. + if (size() != other.size()) + return false; + + // Compare number of variables (nodes index size). + if (nodes_.size() != other.nodes_.size()) + return false; + + // Compare cliques by key so equality does not depend on the + // iteration order of the underlying ConcurrentMap. + for (const auto& kv : nodes_) { + const Key key = kv.first; + const sharedClique& clique = kv.second; + + auto it = other.nodes_.find(key); + if (it == other.nodes_.end()) + return false; + + const sharedClique& otherClique = it->second; + + if (!clique && !otherClique) + continue; + if (!clique || !otherClique) + return false; + if (!clique->equals(*otherClique, tol)) + return false; + } + + return true; } /* ************************************************************************* */ diff --git a/gtsam/inference/ClusterTree-inst.h b/gtsam/inference/ClusterTree-inst.h index c985c8f423..9fceca94f8 100644 --- a/gtsam/inference/ClusterTree-inst.h +++ b/gtsam/inference/ClusterTree-inst.h @@ -81,27 +81,40 @@ void ClusterTree::Cluster::merge(const std::shared_ptr& cluster) } /* ************************************************************************* */ -template +template void ClusterTree::Cluster::mergeChildren( const std::vector& merge) { + mergeChildren(childrenFromMask(merge)); +} + +/* ************************************************************************* */ +template +void ClusterTree::Cluster::mergeChildren( + const Children& selected) { gttic(Cluster_mergeChildren); - assert(merge.size() == this->children.size()); + // Merge selected children into this node while preserving unselected children. + if (selected.empty()) return; + + FastSet selectedSet; + for (const auto& child : selected) { + if (child) { + selectedSet.insert(child.get()); + } + } + if (selectedSet.empty()) return; // Count how many keys, factors and children we'll end up with size_t nrKeys = orderedFrontalKeys.size(); size_t nrFactors = factors.size(); size_t nrNewChildren = 0; - // Loop over children - size_t i = 0; - for(const sharedNode& child: this->children) { - if (merge[i]) { + for (const sharedNode& child : this->children) { + if (child && selectedSet.count(child.get()) != 0) { nrKeys += child->orderedFrontalKeys.size(); nrFactors += child->factors.size(); nrNewChildren += child->nrChildren(); } else { - nrNewChildren += 1; // we keep the child + nrNewChildren += 1; // we keep the child } - ++i; } // now reserve space, and really merge @@ -110,18 +123,84 @@ void ClusterTree::Cluster::mergeChildren( this->children.reserve(nrNewChildren); orderedFrontalKeys.reserve(nrKeys); factors.reserve(nrFactors); - i = 0; for (const sharedNode& child : oldChildren) { - if (merge[i]) { + if (child && selectedSet.count(child.get()) != 0) { this->merge(child); } else { this->addChild(child); // we keep the child } - ++i; } + // merge() appends keys in reverse order to defer a final reverse. std::reverse(orderedFrontalKeys.begin(), orderedFrontalKeys.end()); } +/* ************************************************************************* */ +template +void ClusterTree::Cluster::mergeChildrenSiblings( + const std::vector& merge) { + mergeChildrenSiblings(childrenFromMask(merge)); +} + +/* ************************************************************************* */ +template +void ClusterTree::Cluster::mergeChildrenSiblings( + const Children& selected) { + gttic(Cluster_mergeChildrenSiblings); + // Merge selected siblings into a new child while keeping unselected children. + if (selected.empty()) return; + + FastSet selectedSet; + for (const auto& child : selected) { + if (child) { + selectedSet.insert(child.get()); + } + } + const size_t selectedCount = selectedSet.size(); + // Nothing to merge (0 or 1 selected), so keep children unchanged. + if (selectedCount <= 1) return; + + auto oldChildren = this->children; + Children newChildren; + newChildren.reserve(oldChildren.size() - selectedCount + 1); + auto merged = std::make_shared(); + bool inserted = false; + + for (const sharedNode& child : oldChildren) { + if (child && selectedSet.count(child.get()) != 0) { + // Merge selected siblings into a single new cluster. + merged->merge(child); + if (!inserted) { + // Insert merged cluster at the first selected child's position. + newChildren.push_back(merged); + inserted = true; + } + } else { + newChildren.push_back(child); + } + } + + // merge() appends keys in reverse order to defer a final reverse. + std::reverse(merged->orderedFrontalKeys.begin(), + merged->orderedFrontalKeys.end()); + this->children.swap(newChildren); +} + +/* ************************************************************************* */ +template +typename ClusterTree::Cluster::Children +ClusterTree::Cluster::childrenFromMask( + const std::vector& merge) const { + assert(merge.size() == this->children.size()); + // Translate a boolean mask into the corresponding child pointers. + Children selected; + for (size_t i = 0; i < children.size(); ++i) { + if (merge[i]) { + selected.push_back(children[i]); + } + } + return selected; +} + /* ************************************************************************* */ template void ClusterTree::print(const std::string& s, const KeyFormatter& keyFormatter) const { diff --git a/gtsam/inference/ClusterTree.h b/gtsam/inference/ClusterTree.h index abddb60f16..247eb6f4df 100644 --- a/gtsam/inference/ClusterTree.h +++ b/gtsam/inference/ClusterTree.h @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -107,6 +108,18 @@ class ClusterTree { /// Merge all children for which bit is set into this node void mergeChildren(const std::vector& merge); + + /** Merge selected siblings into a new child cluster. */ + void mergeChildrenSiblings(const std::vector& merge); + + /** Merge selected children (provided as pointers) into this node. */ + void mergeChildren(const Children& selected); + + /** Merge selected siblings (provided as pointers) into a new child. */ + void mergeChildrenSiblings(const Children& selected); + + /** Convert a child-selection mask into the selected child pointers. */ + Children childrenFromMask(const std::vector& merge) const; }; typedef std::shared_ptr sharedCluster; ///< Shared pointer to Cluster diff --git a/gtsam/inference/DotWriter.h b/gtsam/inference/DotWriter.h index ff20f5fa08..7cb13dfbbe 100644 --- a/gtsam/inference/DotWriter.h +++ b/gtsam/inference/DotWriter.h @@ -55,7 +55,7 @@ struct GTSAM_EXPORT DotWriter { std::map positionHints; /** A set of keys that will be displayed as a box */ - std::set boxes; + KeySet boxes; /** * Factor positions can be optionally specified and will be included in the diff --git a/gtsam/inference/EliminateableFactorGraph-inst.h b/gtsam/inference/EliminateableFactorGraph-inst.h index f6b11f785c..6605392925 100644 --- a/gtsam/inference/EliminateableFactorGraph-inst.h +++ b/gtsam/inference/EliminateableFactorGraph-inst.h @@ -20,6 +20,13 @@ #include #include +#include +#include + +#ifdef GTSAM_USE_TBB +#include +#endif +#include namespace gtsam { @@ -145,6 +152,148 @@ namespace gtsam { } } + /* ************************************************************************* */ + template + IndexedJunctionTree + EliminateableFactorGraph::buildIndexedJunctionTree( + const Ordering& ordering, + const std::unordered_set& fixedKeys) const { + return IndexedJunctionTree(asDerived(), ordering, fixedKeys); + } + + /* ************************************************************************* */ + template + std::shared_ptr::BayesTreeType> + EliminateableFactorGraph::eliminateMultifrontal( + const IndexedJunctionTree& indexedJunctionTree, + const Eliminate& function) const { + gttic(eliminateMultifrontal); + + using BayesTreeNode = typename BayesTreeType::Node; + using SharedFactor = typename FactorGraphType::sharedFactor; + + // Elimination traversal data - stores a pointer to the parent data and collects + // the factors resulting from elimination of the children. Also sets up BayesTree + // cliques with parent and child pointers. + struct ClusterEliminationData { + ClusterEliminationData* const parentData; + size_t myIndexInParent; + FastVector childFactors; + std::shared_ptr bayesTreeNode; +#ifdef GTSAM_USE_TBB + std::shared_ptr writeLock; +#endif + + ClusterEliminationData(ClusterEliminationData* _parentData, size_t nChildren) + : parentData(_parentData), bayesTreeNode(std::make_shared()) +#ifdef GTSAM_USE_TBB + , writeLock(std::make_shared()) +#endif + { + if (parentData) { +#ifdef GTSAM_USE_TBB + parentData->writeLock->lock(); +#endif + myIndexInParent = parentData->childFactors.size(); + parentData->childFactors.push_back(SharedFactor()); +#ifdef GTSAM_USE_TBB + parentData->writeLock->unlock(); +#endif + } else { + myIndexInParent = 0; + } + if (parentData) { + if (parentData->parentData) + bayesTreeNode->parent_ = parentData->bayesTreeNode; + parentData->bayesTreeNode->children.push_back(bayesTreeNode); + } + } + + static ClusterEliminationData EliminationPreOrderVisitor( + const SymbolicJunctionTree::sharedNode& node, + ClusterEliminationData& parentData) { + assert(node); + ClusterEliminationData myData(&parentData, node->nrChildren()); + myData.bayesTreeNode->problemSize_ = node->problemSize(); + return myData; + } + }; + + // Elimination post-order visitor - gather factors, eliminate, store results. + class EliminationPostOrderVisitor { + const FactorGraphType& graph_; + const Eliminate& eliminationFunction_; + + public: + EliminationPostOrderVisitor( + const FactorGraphType& graph, + const Eliminate& eliminationFunction) + : graph_(graph), eliminationFunction_(eliminationFunction) {} + + void operator()(const SymbolicJunctionTree::sharedNode& node, + ClusterEliminationData& myData) { + assert(node); + + FactorGraphType gatheredFactors; + gatheredFactors.reserve(node->factors.size() + node->nrChildren()); + + for (const auto& factor : node->factors) { + auto indexed = + std::static_pointer_cast(factor); + gatheredFactors.push_back(graph_.at(indexed->index_)); + } + gatheredFactors.push_back(myData.childFactors); + + auto eliminationResult = + eliminationFunction_(gatheredFactors, node->orderedFrontalKeys); + + myData.bayesTreeNode->setEliminationResult(eliminationResult); + + if (!eliminationResult.second->empty()) { +#ifdef GTSAM_USE_TBB + myData.parentData->writeLock->lock(); +#endif + myData.parentData->childFactors[myData.myIndexInParent] = + eliminationResult.second; +#ifdef GTSAM_USE_TBB + myData.parentData->writeLock->unlock(); +#endif + } + } + }; + + // Do elimination (depth-first traversal). The rootsContainer stores a 'dummy' + // BayesTree node that contains all of the roots as its children. rootsContainer + // also stores the remaining un-eliminated factors passed up from the roots. + std::shared_ptr result = std::make_shared(); + + ClusterEliminationData rootsContainer(0, indexedJunctionTree.nrRoots()); + + EliminationPostOrderVisitor visitorPost(asDerived(), function); + { + TbbOpenMPMixedScope threadLimiter; + treeTraversal::DepthFirstForestParallel( + indexedJunctionTree, rootsContainer, + ClusterEliminationData::EliminationPreOrderVisitor, visitorPost, 10); + } + + // Create BayesTree from roots stored in the dummy BayesTree node. + for (const auto& rootClique : rootsContainer.bayesTreeNode->children) + result->insertRoot(rootClique); + + // If any factors are remaining, the ordering was incomplete. + KeySet remainingKeys; + for (const auto& factor : rootsContainer.childFactors) { + if (!factor || factor->empty()) continue; + remainingKeys.insert(factor->begin(), factor->end()); + } + if (!remainingKeys.empty()) { + throw InconsistentEliminationRequested(remainingKeys); + } + + return result; + } + /* ************************************************************************* */ template std::pair::BayesNetType>, std::shared_ptr > diff --git a/gtsam/inference/EliminateableFactorGraph.h b/gtsam/inference/EliminateableFactorGraph.h index 52e1479a9c..4d3a19e882 100644 --- a/gtsam/inference/EliminateableFactorGraph.h +++ b/gtsam/inference/EliminateableFactorGraph.h @@ -19,14 +19,17 @@ #pragma once #include -#include #include #include +#include #include #include namespace gtsam { + // Forward declaration + class IndexedJunctionTree; + /// Traits class for eliminateable factor graphs, specifies the types that result from /// elimination, etc. This must be defined for each factor graph that inherits from /// EliminateableFactorGraph. @@ -94,6 +97,20 @@ namespace gtsam { /// Typedef for an optional ordering type typedef std::optional OptionalOrderingType; + /** + * Build an `IndexedJunctionTree` for this factor graph and a fixed ordering. + * + * This structure can be cached and reused for repeated eliminations when the + * factor graph structure and ordering are unchanged. + * + * @param ordering The elimination ordering + * @param fixedKeys Optional set of keys to filter out (e.g., from hard constraints) + * @return An IndexedJunctionTree that can be reused for elimination + */ + IndexedJunctionTree buildIndexedJunctionTree( + const Ordering& ordering, + const std::unordered_set& fixedKeys = {}) const; + /** Do sequential elimination of all variables to produce a Bayes net. If an ordering is not * provided, the ordering provided by COLAMD will be used. * @@ -173,6 +190,23 @@ namespace gtsam { const Eliminate& function = EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex = {}) const; + /** + * Do multifrontal elimination using a pre-built `IndexedJunctionTree`. + * + * This eliminates the factor graph following the cluster structure encoded in + * the indexed junction tree and calls the provided dense elimination function + * on each cluster. The indexed junction tree must have been built from a + * factor graph with the same factor ordering/indices and the same variable + * ordering. + * + * @param indexedJunctionTree Pre-built indexed junction tree + * @param function The elimination function to use for each cluster + * @return A Bayes tree containing the elimination results + */ + std::shared_ptr eliminateMultifrontal( + const IndexedJunctionTree& indexedJunctionTree, + const Eliminate& function = EliminationTraitsType::DefaultEliminate) const; + /** Do sequential elimination of some variables, in \c ordering provided, to produce a Bayes net * and a remaining factor graph. This computes the factorization \f$ p(X) = p(A|B) p(B) \f$, * where \f$ A = \f$ \c variables, \f$ X \f$ is all the variables in the factor graph, and \f$ diff --git a/gtsam/inference/MetisIndex-inl.h b/gtsam/inference/MetisIndex-inl.h index 32741aee67..1af3be3366 100644 --- a/gtsam/inference/MetisIndex-inl.h +++ b/gtsam/inference/MetisIndex-inl.h @@ -29,7 +29,7 @@ template void MetisIndex::augment(const FactorGraphType& factors) { std::map > iAdjMap; // Stores a set of keys that are adjacent to key x, with adjMap.first std::map >::iterator iAdjMapIt; - std::set keySet; + KeySet keySet; /* ********** Convert to CSR format ********** */ // Assuming that vertex numbering starts from 0 (C style), diff --git a/gtsam/inference/inference.i b/gtsam/inference/inference.i index e5ccc4f891..a55ea9d8e9 100644 --- a/gtsam/inference/inference.i +++ b/gtsam/inference/inference.i @@ -189,7 +189,7 @@ class DotWriter { std::map variablePositions; std::map positionHints; - std::set boxes; + gtsam::KeySet boxes; std::map factorPositions; }; diff --git a/gtsam/linear/Errors.cpp b/gtsam/linear/Errors.cpp index d36b647cec..921b660911 100644 --- a/gtsam/linear/Errors.cpp +++ b/gtsam/linear/Errors.cpp @@ -27,9 +27,9 @@ namespace gtsam { /* ************************************************************************* */ Errors createErrors(const VectorValues& V) { Errors result; - for (const auto& [key, e] : V) { - result.push_back(e); - } + // Use a key-sorted view of VectorValues so the resulting Errors + // order is deterministic and independent of the underlying map. + for (const auto& [key, e] : V.sorted()) result.push_back(e); return result; } diff --git a/gtsam/linear/GaussianConditional.cpp b/gtsam/linear/GaussianConditional.cpp index 8d3b0fa61e..08c5551853 100644 --- a/gtsam/linear/GaussianConditional.cpp +++ b/gtsam/linear/GaussianConditional.cpp @@ -244,7 +244,7 @@ namespace gtsam { /* ************************************************************************* */ VectorValues GaussianConditional::solveOtherRHS( - const VectorValues& parents, const VectorValues& rhs) const { + const VectorValues& parents, const VectorValues& rhs) const { // Concatenate all vector values that correspond to parent variables Vector xS = parents.vector(KeyVector(beginParents(), endParents())); @@ -253,17 +253,18 @@ namespace gtsam { xS = rhsR - S() * xS; // Solve Matrix - Vector soln = R().triangularView().solve(xS); + Vector solution = R().triangularView().solve(xS); // Scale by sigmas - if (model_) - soln.array() *= model_->sigmas().array(); + if (model_) solution.array() *= model_->sigmasRef().array(); // Insert solution into a VectorValues VectorValues result; DenseIndex vectorPosition = 0; - for (const_iterator frontal = beginFrontals(); frontal != endFrontals(); ++frontal) { - result.emplace(*frontal, soln.segment(vectorPosition, getDim(frontal))); + for (const_iterator frontal = beginFrontals(); frontal != endFrontals(); + ++frontal) { + result.emplace(*frontal, + solution.segment(vectorPosition, getDim(frontal))); vectorPosition += getDim(frontal); } @@ -283,7 +284,7 @@ namespace gtsam { // Scale by sigmas if (model_) - frontalVec.array() *= model_->sigmas().array(); + frontalVec.array() *= model_->sigmasRef().array(); // Write frontal solution into a VectorValues DenseIndex vectorPosition = 0; @@ -305,23 +306,36 @@ namespace gtsam { const Vector x = frontalValues.vector(KeyVector(beginFrontals(), endFrontals())); - // Copy the augmented Jacobian matrix: - auto newAb = Ab_; + // Compute updated right-hand side: d - R * x + const auto RR = R().triangularView(); + const Vector rhs = d() - RR * x; - // Restrict view to parent blocks - newAb.firstBlock() += nrFrontals_; + // Collect parent dimensions + FastVector parentDims; + parentDims.reserve(nrParents()); + for (auto it = beginParents(); it != endParents(); ++it) { + parentDims.push_back(getDim(it)); + } - // Update right-hand-side (last column) - auto last = newAb.matrix().cols() - 1; - const auto RR = R().triangularView(); - newAb.matrix().col(last) -= RR * x; + // Build a VerticalBlockMatrix containing only parent blocks and RHS. + const DenseIndex m = rows(); + VerticalBlockMatrix newAb(parentDims, m, true); + + // Copy parent blocks (S matrices). + DenseIndex blockIndex = 0; + for (auto it = beginParents(); it != endParents(); ++it, ++blockIndex) { + newAb(blockIndex) = S(it); + } + + // Set the RHS block. + const DenseIndex lastBlock = newAb.nBlocks() - 1; + newAb(lastBlock).col(0) = rhs; // The keys now do not include the frontal keys: KeyVector newKeys; newKeys.reserve(nrParents()); for (auto&& key : parents()) newKeys.push_back(key); - // Hopefully second newAb copy below is optimized out... return std::make_shared(newKeys, newAb, model_); } @@ -354,8 +368,11 @@ namespace gtsam { // The vector of sigma values for sampling. // If no model, initialize sigmas to 1, else to model sigmas - const Vector& sigmas = (!model_) ? Vector::Ones(rows()) : model_->sigmas(); - solution[key] += Sampler::sampleDiagonal(sigmas, rng); + if (model_) { + solution[key] += Sampler::sampleDiagonal(model_->sigmasRef(), rng); + } else { + solution[key] += Sampler::sampleDiagonal(Vector::Ones(rows()), rng); + } return solution; } diff --git a/gtsam/linear/GaussianFactor.cpp b/gtsam/linear/GaussianFactor.cpp index e60e626a1d..9d3197da7b 100644 --- a/gtsam/linear/GaussianFactor.cpp +++ b/gtsam/linear/GaussianFactor.cpp @@ -28,6 +28,20 @@ double GaussianFactor::error(const VectorValues& c) const { throw std::runtime_error("GaussianFactor::error is not implemented"); } +double GaussianFactor::deltaError(const VectorValues& c, double* oldError, + double* newError) const { + const VectorValues zero = VectorValues::Zero(c); + const double oldValue = error(zero); + const double newValue = error(c); + if (oldError) { + *oldError = oldValue; + } + if (newError) { + *newError = newValue; + } + return oldValue - newValue; +} + double GaussianFactor::error(const HybridValues& c) const { return this->error(c.continuous()); } diff --git a/gtsam/linear/GaussianFactor.h b/gtsam/linear/GaussianFactor.h index 253bbff0f0..2f873bbfbb 100644 --- a/gtsam/linear/GaussianFactor.h +++ b/gtsam/linear/GaussianFactor.h @@ -78,6 +78,13 @@ namespace gtsam { */ virtual double error(const VectorValues& c) const; + /** + * Compute the change in error from zero to c. Optionally return the old + * and new errors for reuse by callers. + */ + virtual double deltaError(const VectorValues& c, double* oldError = nullptr, + double* newError = nullptr) const; + /** * The Factor::error simply extracts the \class VectorValues from the * \class HybridValues and calculates the error. @@ -150,6 +157,18 @@ namespace gtsam { virtual void updateHessian(const KeyVector& keys, SymmetricBlockMatrix* info) const = 0; + /** Update an information matrix by adding the information corresponding to this factor + * (used internally during elimination), restricted to a range of block columns, + * useful for parallelization. + * @param keys The ordered vector of keys for the information matrix to be updated + * @param info The information matrix to be updated + * @param beginCol First block column index (inclusive) in the range to update + * @param endCol Last block column index (exclusive) in the range to update + */ + virtual void updateHessian(const KeyVector& keys, + SymmetricBlockMatrix* info, + DenseIndex beginCol, DenseIndex endCol) const = 0; + /// @} /// @name Operator interface /// @{ @@ -170,6 +189,9 @@ namespace gtsam { /// @name Advanced Interface /// @{ + /// Fast check for JacobianFactor-based types. + virtual bool isJacobian() const { return false; } + // Determine position of a given key template static DenseIndex Slot(const CONTAINER& keys, Key key) { diff --git a/gtsam/linear/GaussianFactorGraph.cpp b/gtsam/linear/GaussianFactorGraph.cpp index cb42f0a2fe..1b1c6661b2 100644 --- a/gtsam/linear/GaussianFactorGraph.cpp +++ b/gtsam/linear/GaussianFactorGraph.cpp @@ -77,6 +77,35 @@ namespace gtsam { return total_error; } + /* ************************************************************************* */ + double GaussianFactorGraph::deltaError(const VectorValues& x, double* oldError, + double* newError) const { + double oldTotal = 0.0; + double newTotal = 0.0; + double deltaTotal = 0.0; + for (const sharedFactor& factor : *this) { + if (!factor) { + continue; + } + if (oldError || newError) { + double factorOld = 0.0; + double factorNew = 0.0; + deltaTotal += factor->deltaError(x, &factorOld, &factorNew); + oldTotal += factorOld; + newTotal += factorNew; + } else { + deltaTotal += factor->deltaError(x, nullptr, nullptr); + } + } + if (oldError) { + *oldError = oldTotal; + } + if (newError) { + *newError = newTotal; + } + return deltaTotal; + } + /* ************************************************************************* */ double GaussianFactorGraph::probPrime(const VectorValues& c) const { // NOTE the 0.5 constant is handled by the factor error. diff --git a/gtsam/linear/GaussianFactorGraph.h b/gtsam/linear/GaussianFactorGraph.h index 684518afda..86db0b3883 100644 --- a/gtsam/linear/GaussianFactorGraph.h +++ b/gtsam/linear/GaussianFactorGraph.h @@ -167,6 +167,13 @@ namespace gtsam { /** unnormalized error */ double error(const VectorValues& x) const; + /** + * Compute the change in error from zero to x, using a single pass + * over the factors. Optionally returns the old and new errors. + */ + double deltaError(const VectorValues& x, double* oldError = nullptr, + double* newError = nullptr) const; + /** Unnormalized probability. O(n) */ double probPrime(const VectorValues& c) const; diff --git a/gtsam/linear/HessianFactor.cpp b/gtsam/linear/HessianFactor.cpp index d6141b6c0f..9db4472c94 100644 --- a/gtsam/linear/HessianFactor.cpp +++ b/gtsam/linear/HessianFactor.cpp @@ -34,6 +34,14 @@ #include #include +#ifdef GTSAM_USE_TBB + #include + #include + #include + #include + #include +#endif + using namespace std; namespace gtsam { @@ -241,17 +249,60 @@ HessianFactor::HessianFactor(const GaussianFactorGraph& factors, const Scatter& scatter) { gttic(HessianFactor_MergeConstructor); + gttic(Allocate); Allocate(scatter); + gttoc(Allocate); + +#if defined(GTSAM_USE_TBB) + constexpr DenseIndex kParallelThresholdHeuristic = 50; + if (info_.rows() > kParallelThresholdHeuristic) { + gttic(updateHessian_TBB); + + const DenseIndex M = info_.nBlocks(); + + auto numThreads = std::min( + static_cast(oneapi::tbb::global_control::active_value( + oneapi::tbb::global_control::max_allowed_parallelism)), + static_cast(oneapi::tbb::this_task_arena::max_concurrency())); + + if (numThreads > 1) { + DenseIndex grain = std::max(1, M / (2 * numThreads)); + tbb::parallel_for(tbb::blocked_range(0, M, grain), + [&, M](const tbb::blocked_range& range) { + // reverse the range to start from the end because + // matrix is upper triangular and therefore end is + // larger than begin so we would like to start with + // the last column that is the most work and go to the + // first column that is least. + DenseIndex beginCol = M - range.end(); + DenseIndex endCol = M - range.begin(); + info_.setZeroColumns(beginCol, endCol); + for (const auto& factor : factors) { + if (factor) { + factor->updateHessian(keys_, &info_, beginCol, + endCol); + } + } + }); + return; + } + } +#endif + gttic(setAllZero); + info_.setAllZero(); + gttoc(setAllZero); + + gttic(updateHessian); // Form A' * A - gttic(update); - info_.setAllZero(); - for(const auto& factor: factors) - if (factor) + for (const auto& factor : factors) { + if (factor) { factor->updateHessian(keys_, &info_); - gttoc(update); + } + } } + /* ************************************************************************* */ void HessianFactor::print(const std::string& s, const KeyFormatter& formatter) const { @@ -335,16 +386,26 @@ double HessianFactor::error(const VectorValues& c) const { if (empty()) { return 0.5 * f; } - double xtg = 0, xGx = 0; // extract the relevant subset of the VectorValues // NOTE may not be as efficient const Vector x = c.vector(keys()); - xtg = x.dot(linearTerm().col(0)); - auto AtA = informationView(); - xGx = x.transpose() * AtA * x; + const double xtg = x.dot(linearTerm().col(0)); + const auto AtA = informationView(); + const double xGx = x.dot(AtA * x); return 0.5 * (f - 2.0 * xtg + xGx); } +/* ************************************************************************* */ +double HessianFactor::deltaError(const VectorValues& c, double* oldError, + double* newError) const { + const double f = constantTerm(); + const double oldValue = 0.5 * f; + double newValue = error(c); + if (oldError) *oldError = oldValue; + if (newError) *newError = newValue; + return oldValue - newValue; +} + /* ************************************************************************* */ void HessianFactor::updateHessian(const KeyVector& infoKeys, SymmetricBlockMatrix* info) const { @@ -352,14 +413,58 @@ void HessianFactor::updateHessian(const KeyVector& infoKeys, gttic(updateHessian_HessianFactor); const DenseIndex nrVariablesInThisFactor = size(); + gttic(slots); vector slots(nrVariablesInThisFactor + 1); for (DenseIndex j = 0; j < nrVariablesInThisFactor; ++j) slots[j] = Slot(infoKeys, keys_[j]); + slots[nrVariablesInThisFactor] = info->nBlocks() - 1; + gttoc(slots); info->updateFromMappedBlocks(info_, slots); } +/* ************************************************************************* */ +void HessianFactor::updateHessian(const KeyVector& infoKeys, + SymmetricBlockMatrix* info, + DenseIndex beginCol, + DenseIndex endCol) const { + assert(info); + const DenseIndex nrVariablesInThisFactor = size(); + + vector slots; + slots.reserve(nrVariablesInThisFactor + 1); + + for (DenseIndex j = 0; j < nrVariablesInThisFactor; ++j) { + slots.push_back(Slot(infoKeys, keys_[j])); + } + slots.push_back(info->nBlocks() - 1); + + for (DenseIndex j = 0; j <= nrVariablesInThisFactor; ++j) { + const DenseIndex J = slots[j]; + // Update diagonal block if J is in range + if (J >= beginCol && J < endCol) { + info->updateDiagonalBlock(J, info_.diagonalBlock(j)); + } + + // Update off-diagonal blocks where column max(I, J) is in range + // Note: We process all blocks and let the maxCol check filter them, + // because I and J may be in different orders (slots are not necessarily sorted) + for (DenseIndex i = 0; i < j; ++i) { + const DenseIndex I = slots[i]; + assert(i < j); + assert(I != J); + + // The physical column index in the symmetric matrix is max(I, J) + const DenseIndex maxCol = std::max(I, J); + + if (maxCol >= beginCol && maxCol < endCol) { + info->updateOffDiagonalBlock(I, J, info_.aboveDiagonalBlock(i, j)); + } + } + } +} + /* ************************************************************************* */ GaussianFactor::shared_ptr HessianFactor::negate() const { shared_ptr result = std::make_shared(*this); diff --git a/gtsam/linear/HessianFactor.h b/gtsam/linear/HessianFactor.h index 189020712a..f0d487c424 100644 --- a/gtsam/linear/HessianFactor.h +++ b/gtsam/linear/HessianFactor.h @@ -203,6 +203,13 @@ namespace gtsam { */ double error(const VectorValues& c) const override; + /** + * Compute the change in error from zero to c, optionally returning + * the old and new errors. + */ + double deltaError(const VectorValues& c, double* oldError = nullptr, + double* newError = nullptr) const override; + /** Return the dimension of the variable pointed to by the given key iterator * todo: Remove this in favor of keeping track of dimensions with variables? * @param variable An iterator pointing to the slot in this factor. You can @@ -326,6 +333,17 @@ namespace gtsam { */ void updateHessian(const KeyVector& keys, SymmetricBlockMatrix* info) const override; + /** Update an information matrix by adding the information corresponding to this factor + * (used internally during elimination), restricted to a range of block columns, + * useful for parallelization. + * @param keys The ordered vector of keys for the information matrix to be updated + * @param info The information matrix to be updated + * @param beginCol First block column index (inclusive) in the range to update + * @param endCol Last block column index (exclusive) in the range to update + */ + void updateHessian(const KeyVector& keys, SymmetricBlockMatrix* info, + DenseIndex beginCol, DenseIndex endCol) const override; + /** Update another Hessian factor * @param other the HessianFactor to be updated */ diff --git a/gtsam/linear/JacobianFactor-inl.h b/gtsam/linear/JacobianFactor-inl.h index e616091e84..8ddb876f2d 100644 --- a/gtsam/linear/JacobianFactor-inl.h +++ b/gtsam/linear/JacobianFactor-inl.h @@ -20,6 +20,8 @@ #include +#include + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 13 #pragma GCC diagnostic warning "-Wstringop-overread" #endif @@ -33,6 +35,69 @@ namespace gtsam { fillTerms(terms, b, model); } + /* ************************************************************************* */ + template + JacobianFactor::JacobianFactor(Key i1, const Eigen::Matrix& A1, + const Eigen::Matrix& b, + const SharedDiagonal& model) + : Base(std::array{{i1}}) { + const DenseIndex rows = static_cast(b.rows()); + if (model && (DenseIndex)model->dim() != rows) + throw InvalidNoiseModel(rows, model->dim()); + + const std::array dims = { + static_cast(A1.cols())}; + Ab_ = VerticalBlockMatrix(dims, rows, true); + Ab_(0) = A1; + getb() = b; + model_ = model; + } + + /* ************************************************************************* */ + template + JacobianFactor::JacobianFactor(Key i1, const Eigen::Matrix& A1, + Key i2, const Eigen::Matrix& A2, + const Eigen::Matrix& b, + const SharedDiagonal& model) + : Base(std::array{{i1, i2}}) { + const DenseIndex rows = static_cast(b.rows()); + if (model && (DenseIndex)model->dim() != rows) + throw InvalidNoiseModel(rows, model->dim()); + + const std::array dims = { + static_cast(A1.cols()), + static_cast(A2.cols())}; + Ab_ = VerticalBlockMatrix(dims, rows, true); + Ab_(0) = A1; + Ab_(1) = A2; + getb() = b; + model_ = model; + } + + /* ************************************************************************* */ + template + JacobianFactor::JacobianFactor(Key i1, const Eigen::Matrix& A1, + Key i2, const Eigen::Matrix& A2, + Key i3, const Eigen::Matrix& A3, + const Eigen::Matrix& b, + const SharedDiagonal& model) + : Base(std::array{{i1, i2, i3}}) { + const DenseIndex rows = static_cast(b.rows()); + if (model && (DenseIndex)model->dim() != rows) + throw InvalidNoiseModel(rows, model->dim()); + + const std::array dims = { + static_cast(A1.cols()), + static_cast(A2.cols()), + static_cast(A3.cols())}; + Ab_ = VerticalBlockMatrix(dims, rows, true); + Ab_(0) = A1; + Ab_(1) = A2; + Ab_(2) = A3; + getb() = b; + model_ = model; + } + /* ************************************************************************* */ template JacobianFactor::JacobianFactor(const KEYS& keys, @@ -101,4 +166,3 @@ namespace gtsam { } } // gtsam - diff --git a/gtsam/linear/JacobianFactor.cpp b/gtsam/linear/JacobianFactor.cpp index 9f4d6daf8c..76c145ca37 100644 --- a/gtsam/linear/JacobianFactor.cpp +++ b/gtsam/linear/JacobianFactor.cpp @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -41,7 +42,6 @@ namespace gtsam { // Typedefs used in constructors below. using Dims = std::vector; -using Pairs = std::vector>; /* ************************************************************************* */ JacobianFactor::JacobianFactor() : @@ -69,21 +69,58 @@ JacobianFactor::JacobianFactor(const Vector& b_in) : /* ************************************************************************* */ JacobianFactor::JacobianFactor(Key i1, const Matrix& A1, const Vector& b, - const SharedDiagonal& model) { - fillTerms(Pairs{{i1, A1}}, b, model); + const SharedDiagonal& model) + : Base(std::array{{i1}}) { + if (model && (DenseIndex)model->dim() != b.size()) + throw InvalidNoiseModel(b.size(), model->dim()); + if (A1.rows() != b.size()) throw InvalidMatrixBlock(b.size(), A1.rows()); + + const std::array dims = {static_cast(A1.cols())}; + Ab_ = VerticalBlockMatrix(dims, b.size(), true); + Ab_(0) = A1; + getb() = b; + model_ = model; } /* ************************************************************************* */ JacobianFactor::JacobianFactor(const Key i1, const Matrix& A1, Key i2, - const Matrix& A2, const Vector& b, const SharedDiagonal& model) { - fillTerms(Pairs{{i1, A1}, {i2, A2}}, b, model); + const Matrix& A2, const Vector& b, + const SharedDiagonal& model) + : Base(std::array{{i1, i2}}) { + if (model && (DenseIndex)model->dim() != b.size()) + throw InvalidNoiseModel(b.size(), model->dim()); + if (A1.rows() != b.size()) throw InvalidMatrixBlock(b.size(), A1.rows()); + if (A2.rows() != b.size()) throw InvalidMatrixBlock(b.size(), A2.rows()); + + const std::array dims = {static_cast(A1.cols()), + static_cast(A2.cols())}; + Ab_ = VerticalBlockMatrix(dims, b.size(), true); + Ab_(0) = A1; + Ab_(1) = A2; + getb() = b; + model_ = model; } /* ************************************************************************* */ JacobianFactor::JacobianFactor(const Key i1, const Matrix& A1, Key i2, - const Matrix& A2, Key i3, const Matrix& A3, const Vector& b, - const SharedDiagonal& model) { - fillTerms(Pairs{{i1, A1}, {i2, A2}, {i3, A3}}, b, model); + const Matrix& A2, Key i3, const Matrix& A3, + const Vector& b, const SharedDiagonal& model) + : Base(std::array{{i1, i2, i3}}) { + if (model && (DenseIndex)model->dim() != b.size()) + throw InvalidNoiseModel(b.size(), model->dim()); + if (A1.rows() != b.size()) throw InvalidMatrixBlock(b.size(), A1.rows()); + if (A2.rows() != b.size()) throw InvalidMatrixBlock(b.size(), A2.rows()); + if (A3.rows() != b.size()) throw InvalidMatrixBlock(b.size(), A3.rows()); + + const std::array dims = {static_cast(A1.cols()), + static_cast(A2.cols()), + static_cast(A3.cols())}; + Ab_ = VerticalBlockMatrix(dims, b.size(), true); + Ab_(0) = A1; + Ab_(1) = A2; + Ab_(2) = A3; + getb() = b; + model_ = model; } /* ************************************************************************* */ @@ -225,6 +262,21 @@ FastVector _convertOrCastToJacobians( } /* ************************************************************************* */ +static std::vector _computeRowOffsets( + const FastVector& jacobians) { + std::vector rowOffsets; + rowOffsets.reserve(jacobians.size()); + DenseIndex nextRow = 0; + for (const auto& jacobian : jacobians) { + rowOffsets.push_back(nextRow); + const DenseIndex rows = jacobian->rows(); + if (rows > 0) { + nextRow += rows; + } + } + return rowOffsets; +} + void JacobianFactor::JacobianFactorHelper(const GaussianFactorGraph& graph, const FastVector& orderedSlots) { @@ -235,6 +287,9 @@ void JacobianFactor::JacobianFactorHelper(const GaussianFactorGraph& graph, // Count dimensions const auto [varDims, m, n] = _countDims(jacobians, orderedSlots); + // Precompute row offsets once to avoid recomputing row starts per slot. + std::vector rowOffsets = _computeRowOffsets(jacobians); + // Allocate matrix and copy keys in order gttic(allocate); Ab_ = VerticalBlockMatrix(varDims, m, true); // Allocate augmented matrix @@ -251,12 +306,12 @@ void JacobianFactor::JacobianFactorHelper(const GaussianFactorGraph& graph, for(VariableSlots::const_iterator varslot: orderedSlots) { JacobianFactor::ABlock destSlot(this->getA(this->begin() + combinedSlot)); // Loop over source jacobians - DenseIndex nextRow = 0; for (size_t factorI = 0; factorI < jacobians.size(); ++factorI) { // Slot in source factor const size_t sourceSlot = varslot->second[factorI]; const DenseIndex sourceRows = jacobians[factorI]->rows(); if (sourceRows > 0) { + DenseIndex nextRow = rowOffsets[factorI]; JacobianFactor::ABlock::RowsBlockXpr destBlock( destSlot.middleRows(nextRow, sourceRows)); // Copy if exists in source factor, otherwise set zero @@ -265,7 +320,6 @@ void JacobianFactor::JacobianFactorHelper(const GaussianFactorGraph& graph, jacobians[factorI]->begin() + sourceSlot); else destBlock.setZero(); - nextRow += sourceRows; } } ++combinedSlot; @@ -277,21 +331,20 @@ void JacobianFactor::JacobianFactorHelper(const GaussianFactorGraph& graph, bool anyConstrained = false; std::optional sigmas; // Loop over source jacobians - DenseIndex nextRow = 0; for (size_t factorI = 0; factorI < jacobians.size(); ++factorI) { const DenseIndex sourceRows = jacobians[factorI]->rows(); if (sourceRows > 0) { + DenseIndex nextRow = rowOffsets[factorI]; this->getb().segment(nextRow, sourceRows) = jacobians[factorI]->getb(); if (jacobians[factorI]->get_model()) { // If the factor has a noise model and we haven't yet allocated sigmas, allocate it. if (!sigmas) sigmas = Vector::Constant(m, 1.0); sigmas->segment(nextRow, sourceRows) = - jacobians[factorI]->get_model()->sigmas(); + jacobians[factorI]->get_model()->sigmasRef(); if (jacobians[factorI]->isConstrained()) anyConstrained = true; } - nextRow += sourceRows; } } gttoc(copy_vectors); @@ -491,10 +544,17 @@ bool JacobianFactor::equals(const GaussianFactor& f_, double tol) const { /* ************************************************************************* */ Vector JacobianFactor::unweighted_error(const VectorValues& c) const { - Vector e = -getb(); - for (size_t pos = 0; pos < size(); ++pos) - e += Ab_(pos) * c[keys_[pos]]; - return e; + const DenseIndex totalDim = c.totalDim(keys_); + Vector w(totalDim + 1); + c.fillVector(keys_, w); + w(totalDim) = -1.0; + // Fast path when the active view is the full matrix (no row/column offsets). + if (Ab_.firstBlock() == 0 && Ab_.rowStart() == 0 && + Ab_.rowEnd() == Ab_.matrix().rows()) { + return Ab_.matrix() * w; + } + // Fallback that respects firstBlock/rowStart/rowEnd for subviews. + return Ab_.full() * w; } /* ************************************************************************* */ @@ -512,6 +572,20 @@ double JacobianFactor::error(const VectorValues& c) const { return 0.5 * e.dot(e); } +/* ************************************************************************* */ +double JacobianFactor::deltaError(const VectorValues& c, double* oldError, + double* newError) const { + const Vector e = unweighted_error(c); + const Vector b = getb(); + double oldValue = + model_ ? 0.5 * model_->squaredMahalanobisDistance(b) : 0.5 * b.dot(b); + double newValue = + model_ ? 0.5 * model_->squaredMahalanobisDistance(e) : 0.5 * e.dot(e); + if (oldError) *oldError = oldValue; + if (newError) *newError = newValue; + return oldValue - newValue; +} + /* ************************************************************************* */ Matrix JacobianFactor::augmentedInformation() const { if (model_) { @@ -630,6 +704,72 @@ void JacobianFactor::updateHessian(const KeyVector& infoKeys, } } +/* ************************************************************************* */ +static void whitenedUpdateHessian(SymmetricBlockMatrix* info, std::vector slots, + const VerticalBlockMatrix& Ab_, DenseIndex beginCol, DenseIndex endCol) { + const DenseIndex n = Ab_.nBlocks() - 1; + + for (DenseIndex j = 0; j <= n; ++j) { + const DenseIndex J = slots[j]; + Eigen::Block Ab_j = Ab_(j); + + // Update diagonal block if J is in range + if (J >= beginCol && J < endCol) { + info->diagonalBlock(J).rankUpdate(Ab_j.transpose()); + } + + // Fill off-diagonal blocks with Ai'*Aj where column max(I, J) is in range + for (DenseIndex i = 0; i < j; ++i) { + const DenseIndex I = slots[i]; + + // The physical column index in the symmetric matrix is max(I, J) + const DenseIndex maxCol = std::max(I, J); + if (maxCol >= beginCol && maxCol < endCol) { + // Pass original indices - updateOffDiagonalBlock handles swapping internally + info->updateOffDiagonalBlock(I, J, Ab_(i).transpose() * Ab_j); + } + } + } +} + +void JacobianFactor::updateHessian(const KeyVector& infoKeys, + SymmetricBlockMatrix* info, + DenseIndex beginCol, DenseIndex endCol) const { + if (rows() == 0) return; + + // Ab_ is the augmented Jacobian matrix A, and we perform I += A'*A below. + DenseIndex n = Ab_.nBlocks() - 1; + + // Pre-calculate slots + vector slots; + slots.reserve(n + 1); + bool foundCol = false; + for (DenseIndex j = 0; j < n; ++j) { + slots.push_back(Slot(infoKeys, keys_[j])); + if (slots[j] >= beginCol && slots[j] < endCol) { + foundCol = true; + } + } + slots.push_back(info->nBlocks() - 1); + if (slots[n] >= beginCol && slots[n] < endCol) { + foundCol = true; + } + if (!foundCol) return; + + // Whiten the factor if it has a noise model + const SharedDiagonal& model = get_model(); + if (model && !model->isUnit()) { + if (model->isConstrained()) + throw invalid_argument( + "JacobianFactor::updateHessian: cannot update information with " + "constrained noise model"); + JacobianFactor whitenedFactor = whiten(); + whitenedUpdateHessian(info, std::move(slots), whitenedFactor.Ab_, beginCol, endCol); + } else { + whitenedUpdateHessian(info, std::move(slots), Ab_, beginCol, endCol); + } +} + /* ************************************************************************* */ Vector JacobianFactor::operator*(const VectorValues& x) const { Vector Ax(Ab_.rows()); @@ -873,13 +1013,15 @@ GaussianConditional::shared_ptr JacobianFactor::splitConditional(size_t nrFronta Ab_.rowEnd() = Ab_.rowStart() + frontalDim; SharedDiagonal conditionalNoiseModel; conditionalNoiseModel = - noiseModel::Diagonal::Sigmas(model_->sigmas().segment(Ab_.rowStart(), Ab_.rows())); + noiseModel::Diagonal::Sigmas( + model_->sigmasRef().segment(Ab_.rowStart(), Ab_.rows())); GaussianConditional::shared_ptr conditional = std::make_shared(Base::keys_, nrFrontals, Ab_, conditionalNoiseModel); const DenseIndex maxRemainingRows = std::min(Ab_.cols(), originalRowEnd) - Ab_.rowStart() - frontalDim; - const DenseIndex remainingRows = std::min(model_->sigmas().size() - frontalDim, maxRemainingRows); + const DenseIndex remainingRows = + std::min(model_->sigmasRef().size() - frontalDim, maxRemainingRows); Ab_.rowStart() += frontalDim; Ab_.rowEnd() = Ab_.rowStart() + remainingRows; Ab_.firstBlock() += nrFrontals; @@ -888,9 +1030,11 @@ GaussianConditional::shared_ptr JacobianFactor::splitConditional(size_t nrFronta keys_.erase(begin(), begin() + nrFrontals); // Set sigmas with the right model if (model_->isConstrained()) - model_ = noiseModel::Constrained::MixedSigmas(model_->sigmas().tail(remainingRows)); + model_ = noiseModel::Constrained::MixedSigmas( + model_->sigmasRef().tail(remainingRows)); else - model_ = noiseModel::Diagonal::Sigmas(model_->sigmas().tail(remainingRows)); + model_ = noiseModel::Diagonal::Sigmas( + model_->sigmasRef().tail(remainingRows)); assert(model_->dim() == (size_t)Ab_.rows()); return conditional; diff --git a/gtsam/linear/JacobianFactor.h b/gtsam/linear/JacobianFactor.h index 33f7183a61..da75a9d165 100644 --- a/gtsam/linear/JacobianFactor.h +++ b/gtsam/linear/JacobianFactor.h @@ -129,16 +129,46 @@ namespace gtsam { JacobianFactor(Key i1, const Matrix& A1, const Vector& b, const SharedDiagonal& model = SharedDiagonal()); + /** Construct unary factor from fixed-size Eigen matrices. */ + template > + JacobianFactor(Key i1, const Eigen::Matrix& A1, + const Eigen::Matrix& b, + const SharedDiagonal& model = SharedDiagonal()); + /** Construct binary factor */ JacobianFactor(Key i1, const Matrix& A1, Key i2, const Matrix& A2, const Vector& b, const SharedDiagonal& model = SharedDiagonal()); + /** Construct binary factor from fixed-size Eigen matrices. */ + template > + JacobianFactor(Key i1, const Eigen::Matrix& A1, + Key i2, const Eigen::Matrix& A2, + const Eigen::Matrix& b, + const SharedDiagonal& model = SharedDiagonal()); + /** Construct ternary factor */ JacobianFactor(Key i1, const Matrix& A1, Key i2, const Matrix& A2, Key i3, const Matrix& A3, const Vector& b, const SharedDiagonal& model = SharedDiagonal()); + /** Construct ternary factor from fixed-size Eigen matrices. */ + template > + JacobianFactor(Key i1, const Eigen::Matrix& A1, + Key i2, const Eigen::Matrix& A2, + Key i3, const Eigen::Matrix& A3, + const Eigen::Matrix& b, + const SharedDiagonal& model = SharedDiagonal()); + /** Construct an n-ary factor * @tparam TERMS A container whose value type is std::pair, specifying the * collection of keys and matrices making up the factor. */ @@ -198,6 +228,9 @@ namespace gtsam { std::make_shared(*this)); } + /// Identify JacobianFactor-based types. + bool isJacobian() const override { return true; } + // Implementing Testable interface void print(const std::string& s = "", const KeyFormatter& formatter = DefaultKeyFormatter) const override; @@ -209,9 +242,16 @@ namespace gtsam { /// HybridValues simply extracts the \class VectorValues and calls error. using GaussianFactor::error; - //// 0.5*(A*x-b)'*D*(A*x-b). + /// 0.5*(A*x-b)'*D*(A*x-b). double error(const VectorValues& c) const override; + /** + * Compute the change in error from zero to c, optionally returning + * the old and new errors. + */ + double deltaError(const VectorValues& c, double* oldError = nullptr, + double* newError = nullptr) const override; + /** Return the augmented information matrix represented by this GaussianFactor. * The augmented information matrix contains the information matrix with an * additional column holding the information vector, and an additional row @@ -331,6 +371,17 @@ namespace gtsam { */ void updateHessian(const KeyVector& keys, SymmetricBlockMatrix* info) const override; + /** Update an information matrix by adding the information corresponding to this factor + * (used internally during elimination), restricted to a range of block columns, + * useful for parallelization. + * @param keys The ordered vector of keys for the information matrix to be updated + * @param info The information matrix to be updated + * @param beginCol First block column index (inclusive) in the range to update + * @param endCol Last block column index (exclusive) in the range to update + */ + void updateHessian(const KeyVector& keys, SymmetricBlockMatrix* info, + DenseIndex beginCol, DenseIndex endCol) const override; + /** Return A*x */ Vector operator*(const VectorValues& x) const; @@ -483,5 +534,3 @@ BOOST_CLASS_VERSION(gtsam::JacobianFactor, 1) #endif #include - - diff --git a/gtsam/linear/LossFunctions.cpp b/gtsam/linear/LossFunctions.cpp index 682783e7c0..616d8a696d 100644 --- a/gtsam/linear/LossFunctions.cpp +++ b/gtsam/linear/LossFunctions.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -314,20 +315,22 @@ Welsch::shared_ptr Welsch::Create(double c, const ReweightScheme reweight) { // GemanMcClure /* ************************************************************************* */ GemanMcClure::GemanMcClure(double c, const ReweightScheme reweight) - : Base(reweight), c_(c) { + : Base(reweight), c_(c), csquared_(c * c) { } double GemanMcClure::weight(double distance) const { - const double c2 = c_*c_; + return Weight(distance*distance, csquared_); +} + +double GemanMcClure::Weight(double distance2, double c2) { const double c4 = c2*c2; - const double c2error = c2 + distance*distance; + const double c2error = c2 + distance2; return c4/(c2error*c2error); } double GemanMcClure::loss(double distance) const { - const double c2 = c_*c_; const double error2 = distance*distance; - return 0.5 * (c2 * error2) / (c2 + error2); + return 0.5 * (csquared_ * error2) / (csquared_ + error2); } void GemanMcClure::print(const std::string &s="") const { @@ -344,6 +347,49 @@ GemanMcClure::shared_ptr GemanMcClure::Create(double c, const ReweightScheme rew return shared_ptr(new GemanMcClure(c, reweight)); } +/* ************************************************************************* */ +// TruncatedLeastSquares +/* ************************************************************************* */ + +TruncatedLeastSquares::TruncatedLeastSquares(double c, const ReweightScheme reweight) + : Base(reweight), c_(c), csquared_(c * c) { + if (c_ <= 0) { + throw runtime_error("mEstimator TruncatedLeastSquares takes only positive double in constructor."); + } +} + +double TruncatedLeastSquares::weight(double distance) const { + const auto w = Weight(distance * distance, csquared_, csquared_); + return w.value(); +} + +std::optional TruncatedLeastSquares::Weight(double distance2, double lowerbound, double upperbound) { + if (distance2 <= lowerbound) return 1.0; + if (distance2 >= upperbound) return 0.0; + return std::nullopt; +} + +double TruncatedLeastSquares::loss(double distance) const { + if (std::abs(distance) <= c_) { + return 0.5 * distance * distance; + } + return 0.5 * csquared_; +} + +void TruncatedLeastSquares::print(const std::string &s="") const { + std::cout << s << ": TLS (" << c_ << ")" << std::endl; +} + +bool TruncatedLeastSquares::equals(const Base &expected, double tol) const { + const TruncatedLeastSquares* p = dynamic_cast(&expected); + if (p == nullptr) return false; + return std::abs(c_ - p->c_) < tol; +} + +TruncatedLeastSquares::shared_ptr TruncatedLeastSquares::Create(double c, const ReweightScheme reweight) { + return shared_ptr(new TruncatedLeastSquares(c, reweight)); +} + /* ************************************************************************* */ // DCS /* ************************************************************************* */ diff --git a/gtsam/linear/LossFunctions.h b/gtsam/linear/LossFunctions.h index 989557d87b..3976466d48 100644 --- a/gtsam/linear/LossFunctions.h +++ b/gtsam/linear/LossFunctions.h @@ -20,6 +20,7 @@ #pragma once +#include #include #include #include @@ -375,9 +376,23 @@ class GTSAM_EXPORT GemanMcClure : public Base { bool equals(const Base &expected, double tol = 1e-8) const override; static shared_ptr Create(double k, const ReweightScheme reweight = Block); double modelParameter() const { return c_; } + /** @brief A static helper function to compute the Geman-McClure robust weight. + * The static function takes the squared value of the residual and the scale parameter. + * The weight member function now calls this function. While the member function takes the residual as input, + * it passes x² and c² to the static helper. + * + * w(x², c²) = \phi(x)/x = c⁴/(c²+x²)² + * + * + * @param distance2 Squared residual magnitude. + * @param c2 Squared scale parameter. + * @return Weight w(x) in (0, 1] + */ + static double Weight(double distance2, double c2); protected: double c_; + double csquared_; private: #if GTSAM_ENABLE_BOOST_SERIALIZATION @@ -387,6 +402,57 @@ class GTSAM_EXPORT GemanMcClure : public Base { void serialize(ARCHIVE &ar, const unsigned int /*version*/) { ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); ar &BOOST_SERIALIZATION_NVP(c_); + ar &BOOST_SERIALIZATION_NVP(csquared_); + } +#endif +}; + +/** Truncated Least Squares (TLS) robust error model. + * + * This model has a scalar parameter "c" (threshold). + * + * - Loss \rho(x) = 0.5 x^2 if |x|<=c, 0.5 c^2 otherwise + * - Derivative \phi(x) = x if |x|<=c, 0 otherwise + * - Weight w(x) = \phi(x)/x = 1 if |x|<=c, 0 otherwise + */ +class GTSAM_EXPORT TruncatedLeastSquares : public Base { + public: + typedef std::shared_ptr shared_ptr; + + TruncatedLeastSquares(double c = 1.0, const ReweightScheme reweight = Block); + double weight(double distance) const override; + double loss(double distance) const override; + void print(const std::string &s) const override; + bool equals(const Base &expected, double tol = 1e-8) const override; + static shared_ptr Create(double c, const ReweightScheme reweight = Block); + double modelParameter() const { return c_; } + /** @brief A static helper function to compute the TLS robust weight. + * The static function takes the squared value of the residual, the squared lower bound, the squared upper bound. + * This helper returns a optional because it is also used for GNC, and we encounter transition weight cases, + * where the weight is not strictly binary (0 or 1) when the residual is within the transition region between inliers and outliers. + * The weight member function now calls the this function. + * While the member function takes the residual as input, it passes x², c² and c² to the static helper. + * + * @param distance2 Squared residual magnitude. + * @param lowerbound Squared lower bound. + * @param upperbound Squared upper bound. + * @return Weight w(x) is {0, 1} or None if the residual is between lowerbound and upperbound. + */ + static std::optional Weight(double distance2, double lowerbound, double upperbound); + + protected: + double c_; + double csquared_; + + private: +#if GTSAM_ENABLE_BOOST_SERIALIZATION + /** Serialization function */ + friend class boost::serialization::access; + template + void serialize(ARCHIVE &ar, const unsigned int /*version*/) { + ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); + ar &BOOST_SERIALIZATION_NVP(c_); + ar &BOOST_SERIALIZATION_NVP(csquared_); } #endif }; diff --git a/gtsam/linear/MultifrontalClique.cpp b/gtsam/linear/MultifrontalClique.cpp index 01f4a2aed7..5a8eaa9454 100644 --- a/gtsam/linear/MultifrontalClique.cpp +++ b/gtsam/linear/MultifrontalClique.cpp @@ -16,31 +16,29 @@ * @date December 2025 */ +#include +#include #include -#include #include #include +#ifdef GTSAM_USE_TBB +#include +#include +#include +#endif + #include #include +#include #include -#include +#include namespace gtsam { namespace { -KeyVector orderedKeysFromBlockIndex(const std::map& blockIndex) { - const size_t totalKeys = blockIndex.size(); - KeyVector orderedKeys(totalKeys); - for (const auto& entry : blockIndex) { - if (entry.second < totalKeys) { - orderedKeys[entry.second] = entry.first; - } - } - return orderedKeys; -} - +// Print keys in [start, end) using the provided formatter. void printKeyRange(std::ostream& os, const KeyVector& keys, size_t start, size_t end, const KeyFormatter& formatter) { os << "["; @@ -63,16 +61,21 @@ Vector& buildSeparatorVector(const std::vector& separatorPtrs, } #ifndef NDEBUG +bool containsKey(const KeyVector& orderedKeys, Key key) { + return std::find(orderedKeys.begin(), orderedKeys.end(), key) != + orderedKeys.end(); +} + bool validateFactorKeys(const GaussianFactorGraph& graph, const std::vector& factorIndices, - const std::map& blockIndex, + const KeyVector& orderedKeys, const std::unordered_set* fixedKeys) { for (size_t index : factorIndices) { assert(index < graph.size()); const GaussianFactor::shared_ptr& gf = graph[index]; if (!gf) continue; for (Key key : gf->keys()) { - if (blockIndex.find(key) != blockIndex.end()) continue; + if (containsKey(orderedKeys, key)) continue; if (fixedKeys && fixedKeys->count(key)) continue; return false; } @@ -81,14 +84,27 @@ bool validateFactorKeys(const GaussianFactorGraph& graph, } #endif +size_t hardwareThreads() { + static const size_t kHardwareThreads = [] { + size_t n = std::thread::hardware_concurrency(); + return n == 0 ? size_t{1} : n; + }(); + return kHardwareThreads; +} + +SymmetricBlockMatrix makeZeroLocalInfo(const std::vector& blockDims) { + SymmetricBlockMatrix local(blockDims, true); + local.setZero(); + return local; +} + } // namespace MultifrontalClique::MultifrontalClique( std::vector factorIndices, const std::weak_ptr& parent, const KeyVector& frontals, - const KeyVector& separatorKeys, const std::map& dims, - const GaussianFactorGraph& graph, VectorValues* solution, - const std::unordered_set* fixedKeys) { + const KeySet& separatorKeys, const KeyDimMap& dims, size_t vbmRows, + VectorValues* solution, const std::unordered_set* fixedKeys) { factorIndices_ = std::move(factorIndices); this->parent = parent; fixedKeys_ = fixedKeys; @@ -98,31 +114,16 @@ MultifrontalClique::MultifrontalClique( "MultifrontalSolver: cluster has no frontal keys."); } - // Cache the mapping from key to Ab block index for fast fills. - blockIndex_.clear(); - size_t blockIdx = 0; - for (Key key : frontals) { - blockIndex_[key] = blockIdx; - ++blockIdx; - } - for (Key key : separatorKeys) { - blockIndex_[key] = blockIdx; - ++blockIdx; - } - - size_t dim = 0; - for (Key key : frontals) { - auto it = dims.find(key); - if (it != dims.end()) dim += it->second; - } - frontalDim = dim; + // Cache keys in block order for fast linear lookup in small cliques. + orderedKeys_.clear(); + orderedKeys_.reserve(frontals.size() + separatorKeys.size()); + orderedKeys_.insert(orderedKeys_.end(), frontals.begin(), frontals.end()); + orderedKeys_.insert(orderedKeys_.end(), separatorKeys.begin(), + separatorKeys.end()); - dim = 0; - for (Key key : separatorKeys) { - auto it = dims.find(key); - if (it != dims.end()) dim += it->second; - } - separatorDim = dim; + // Cache total frontal/separator dimensions for scheduling and sizing. + frontalDim = internal::sumDims(dims, frontals); + separatorDim = internal::sumDims(dims, separatorKeys); rhsScratch_.resize(frontalDim); separatorScratch_.resize(separatorDim); @@ -130,41 +131,71 @@ MultifrontalClique::MultifrontalClique( // Cache pointers into the solution for fast back-substitution. cacheSolutionPointers(solution, frontals, separatorKeys); - // Pre-allocate matrices once per structure. - std::vector blockDims = - this->blockDims(dims, frontals, separatorKeys); - size_t vbmRows = countRows(graph); - initializeMatrices(blockDims, vbmRows); + // Cache sizing for allocation at finalize time. + blockDims_ = this->blockDims(dims, frontals, separatorKeys); + factorRows_ = vbmRows; } -void MultifrontalClique::finalize(std::vector children) { +void MultifrontalClique::finalize(std::vector children, + const MultifrontalParameters& params) { this->children.clear(); this->children.reserve(children.size()); for (const auto& child : children) { this->children.push_back(child.clique); } - // Compute parent indices for all children. + // Compute parent indices for all children (separator blocks + RHS block). for (const auto& child : children) { if (!child.clique) continue; std::vector indices; indices.reserve(child.separatorKeys.size() + 1); for (Key key : child.separatorKeys) { - auto it = blockIndex_.find(key); - if (it == blockIndex_.end()) { - throw std::runtime_error( - "MultifrontalSolver: separator key not found in parent clique"); - } - indices.push_back(static_cast(it->second)); + indices.push_back(blockIndex(key)); } - indices.push_back(static_cast(blockIndex_.size())); + // The RHS block is always the last block in Ab/info. + indices.push_back(static_cast(orderedKeys_.size())); child.clique->setParentIndices(indices); } + + // In leaf cliques, check whether to use QR elimination. + const bool isLeaf = this->children.empty(); + const bool hasRows = + frontalDim > 0 && factorRows_ >= static_cast(frontalDim); + bool useQR = false; + if (params.qrMode == MultifrontalParameters::QRMode::Allow) { + useQR = isLeaf && hasRows && + (frontalDim + separatorDim > params.qrAspectRatio * frontalDim); + } else if (params.qrMode == MultifrontalParameters::QRMode::Force) { + useQR = isLeaf && hasRows; + } + solveMode_ = useQR ? SolveMode::QrLeaf : SolveMode::Cholesky; + RSdReady_ = false; + + // If using QR, also reserve room for optional damping rows. + const DenseIndex baseRows = static_cast(factorRows_); + const DenseIndex totalRows = + baseRows + (useQR ? static_cast(frontalDim) : 0); + Ab_ = VerticalBlockMatrix(blockDims_, totalRows, true); + // Ab's structure is fixed; clear it once and reuse across loads. + Ab_.matrix().setZero(); + if (useQR) { + RSd_ = VerticalBlockMatrix(blockDims_, totalRows, true); + } else { + RSd_ = VerticalBlockMatrix(blockDims_, static_cast(frontalDim), + true); + info_ = SymmetricBlockMatrix(blockDims_, true); + } +} + +DenseIndex MultifrontalClique::blockIndex(Key key) const { + const auto it = std::find(orderedKeys_.begin(), orderedKeys_.end(), key); + assert(it != orderedKeys_.end()); + return static_cast(std::distance(orderedKeys_.begin(), it)); } void MultifrontalClique::cacheSolutionPointers(VectorValues* solution, const KeyVector& frontals, - const KeyVector& separatorKeys) { + const KeySet& separatorKeys) { frontalPtrs_.clear(); separatorPtrs_.clear(); frontalPtrs_.reserve(frontals.size()); @@ -178,145 +209,331 @@ void MultifrontalClique::cacheSolutionPointers(VectorValues* solution, } std::vector MultifrontalClique::blockDims( - const std::map& dims, const KeyVector& frontals, - const KeyVector& separatorKeys) const { + const KeyDimMap& dims, const KeyVector& frontals, + const KeySet& separatorKeys) const { std::vector blockDims; + blockDims.reserve(frontals.size() + separatorKeys.size()); for (Key k : frontals) blockDims.push_back(dims.at(k)); for (Key k : separatorKeys) blockDims.push_back(dims.at(k)); return blockDims; } -size_t MultifrontalClique::countRows(const GaussianFactorGraph& graph) const { - size_t vbmRows = 0; - for (size_t index : factorIndices_) { - assert(index < graph.size()); - if (auto jacobianFactor = - std::dynamic_pointer_cast(graph[index])) { - vbmRows += jacobianFactor->rows(); - } - } - return vbmRows; -} - -void MultifrontalClique::initializeMatrices( - const std::vector& blockDims, size_t verticalBlockMatrixRows) { - sbm_ = SymmetricBlockMatrix(blockDims, true); - Ab_ = VerticalBlockMatrix(blockDims, verticalBlockMatrixRows, true); - Ab_.matrix().setZero(); -} - size_t MultifrontalClique::addJacobianFactor( const JacobianFactor& jacobianFactor, size_t rowOffset) { // We only overwrite the fixed sparsity pattern, so Ab must be zeroed once in - // initializeMatrices and then kept consistent across loads. + // finalize and then kept consistent across loads. const size_t rows = jacobianFactor.rows(); const size_t rhsBlockIdx = Ab_.nBlocks() - 1; for (auto it = jacobianFactor.begin(); it != jacobianFactor.end(); ++it) { Key k = *it; if (fixedKeys_ && fixedKeys_->count(k)) continue; - const size_t blockIdx = blockIndex_.at(k); + const size_t blockIdx = blockIndex(k); Ab_(blockIdx).middleRows(rowOffset, rows) = jacobianFactor.getA(it); } Ab_(rhsBlockIdx).middleRows(rowOffset, rows) = jacobianFactor.getb(); if (auto model = jacobianFactor.get_model()) { if (!model->isConstrained()) { + // Only whiten non-constrained rows; constrained factors are handled as + // hard constraints elsewhere. model->WhitenInPlace(Ab_.matrix().middleRows(rowOffset, rows)); } } return rows; } -void MultifrontalClique::addHessianFactor(const HessianFactor& hessianFactor) { - const SymmetricBlockMatrix& info = hessianFactor.info(); - const DenseIndex factorBlocks = static_cast(hessianFactor.size()); - const DenseIndex rhsBlock = static_cast(sbm_.nBlocks() - 1); - - std::vector blockIndices(factorBlocks + 1, -1); - DenseIndex slot = 0; - for (auto it = hessianFactor.begin(); it != hessianFactor.end(); - ++it, ++slot) { - const Key key = *it; - if (fixedKeys_ && fixedKeys_->count(key)) continue; - blockIndices[slot] = static_cast(blockIndex_.at(key)); - } - blockIndices[factorBlocks] = rhsBlock; - - sbm_.updateFromMappedBlocks(info, blockIndices); -} - void MultifrontalClique::fillAb(const GaussianFactorGraph& graph) { - assert(validateFactorKeys(graph, factorIndices_, blockIndex_, fixedKeys_)); - sbm_.setZero(); // Easily half of the cost ! + assert(validateFactorKeys(graph, factorIndices_, orderedKeys_, fixedKeys_)); size_t rowOffset = 0; for (size_t index : factorIndices_) { assert(index < graph.size()); const GaussianFactor::shared_ptr& gf = graph[index]; if (!gf) continue; - if (auto jacobianFactor = std::dynamic_pointer_cast(gf)) { - rowOffset += addJacobianFactor(*jacobianFactor, rowOffset); - } else if (auto hessianFactor = - std::dynamic_pointer_cast(gf)) { - addHessianFactor(*hessianFactor); - } + assert(gf->isJacobian() && + "MultifrontalClique::fillAb: inconsistent graph passed."); + auto jacobianFactor = std::static_pointer_cast(gf); + rowOffset += addJacobianFactor(*jacobianFactor, rowOffset); } + + RSdReady_ = false; + assert((useQR() && RSd_.matrix().rows() == + static_cast(Ab_.matrix().rows())) || + (RSd_.matrix().rows() == static_cast(frontalDim))); + assert(useQR() || info_.nBlocks() > 0); } void MultifrontalClique::eliminateInPlace() { - // Update SBM with the local factors, Ab^T * Ab - sbm_.selfadjointView().rankUpdate(Ab_.matrix().transpose()); + prepareForElimination(); + // There is no damping here and although we do not assert it here, we are + // counting on the facts that no damping was *ever* applied during the + // existence of this clique, just like we count on the sparsity pattern of + // zeros to remain the same. + factorize(); +} - for (const auto& child : children) { - if (!child) continue; - child->updateParent(*this); +void MultifrontalClique::prepareForElimination() { + // QR leaf cliques skip info matrix assembly entirely. + if (useQR()) return; + assert(info_.nBlocks() > 0); + info_.setZero(); + if (Ab_.matrix().rows() > 0) { + info_.selfadjointView().rankUpdate(Ab_.matrix().transpose()); + } + + // Heuristic: avoid parallel overhead on small cliques. + const size_t minChildren = + std::max(1024, 4 * static_cast(info_.rows())); + const size_t numChildren = children.size(); + if (numChildren < minChildren) { // Typical for chains: many small cliques. + gatherUpdatesSequential(); + } else { + // Cap by available work. + // Parallel path (TBB if available, else std::thread). + const size_t numThreads = std::min(hardwareThreads(), numChildren); + if (numThreads <= 1) + gatherUpdatesSequential(); + else + gatherUpdatesParallel(numThreads); } +} + +void MultifrontalClique::factorize() { + if (useQR()) { + // Copy Ab_ to preserve its invariant; QR writes in place. + assert(RSd_.matrix().rows() == Ab_.matrix().rows()); + assert(RSd_.matrix().cols() == Ab_.matrix().cols()); + RSd_.matrix() = Ab_.matrix(); + inplace_QR(RSd_.matrix()); + assert(RSd_.rowStart() == 0); + RSd_.rowEnd() = static_cast(frontalDim); + } else { + info_.choleskyPartial(numFrontals()); + info_.split(numFrontals(), &RSd_); + info_.blockStart() = 0; + } + RSdReady_ = true; +} + +void MultifrontalClique::eliminateInPlace( + double lambda, const LMDampingParams& dampingParams, + const VectorValues& exactHessianDiagonal) { + prepareForElimination(); + if (useQR()) { + applyDampingQR(lambda, dampingParams, exactHessianDiagonal); + } else { + applyDampingCholesky(lambda, dampingParams, exactHessianDiagonal); + } + factorize(); +} + +void MultifrontalClique::applyDampingQR( + double lambda, const LMDampingParams& dampingParams, + const VectorValues& exactHessianDiagonal) { + if (lambda <= 0.0) return; + const DenseIndex baseRows = static_cast(factorRows_); + const DenseIndex dampRows = static_cast(frontalDim); + assert(Ab_.matrix().rows() >= baseRows + dampRows); + Ab_.matrix().middleRows(baseRows, dampRows).setZero(); + DenseIndex rowOffset = baseRows; + for (size_t j = 0; j < numFrontals(); ++j) { + const DenseIndex blockIndex = static_cast(j); + const DenseIndex dim = static_cast(blockDims_.at(j)); + auto block = Ab_(blockIndex).middleRows(rowOffset, dim); + if (dampingParams.diagonalDamping) { + Vector diag; + if (dampingParams.exactHessianDiagonal) { + const Key key = orderedKeys_.at(j); + diag = exactHessianDiagonal.at(key) + .cwiseMax(dampingParams.minDiagonal) + .cwiseMin(dampingParams.maxDiagonal); + } else { + diag = Ab_(blockIndex) + .topRows(baseRows) + .array() + .square() + .colwise() + .sum() + .transpose(); + diag = diag.cwiseMax(dampingParams.minDiagonal) + .cwiseMin(dampingParams.maxDiagonal); + } + block.diagonal() = (diag.array() * lambda).sqrt().matrix(); + } else { + block.diagonal().setConstant(std::sqrt(lambda)); + } + rowOffset += dim; + } +} + +void MultifrontalClique::applyDampingCholesky( + double lambda, const LMDampingParams& dampingParams, + const VectorValues& exactHessianDiagonal) { + if (lambda <= 0.0) return; + if (dampingParams.diagonalDamping) { + if (dampingParams.exactHessianDiagonal) { + addExactDiagonalDamping(lambda, exactHessianDiagonal, + dampingParams.minDiagonal, + dampingParams.maxDiagonal); + } else { + addDiagonalDamping(lambda, dampingParams.minDiagonal, + dampingParams.maxDiagonal); + } + } else { + addIdentityDamping(lambda); + } +} + +void MultifrontalClique::addIdentityDamping(double lambda) { + const size_t nf = numFrontals(); + for (size_t j = 0; j < nf; ++j) { + info_.addScaledIdentity(j, lambda); + } +} + +void MultifrontalClique::addDiagonalDamping(double lambda, double minDiagonal, + double maxDiagonal) { + const size_t nf = numFrontals(); + for (size_t j = 0; j < nf; ++j) { + const Vector scaled = + lambda * info_.diagonal(j).cwiseMax(minDiagonal).cwiseMin(maxDiagonal); + info_.addToDiagonalBlock(j, scaled); + } +} - // Form normal equations and factor the frontal block (Schur complement step). - sbm_.choleskyPartial(numFrontals()); +void MultifrontalClique::addExactDiagonalDamping( + double lambda, const VectorValues& hessianDiagonal, double minDiagonal, + double maxDiagonal) { + const size_t nf = numFrontals(); + for (size_t j = 0; j < nf; ++j) { + const Key key = orderedKeys_.at(j); + const Vector diag = + hessianDiagonal.at(key).cwiseMax(minDiagonal).cwiseMin(maxDiagonal); + info_.addToDiagonalBlock(j, lambda * diag); + } +} + +void MultifrontalClique::updateParentInfo( + SymmetricBlockMatrix& parentInfo) const { + assert(RSd_.rowStart() == 0); + if (useQR()) { + // Accumulate separator (and RHS) normal equations from the QR residual. + assert(RSdReady_ && RSd_.firstBlock() == 0); + const DenseIndex nfBlocks = static_cast(numFrontals()); + const DenseIndex rowStart = RSd_.rowStart(); + const DenseIndex rowEnd = RSd_.rowEnd(); + RSd_.rowStart() = static_cast(frontalDim); + RSd_.rowEnd() = static_cast(RSd_.matrix().rows()); + RSd_.firstBlock() = nfBlocks; + parentInfo.updateFromOuterProductBlocks(RSd_, parentIndices_); + RSd_.firstBlock() = 0; + RSd_.rowStart() = rowStart; + RSd_.rowEnd() = rowEnd; + } else { + // Accumulate the S^T S part from this clique's info matrix into the parent. + assert(info_.nBlocks() > 0 && info_.blockStart() == 0); + info_.blockStart() = numFrontals(); + parentInfo.updateFromMappedBlocks(info_, parentIndices_); + info_.blockStart() = 0; + } +} + +void MultifrontalClique::gatherUpdatesSequential() { + for (const auto& child : children) { + assert(child); + child->updateParentInfo(info_); + } } -void MultifrontalClique::updateParent(MultifrontalClique& parent) const { - // Expose only the separator+RHS view when contributing to the parent. - sbm_.blockStart() = numFrontals(); - assert(sbm_.nBlocks() == parentIndices_.size()); - parent.sbm_.updateFromMappedBlocks(sbm_, parentIndices_); - sbm_.blockStart() = 0; +void MultifrontalClique::gatherUpdatesParallel(size_t numThreads) { +#ifdef GTSAM_USE_TBB + (void)numThreads; // TBB controls the effective worker count. + tbb::enumerable_thread_specific locals([this]() { + return makeZeroLocalInfo(blockDims_); + }); // Per-thread accumulators. + tbb::parallel_for( + tbb::blocked_range(0, children.size()), + [&](const tbb::blocked_range& range) { + auto& local = locals.local(); // Thread-local info matrix. + for (size_t i = range.begin(); i < range.end(); ++i) { + const auto& child = children[i]; + assert(child); + child->updateParentInfo( + local); // No locking: each thread writes its own info matrix. + } + }); + locals.combine_each([this](const SymmetricBlockMatrix& local) { + info_.addUpperTriangular( + local); // Merge per-thread partial info matrices into this clique. + }); +#else + std::vector locals; + locals.reserve(numThreads); // Fixed-size per-thread accumulators. + for (size_t i = 0; i < numThreads; ++i) { + locals.push_back(makeZeroLocalInfo(blockDims_)); + } + std::vector threads; + threads.reserve(numThreads); + const size_t chunk = + (children.size() + numThreads - 1) / numThreads; // Static partitioning. + for (size_t t = 0; t < numThreads; ++t) { + const size_t start = t * chunk; + const size_t end = std::min(start + chunk, children.size()); + if (start >= end) break; + threads.emplace_back([this, start, end, &locals, t]() { + auto& local = locals[t]; + for (size_t i = start; i < end; ++i) { + const auto& child = children[i]; + assert(child); + child->updateParentInfo( + local); // No locking: each thread writes its own info matrix. + } + }); + } + for (auto& thread : threads) { + thread.join(); // Ensure all locals are complete before merge. + } + for (const auto& local : locals) { + info_.addUpperTriangular( + local); // Merge per-thread partial info matrices into this clique. + } +#endif } std::shared_ptr MultifrontalClique::conditional() const { - const KeyVector keys = orderedKeysFromBlockIndex(blockIndex_); - SymmetricBlockMatrix& sbm = sbm_; - VerticalBlockMatrix Ab = sbm.split(numFrontals()); - sbm.blockStart() = 0; // Split sets it to numFrontals(), reset to 0. - return std::make_shared(keys, numFrontals(), - std::move(Ab)); + assert(RSdReady_); + // RSd_ is cached at elimination time. + return std::make_shared(orderedKeys_, numFrontals(), + RSd_); } -// Solve with block back-substitution on the Cholesky-stored SBM. -void MultifrontalClique::updateSolution() const { +// Solve with block back-substitution on the Cholesky-stored info matrix. +void MultifrontalClique::updateSolution() { + assert(RSdReady_); + assert(RSd_.rowStart() == 0); + // Use cached [R S d] for fast back-substitution. const size_t nf = numFrontals(); - const size_t n = sbm_.nBlocks() - 1; // # frontals + # separators + const size_t n = RSd_.nBlocks() - 1; // # frontals + # separators // The in-place factorization yields an upper-triangular system [R S d]: // R * x_f + S * x_s = d, // with x_f the frontals and x_s the separators. - const auto R = sbm_.triangularView(0, nf); - const auto S = sbm_.aboveDiagonalRange(0, nf, nf, n); - const auto d = sbm_.aboveDiagonalRange(0, nf, n, n + 1); + const auto R = RSd_.range(0, nf).triangularView(); + const auto S = RSd_.range(nf, n); + const auto d = RSd_.range(n, n + 1); // We first solve rhs = d - S * x_s rhsScratch_.noalias() = d; - if (n > nf) { - const Vector& x_s = - buildSeparatorVector(separatorPtrs_, &separatorScratch_); - rhsScratch_.noalias() -= S * x_s; + const Vector* x_s = nullptr; + if (!separatorPtrs_.empty()) { + x_s = &buildSeparatorVector(separatorPtrs_, &separatorScratch_); + rhsScratch_.noalias() -= S * (*x_s); } // Then solve for x_f, our solution, via R * x_f = rhs // We solve the contiguous frontal system in one triangular solve. R.solveInPlace(rhsScratch_); - auto& x_f = rhsScratch_; + const Vector& x_f = rhsScratch_; // Write solved frontal blocks back into the global solution. size_t offset = 0; @@ -325,12 +542,48 @@ void MultifrontalClique::updateSolution() const { values->noalias() = x_f.segment(offset, dim); offset += dim; } + + lastOldError_ = 0.0; + lastNewError_ = 0.0; + if (frontalDim > 0) { + lastOldError_ = 0.5 * d.squaredNorm(); + Vector residual = R * x_f; + if (x_s != nullptr) { + residual.noalias() += S * (*x_s); + } + residual.noalias() -= d; + lastNewError_ = 0.5 * residual.squaredNorm(); + } +} + +double MultifrontalClique::constantTermError() const { + if (!RSdReady_) { + return 0.0; + } + double constantError = 0.0; + if (useQR()) { + const DenseIndex extraRows = + RSd_.matrix().rows() - static_cast(frontalDim); + if (extraRows > 0) { + const DenseIndex lastCol = + static_cast(RSd_.matrix().cols() - 1); + constantError = + 0.5 * RSd_.matrix().bottomRows(extraRows).col(lastCol).squaredNorm(); + } + } else { + const DenseIndex rhsIndex = + static_cast(info_.nBlocks() - info_.blockStart() - 1); + if (rhsIndex >= 0) { + constantError = 0.5 * info_.diagonalBlock(rhsIndex)(0, 0); + } + } + return constantError; } void MultifrontalClique::print(const std::string& s, const KeyFormatter& keyFormatter) const { if (!s.empty()) std::cout << s; - const KeyVector orderedKeys = orderedKeysFromBlockIndex(blockIndex_); + const KeyVector& orderedKeys = orderedKeys_; std::cout << "Clique(frontals=["; printKeyRange(std::cout, orderedKeys, 0, std::min(numFrontals(), orderedKeys.size()), keyFormatter); @@ -340,19 +593,19 @@ void MultifrontalClique::print(const std::string& s, keyFormatter); std::cout << "], factors=" << factorIndices_.size() << ", children=" << children.size() - << ", sbmBlocks=" << sbm_.nBlocks() + << ", infoBlocks=" << info_.nBlocks() << ", AbRows=" << Ab_.matrix().rows() << ")\n"; - auto assembleSbm = [](const SymmetricBlockMatrix& sbm) { - const size_t nBlocks = sbm.nBlocks(); + auto assembleInfo = [](const SymmetricBlockMatrix& info) { + const size_t nBlocks = info.nBlocks(); std::vector offsets(nBlocks + 1, 0); for (size_t i = 0; i < nBlocks; ++i) { - offsets[i + 1] = offsets[i] + sbm.getDim(i); + offsets[i + 1] = offsets[i] + info.getDim(i); } Matrix full = Matrix::Zero(offsets.back(), offsets.back()); for (size_t i = 0; i < nBlocks; ++i) { for (size_t j = 0; j < nBlocks; ++j) { - Matrix block = sbm.block(i, j); + Matrix block = info.block(i, j); full.block(offsets[i], offsets[j], block.rows(), block.cols()) = block; } } @@ -360,11 +613,11 @@ void MultifrontalClique::print(const std::string& s, }; std::cout << " Ab:\n" << Ab_.matrix() << "\n"; - std::cout << " SBM:\n" << assembleSbm(sbm_) << "\n"; + std::cout << " info:\n" << assembleInfo(info_) << "\n"; } std::ostream& operator<<(std::ostream& os, const MultifrontalClique& clique) { - const KeyVector orderedKeys = orderedKeysFromBlockIndex(clique.blockIndex_); + const KeyVector& orderedKeys = clique.orderedKeys_; const KeyFormatter formatter = DefaultKeyFormatter; os << "Clique(frontals="; printKeyRange(os, orderedKeys, 0, @@ -375,7 +628,7 @@ std::ostream& operator<<(std::ostream& os, const MultifrontalClique& clique) { orderedKeys.size(), formatter); os << ", factors=" << clique.factorIndices_.size(); os << ", children=" << clique.children.size(); - os << ", sbmBlocks=" << clique.sbm().nBlocks(); + os << ", infoBlocks=" << clique.info().nBlocks(); os << ", AbRows=" << clique.Ab().matrix().rows() << ")"; return os; } diff --git a/gtsam/linear/MultifrontalClique.h b/gtsam/linear/MultifrontalClique.h index 77d12b321a..42afe3484a 100644 --- a/gtsam/linear/MultifrontalClique.h +++ b/gtsam/linear/MultifrontalClique.h @@ -24,12 +24,15 @@ #include #include #include +#include #include +#include #include #include #include #include +#include #include #include #include @@ -38,19 +41,21 @@ namespace gtsam { class GaussianConditional; +/// Map from variable key to dimension. +using KeyDimMap = std::map; + namespace internal { -/// Helper class to track original factor indices. -class IndexedSymbolicFactor : public SymbolicFactor { - public: - size_t index_; - IndexedSymbolicFactor(const KeyVector& keys, size_t index) - : SymbolicFactor(), index_(index) { - keys_ = keys; +/// Sum variable dimensions for a key range, skipping unknown keys. +template +inline size_t sumDims(const KeyDimMap& dims, const KeyRange& keys) { + size_t dim = 0; + for (Key key : keys) { + auto it = dims.find(key); + if (it != dims.end()) dim += it->second; } - IndexedSymbolicFactor(const GaussianFactor& factor, size_t index) - : SymbolicFactor(factor), index_(index) {} -}; + return dim; +} } // namespace internal @@ -63,7 +68,7 @@ class GTSAM_EXPORT MultifrontalClique { using Children = std::vector; struct ChildInfo { shared_ptr clique; - KeyVector separatorKeys; + KeySet separatorKeys; }; std::weak_ptr parent; ///< Parent clique. @@ -71,34 +76,83 @@ class GTSAM_EXPORT MultifrontalClique { size_t frontalDim = 0; ///< Frontal dimension. size_t separatorDim = 0; ///< Separator dimension. - /// Construct a clique from factor indices and cache static structure. - /// @param factorIndices Indices of factors associated with this clique. - /// @param parent Weak pointer to the parent clique. - /// @param frontals Frontal keys for this clique. - /// @param separatorKeys Separator keys for this clique. - /// @param dims Key->dimension map. - /// @param graph Factor graph for sizing and constraints. - /// @param solution Solution storage for cached pointers. - /// @param fixedKeys Keys fixed to zero by constraints (may be null). + /** + * Construct a clique from factor indices and cache static structure. + * @param factorIndices Indices of factors associated with this clique. + * @param parent Weak pointer to the parent clique. + * @param frontals Frontal keys for this clique. + * @param separatorKeys Separator keys for this clique. + * @param dims Key->dimension map. + * @param vbmRows Number of rows needed for the vertical block matrix. + * @param solution Solution storage for cached pointers. + * @param fixedKeys Keys fixed to zero by constraints (may be null). + */ explicit MultifrontalClique(std::vector factorIndices, const std::weak_ptr& parent, const KeyVector& frontals, - const KeyVector& separatorKeys, - const std::map& dims, - const GaussianFactorGraph& graph, + const KeySet& separatorKeys, + const KeyDimMap& dims, size_t vbmRows, VectorValues* solution, const std::unordered_set* fixedKeys); /// @name Setup (non-const) /// @{ - /// Cache the children list and compute parent indices. - void finalize(std::vector children); + /** + * Cache the children list, compute parent indices, and lock in QR usage. + * @param children Child cliques plus separator metadata. + * @param params Parameters controlling QR mode and thresholds. + */ + void finalize(std::vector children, + const MultifrontalParameters& params); - /// Load factor values into the pre-allocated Ab matrix and Hessians into - /// sbm_. - /// @param graph The factor graph with updated values. + /** + * Load factor values into the pre-allocated Ab matrix. + * @param graph The factor graph with updated values (structure must match + * the graph used to build this clique, apart from updated + * numerical values). Only JacobianFactor inputs are supported. + */ void fillAb(const GaussianFactorGraph& graph); + + /// Zero out the info matrix, re-add Hessians, accumulate Jacobians and + /// children. + void prepareForElimination(); + + /// Perform Cholesky factorization on the frontal block. + void factorize(); + + /** + * Add identity damping to the frontal block. + * @param lambda Damping factor + */ + void addIdentityDamping(double lambda); + + /** + * Add diagonal damping to the frontal block. + * @param lambda Damping factor + * @param minDiagonal Minimum diagonal value + * @param maxDiagonal Maximum diagonal value + */ + void addDiagonalDamping(double lambda, double minDiagonal, + double maxDiagonal); + + /** + * Add diagonal damping to the frontal block using an externally provided + * Hessian diagonal `diag(J^T J)` keyed by variable. + * + * This matches the legacy LM diagonal damping definition based on the + * diagonal of the original linearized system rather than the post-Schur + * clique information matrix. + * + * @param lambda Damping factor + * @param hessianDiagonal Map from key to diagonal vector (dimension-matched). + * @param minDiagonal Minimum diagonal value + * @param maxDiagonal Maximum diagonal value + */ + void addExactDiagonalDamping(double lambda, + const VectorValues& hessianDiagonal, + double minDiagonal, double maxDiagonal); + /// @} /// @name Read-only methods @@ -112,24 +166,20 @@ class GTSAM_EXPORT MultifrontalClique { /// Return the number of frontal keys in this clique. size_t numFrontals() const { return frontalPtrs_.size(); } + /// Return keys ordered by block index (frontals followed by separators). + const KeyVector& orderedKeys() const { return orderedKeys_; } + /// Build a GaussianConditional from the in-place factorization. std::shared_ptr conditional() const; /// Get the vertical block matrix Ab. const VerticalBlockMatrix& Ab() const { return Ab_; } - /// Get the symmetric block matrix (mutable). - SymmetricBlockMatrix& sbm() { return sbm_; } + /// Get the information matrix (const). + const SymmetricBlockMatrix& info() const { return info_; } - /// Get the symmetric block matrix (const). - const SymmetricBlockMatrix& sbm() const { return sbm_; } - - /** - * Count rows needed for the vertical block matrix. - * @param graph The factor graph. - * @return Total number of rows. - */ - size_t countRows(const GaussianFactorGraph& graph) const; + /// Check if this clique is using QR elimination. + bool useQR() const { return solveMode_ == SolveMode::QrLeaf; } /** * Print this clique. @@ -145,50 +195,81 @@ class GTSAM_EXPORT MultifrontalClique { /// @{ /** - * Eliminate this clique and propagate its separator contribution upward. + * Eliminate in-place, invalidating Ab_, and updating RSd_ and info_. * - * Computes the local normal equations (SBM) from the stacked Jacobian (Ab), - * incorporates child separator contributions, and performs partial Cholesky - * on the frontal blocks. Requires parent indices to be precomputed. + * Computes the local information matrix from the stacked Jacobian (Ab), + * incorporates child separator contributions, and performs partial QR or + * Cholesky on the frontal blocks. */ void eliminateInPlace(); /** - * Apply this clique's separator contribution into the parent clique. - * @param parent Parent clique to update. + * Version of eliminate that applies damping before eliminate. + * + * @param lambda Optional damping value; non-positive disables damping. + * @param dampingParams Parameters controlling LM-style damping. + * @param exactHessianDiagonal `diag(J^T J)` values for diagonal damping. */ - void updateParent(MultifrontalClique& parent) const; + void eliminateInPlace(double lambda, const LMDampingParams& dampingParams, + const VectorValues& exactHessianDiagonal); /** * Solve for this clique's frontal variables and write them back to the * cached solution vectors. * * Uses block back-substitution using the upper triangular-part of the - * Cholesky-stored SBM, solving the triangular system for the frontal blocks. + * Cholesky-stored information matrix, solving the triangular system for the + * frontal blocks. */ - void updateSolution() const; + void updateSolution(); + + /// Access the last old error computed during updateSolution(). + double lastOldError() const { return lastOldError_; } + + /// Access the last new error computed during updateSolution(). + double lastNewError() const { return lastNewError_; } + + /// Return the constant error term for this clique (nonzero for roots). + double constantTermError() const; /// @} friend std::ostream& operator<<(std::ostream& os, const MultifrontalClique& clique); private: + enum class SolveMode { Cholesky, QrLeaf }; + /// Cache pointers to frontal and separator update vectors. void cacheSolutionPointers(VectorValues* delta, const KeyVector& frontals, - const KeyVector& separatorKeys); + const KeySet& separatorKeys); + + /// Linear lookup for block index in small cliques. + DenseIndex blockIndex(Key key) const; + + /// Update a parent information matrix with this clique's separator + /// contribution. + void updateParentInfo(SymmetricBlockMatrix& parentInfo) const; + + /// Accumulate children separator updates into this clique's info matrix + /// (single-threaded). + void gatherUpdatesSequential(); + + /// Accumulate children separator updates into this clique's info matrix + /// (multi-threaded). + void gatherUpdatesParallel(size_t numThreads); /// Compute block dimensions from variable dimensions (excluding RHS). - std::vector blockDims(const std::map& dims, + std::vector blockDims(const KeyDimMap& dims, const KeyVector& frontals, - const KeyVector& separatorKeys) const; + const KeySet& separatorKeys) const; - /** - * Pre-allocate matrices for this clique. - * @param blockDims Block dimensions (excluding RHS). - * @param totalNumRows Number of rows for the vertical block matrix. - */ - void initializeMatrices(const std::vector& blockDims, - size_t totalNumRows); + /// Apply damping for QR elimination by writing into extra Ab_ rows. + void applyDampingQR(double lambda, const LMDampingParams& dampingParams, + const VectorValues& exactHessianDiagonal); + + /// Apply damping for Cholesky elimination by adding to the info_ matrix. + void applyDampingCholesky(double lambda, const LMDampingParams& dampingParams, + const VectorValues& exactHessianDiagonal); /** * Add a Jacobian factor's contributions into the Ab matrix. @@ -196,26 +277,41 @@ class GTSAM_EXPORT MultifrontalClique { */ size_t addJacobianFactor(const JacobianFactor& factor, size_t rowOffset); - /// Add a Hessian factor's contributions into the sbm_ matrix. - void addHessianFactor(const HessianFactor& factor); - void setParentIndices(const std::vector& indices) { parentIndices_ = indices; } - VerticalBlockMatrix Ab_; - mutable SymmetricBlockMatrix sbm_; - mutable Vector rhsScratch_; ///< Cached RHS workspace for back-substitution. - mutable Vector - separatorScratch_; ///< Cached separator stack for back-substitution. + // Construction-time metadata (set once in the constructor). std::vector factorIndices_; - std::map blockIndex_; ///< Key->block index for fast Ab fills. + KeyVector orderedKeys_; ///< Keys ordered by block index (frontals+seps). const std::unordered_set* fixedKeys_ = nullptr; + std::vector frontalPtrs_; ///< Solution frontals. + std::vector separatorPtrs_; ///< Solution separator. + std::vector blockDims_; ///< Cached block dimensions (excluding RHS). + size_t factorRows_ = 0; ///< Number of rows allocated in Ab. + + // Finalize-time metadata (set once after children are known). std::vector - parentIndices_; ///< Parent block indices for separators and RHS. - std::vector frontalPtrs_; ///< Pointers into solution frontals. - std::vector - separatorPtrs_; ///< Pointers into solution separator. + parentIndices_; ///< Parent block indices for separators + RHS. + SolveMode solveMode_ = SolveMode::Cholesky; + + // Finalize-time allocations. + VerticalBlockMatrix Ab_; + + // mutable as temporarily updateParentInfo + mutable VerticalBlockMatrix RSd_; ///< Cached [R S d] from elimination. + mutable SymmetricBlockMatrix info_; + + // Elimination-time state. + bool RSdReady_ = false; + + // Solve-time scratch space. + Vector rhsScratch_; ///< Cached RHS workspace for back-substitution. + Vector separatorScratch_; ///< Cached separator stack for back-substitution. + + // Solve-time cached error contributions. + double lastOldError_ = 0.0; + double lastNewError_ = 0.0; }; std::ostream& operator<<(std::ostream& os, const MultifrontalClique& clique); diff --git a/gtsam/linear/MultifrontalParameters.h b/gtsam/linear/MultifrontalParameters.h new file mode 100644 index 0000000000..23149edf47 --- /dev/null +++ b/gtsam/linear/MultifrontalParameters.h @@ -0,0 +1,49 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file MultifrontalParameters.h + * @brief Parameters for the imperative multifrontal solver. + * @author Frank Dellaert + * @date January 2026 + */ + +#pragma once + +#include +#include + +namespace gtsam { + +/** + * Parameters for `gtsam::MultifrontalSolver`. + * + * These parameters are intentionally defined in a standalone header so they + * can be referenced from nonlinear optimizer parameter types without pulling + * in the full multifrontal solver headers. + * + * @note LM-style damping behavior is controlled by `NonlinearMultifrontalSolver` + * and its damping parameters; `MultifrontalParameters` only controls structure, + * traversal, and reporting. + */ +struct MultifrontalParameters { + enum class QRMode { Off, Allow, Force }; + size_t leafMergeDimCap = 256; ///< Leaf-merge cap (0 disables). + size_t mergeDimCap = 32; ///< Merge threshold (0 disables). + QRMode qrMode = QRMode::Allow; ///< QR mode for leaf cliques. + double qrAspectRatio = 2.0; ///< Aspect ratio for QR mode=Allow. + std::ostream* reportStream = nullptr; ///< Optional structure reporting. + int eliminationParallelThreshold = 10; ///< Post-order task threshold. + int solutionParallelThreshold = 4096; ///< Pre-order task threshold. + size_t numThreads = 0; ///< Worker count (0 uses 0.75 * hw threads). +}; + +} // namespace gtsam diff --git a/gtsam/linear/MultifrontalSolver.cpp b/gtsam/linear/MultifrontalSolver.cpp index 9b27e60889..c327ea80cc 100644 --- a/gtsam/linear/MultifrontalSolver.cpp +++ b/gtsam/linear/MultifrontalSolver.cpp @@ -16,19 +16,17 @@ * @date December 2025 */ -#include -#include +#include +#include #include #include #include #include -#include #include #include #include #include -#include -#include +#include #include #include @@ -38,6 +36,7 @@ #include #include #include +#include namespace gtsam { @@ -88,85 +87,54 @@ struct StructureStats { constexpr double kConstraintSigmaTol = 1e-12; constexpr double kConstraintFeasibleTol = 1e-9; -std::unordered_set collectFixedKeys(const GaussianFactorGraph& graph) { +struct PrecomputeScratch { + std::map dims; std::unordered_set fixedKeys; - for (const auto& factor : graph) { + std::vector rowCounts; +}; + +PrecomputeScratch precomputeFromGraph(const GaussianFactorGraph& graph) { + PrecomputeScratch out; + out.rowCounts.resize(graph.size(), 0); + for (size_t i = 0; i < graph.size(); ++i) { + const auto& factor = graph[i]; if (!factor) continue; - auto jacobianFactor = std::dynamic_pointer_cast(factor); - if (!jacobianFactor) continue; + if (!factor->isJacobian()) { + throw MultifrontalSolverNotSupported( + "only JacobianFactor inputs are supported"); + } + auto jacobianFactor = std::static_pointer_cast(factor); + out.rowCounts[i] = jacobianFactor->rows(); + for (auto it = jacobianFactor->begin(); it != jacobianFactor->end(); ++it) { + out.dims[*it] = jacobianFactor->getDim(it); + } auto model = jacobianFactor->get_model(); if (!model || !model->isConstrained()) continue; + // Only accept fully constrained unary factors with zero residuals. if (jacobianFactor->size() != 1) { - throw std::runtime_error( - "MultifrontalSolver: only unary constrained factors are supported."); + throw MultifrontalSolverNotSupported( + "only unary constrained factors are supported"); } - const Vector sigmas = model->sigmas(); + const Vector& sigmas = model->sigmasRef(); if (!(sigmas.array().abs() <= kConstraintSigmaTol).all()) { - throw std::runtime_error( - "MultifrontalSolver: only fully constrained factors are supported."); + throw MultifrontalSolverNotSupported( + "only fully constrained factors are supported"); } if (jacobianFactor->getb().array().abs().maxCoeff() > kConstraintFeasibleTol) { - throw std::runtime_error( - "MultifrontalSolver: constrained factor is not feasible."); - } - fixedKeys.insert(*jacobianFactor->begin()); - } - return fixedKeys; -} - -// Compute variable dimensions from the GaussianFactorGraph -std::map computeDims(const GaussianFactorGraph& graph) { - std::map dims; - for (const auto& factor : graph) { - if (!factor) continue; - if (auto jacobianFactor = - std::dynamic_pointer_cast(factor)) { - for (auto it = jacobianFactor->begin(); it != jacobianFactor->end(); - ++it) { - dims[*it] = jacobianFactor->getDim(it); - } - } else if (auto hessianFactor = - std::dynamic_pointer_cast(factor)) { - for (auto it = hessianFactor->begin(); it != hessianFactor->end(); ++it) { - dims[*it] = hessianFactor->getDim(it); - } - } - } - return dims; -} - -// Build SymbolicFactorGraph from GaussianFactorGraph -SymbolicFactorGraph buildSymbolicGraph( - const GaussianFactorGraph& graph, - const std::unordered_set& fixedKeys) { - SymbolicFactorGraph symbolicGraph; - symbolicGraph.reserve(graph.size()); - for (size_t i = 0; i < graph.size(); ++i) { - if (!graph[i]) continue; - KeyVector keys; - keys.reserve(graph[i]->size()); - for (Key key : graph[i]->keys()) { - if (!fixedKeys.count(key)) { - keys.push_back(key); - } + throw MultifrontalSolverNotSupported( + "constrained factor is not feasible"); } - if (keys.empty()) continue; - symbolicGraph.emplace_shared(keys, i); + out.fixedKeys.insert(*jacobianFactor->begin()); } - return symbolicGraph; + return out; } // Sum the dimensions of frontal variables in a symbolic cluster. size_t frontalDimForSymbolicCluster( const SymbolicJunctionTree::sharedNode& cluster, const std::map& dims) { - size_t dim = 0; - for (Key key : cluster->orderedFrontalKeys) { - auto it = dims.find(key); - if (it != dims.end()) dim += it->second; - } - return dim; + return internal::sumDims(dims, cluster->orderedFrontalKeys); } size_t separatorDimForSymbolicCluster( @@ -174,13 +142,8 @@ size_t separatorDimForSymbolicCluster( const std::map& dims, SymbolicJunctionTree::Cluster::KeySetMap* cache) { if (!cluster) return 0; - size_t dim = 0; const KeySet separatorKeys = cluster->separatorKeys(cache); - for (Key key : separatorKeys) { - auto it = dims.find(key); - if (it != dims.end()) dim += it->second; - } - return dim; + return internal::sumDims(dims, separatorKeys); } size_t totalDimForSymbolicCluster( @@ -191,6 +154,172 @@ size_t totalDimForSymbolicCluster( separatorDimForSymbolicCluster(cluster, dims, cache); } +struct LeafInfo { + SymbolicJunctionTree::sharedNode child; + size_t totalDim = 0; + size_t index = 0; +}; + +struct LeafGroup { + std::vector leaves; + size_t firstIndex = 0; +}; + +std::vector collectLeafGroups( + const SymbolicJunctionTree::sharedNode& cluster, + const std::map& dims, + SymbolicJunctionTree::Cluster::KeySetMap* separatorCache) { + // Group leaf children by identical separators, keeping first-seen order. + FastMap groupIndexBySeparator; + std::vector groups; + + for (size_t i = 0; i < cluster->children.size(); ++i) { + const auto& child = cluster->children[i]; + if (!child || !child->children.empty()) continue; + + child->separatorKeys(separatorCache); + const KeySet& separatorKeys = separatorCache->at(child.get()); + auto it = groupIndexBySeparator.find(separatorKeys); + size_t groupIndex = 0; + if (it == groupIndexBySeparator.end()) { + groupIndex = groups.size(); + groupIndexBySeparator.emplace(separatorKeys, groupIndex); + groups.push_back(LeafGroup{{}, i}); + } else { + groupIndex = it->second; + } + + const size_t totalDim = + totalDimForSymbolicCluster(child, dims, separatorCache); + groups[groupIndex].leaves.push_back({child, totalDim, i}); + } + + return groups; +} + +struct LeafBatch { + SymbolicJunctionTree::Cluster::Children leaves; + size_t firstIndex = 0; +}; + +std::vector buildLeafBatches(const std::vector& groups, + size_t leafMergeDimCap) { + // Pack each group into batches capped by total dimension. + std::vector batches; + for (const auto& group : groups) { + size_t currentTotalDim = 0; + LeafBatch batch; + batch.firstIndex = group.firstIndex; + for (const auto& leaf : group.leaves) { + if (!batch.leaves.empty() && + currentTotalDim + leaf.totalDim > leafMergeDimCap) { + batches.push_back(batch); + batch.leaves.clear(); + currentTotalDim = 0; + batch.firstIndex = leaf.index; + } + if (batch.leaves.empty()) { + batch.firstIndex = leaf.index; + } + batch.leaves.push_back(leaf.child); + currentTotalDim += leaf.totalDim; + } + if (!batch.leaves.empty()) { + batches.push_back(batch); + } + } + + std::sort(batches.begin(), batches.end(), + [](const LeafBatch& a, const LeafBatch& b) { + return a.firstIndex < b.firstIndex; + }); + return batches; +} + +struct MergedClusters { + FastMap indexByChild; + std::vector clusters; + size_t count = 0; + size_t numSelectedLeaves = 0; +}; + +MergedClusters buildMergedClusters(const std::vector& clusters) { + MergedClusters merged; + merged.clusters.assign(clusters.size(), nullptr); + + for (size_t i = 0; i < clusters.size(); ++i) { + const auto& batch = clusters[i]; + if (batch.leaves.size() <= 1) continue; + + merged.numSelectedLeaves += batch.leaves.size(); + // Map each leaf pointer to its batch index so we can skip and insert in + // O(1) when scanning the original children list. + for (const auto& leaf : batch.leaves) { + if (leaf) merged.indexByChild.emplace(leaf.get(), i); + } + + // Build the merged batch once so insertion is just pointer replacement. + auto mergedCluster = std::make_shared(); + for (const auto& leaf : batch.leaves) { + if (leaf) mergedCluster->merge(leaf); + } + std::reverse(mergedCluster->orderedFrontalKeys.begin(), + mergedCluster->orderedFrontalKeys.end()); + merged.clusters[i] = mergedCluster; + merged.count += 1; + } + + return merged; +} + +SymbolicJunctionTree::Cluster::Children buildMergedChildren( + const SymbolicJunctionTree::Cluster::Children& oldChildren, + const std::vector& batches, const MergedClusters& merged) { + SymbolicJunctionTree::Cluster::Children newChildren; + newChildren.reserve(oldChildren.size() - merged.numSelectedLeaves + + merged.count); + std::vector inserted(batches.size(), false); + + for (size_t i = 0; i < oldChildren.size(); ++i) { + const auto& child = oldChildren[i]; + if (!child) { + newChildren.push_back(child); + continue; + } + + auto it = merged.indexByChild.find(child.get()); + if (it == merged.indexByChild.end()) { + newChildren.push_back(child); + continue; + } + + const size_t batchIndex = it->second; + // Insert the merged cluster exactly once, at the first original index where + // that cluster appeared. All other leaves in the cluster are skipped. + if (!inserted[batchIndex] && i == batches[batchIndex].firstIndex) { + newChildren.push_back(merged.clusters[batchIndex]); + inserted[batchIndex] = true; + } + } + + return newChildren; +} + +bool mergeLeafBatches(const SymbolicJunctionTree::sharedNode& cluster, + const std::vector& batches) { + if (batches.empty()) return false; + + // Merge in a single pass to avoid repeated scans of large child lists. + const MergedClusters merged = buildMergedClusters(batches); + if (merged.count == 0) return false; + + auto oldChildren = cluster->children; + SymbolicJunctionTree::Cluster::Children newChildren = + buildMergedChildren(oldChildren, batches, merged); + cluster->children.swap(newChildren); + return true; +} + void accumulateSymbolicStats(const SymbolicJunctionTree::sharedNode& cluster, const std::map& dims, SymbolicJunctionTree::Cluster::KeySetMap* cache, @@ -205,6 +334,49 @@ void accumulateSymbolicStats(const SymbolicJunctionTree::sharedNode& cluster, } } +/** + * @brief Recursively groups leaf children into super-leaves capped by total + * dimension. + * + * This function traverses the symbolic junction tree rooted at the given + * cluster node. For each cluster, it gathers direct leaf children (i.e., + * children with no further descendants) and groups those with identical + * separators into new super-leaves until the running total dimension reaches + * the specified leafMergeDimCap, then starts a new group. + * + * The merging process works as follows: + * - Recursively process all children clusters first. + * - Identify all direct leaf children of the current cluster and collect their + * total dimensions (separator + frontal) and separator keys. + * - Group leaf children by identical separator keys, preserving first-seen + * order for each separator. + * - Build super-leaves by accumulating leaf children until the total dimension + * hits the cap, then start a new super-leaf. + * - Replace leaf children with the new super-leaves (non-leaf children keep + * their relative order and grouped leaves appear at the first leaf location + * for that separator). + * + * @param cluster The current symbolic junction tree node (cluster) to + * process. + * @param dims A map from variable keys to their dimensions. + * @param leafMergeDimCap The maximum allowed dimension for a merged cluster. + */ +void mergeLeafChildren(const SymbolicJunctionTree::sharedNode& cluster, + const std::map& dims, + size_t leafMergeDimCap) { + if (!cluster || cluster->children.empty()) return; + for (const auto& child : cluster->children) { + mergeLeafChildren(child, dims, leafMergeDimCap); + } + + SymbolicJunctionTree::Cluster::KeySetMap separatorCache; + const std::vector groups = + collectLeafGroups(cluster, dims, &separatorCache); + const std::vector batches = + buildLeafBatches(groups, leafMergeDimCap); + if (!mergeLeafBatches(cluster, batches)) return; +} + // Bottom-up merge of child clusters whose merged total dimension stays below // a threshold. void mergeSmallClusters(const SymbolicJunctionTree::sharedNode& cluster, @@ -246,53 +418,43 @@ void reportStructure(const SymbolicJunctionTree& junctionTree, stats.report(name, reportStream); } -KeyVector keyVectorFromKeySet(const KeySet& keys) { - KeyVector result; - result.reserve(keys.size()); - for (Key key : keys) result.push_back(key); - return result; -} - -std::vector factorIndicesForSymbolicCluster( - const SymbolicJunctionTree::sharedNode& cluster) { - std::vector indices; - indices.reserve(cluster->factors.size()); - for (const auto& factor : cluster->factors) { - assert(factor); - auto indexed = - std::static_pointer_cast(factor); - indices.push_back(indexed->index_); - } - return indices; -} - struct BuiltClique { MultifrontalSolver::CliquePtr clique; - KeyVector separatorKeys; + KeySet separatorKeys; }; // Build cliques from a symbolic junction tree and wire parent/child metadata. struct CliqueBuilder { const std::map& dims; - const GaussianFactorGraph& graph; VectorValues* solution; std::vector* cliques; - SymbolicJunctionTree::Cluster::KeySetMap separatorCache; const std::unordered_set* fixedKeys; + const MultifrontalParameters* params; + const std::vector* rowCounts; + SymbolicJunctionTree::Cluster::KeySetMap separatorCache = {}; BuiltClique build(const SymbolicJunctionTree::sharedNode& cluster, std::weak_ptr parent) { - if (!cluster) return {nullptr, KeyVector()}; + if (!cluster) return {nullptr, KeySet()}; // Gather symbolic metadata for this clique. const KeyVector& frontals = cluster->orderedFrontalKeys; - KeyVector separatorKeys = - keyVectorFromKeySet(cluster->separatorKeys(&separatorCache)); + const KeySet& separatorKeys = cluster->separatorKeys(&separatorCache); + std::vector factorIndices; + factorIndices.reserve(cluster->factors.size()); + size_t vbmRows = 0; + for (const auto& factor : cluster->factors) { + assert(factor); + auto indexed = + std::static_pointer_cast(factor); + factorIndices.push_back(indexed->index_); + vbmRows += rowCounts->at(indexed->index_); + } // Create the clique node and cache static structure. auto clique = std::make_shared( - factorIndicesForSymbolicCluster(cluster), parent, frontals, - separatorKeys, dims, graph, solution, fixedKeys); + std::move(factorIndices), parent, frontals, separatorKeys, dims, + vbmRows, solution, fixedKeys); // Build children and collect separator keys. std::vector childInfos; @@ -306,29 +468,41 @@ struct CliqueBuilder { } // Finalize children metadata and register clique. - clique->finalize(std::move(childInfos)); + clique->finalize(std::move(childInfos), *params); cliques->push_back(clique); return {clique, std::move(separatorKeys)}; } }; +size_t resolveThreadCount(size_t requested) { + if (requested != 0) return requested; + unsigned int hardwareThreads = std::thread::hardware_concurrency(); + if (hardwareThreads == 0) hardwareThreads = 1; + size_t threads = (hardwareThreads * 3) / 4; + return threads == 0 ? 1 : threads; +} + } // namespace /* ************************************************************************* */ MultifrontalSolver::MultifrontalSolver(const GaussianFactorGraph& graph, const Ordering& ordering, - size_t mergeDimCap, - std::ostream* reportStream) { - // Pre-compute variable dimensions - dims_ = computeDims(graph); - fixedKeys_ = collectFixedKeys(graph); - Ordering reducedOrdering; - reducedOrdering.reserve(ordering.size()); + const Parameters& params) + : MultifrontalSolver(Precompute(graph, ordering), ordering, params) {} + +/* ************************************************************************* */ +MultifrontalSolver::MultifrontalSolver(PrecomputedData data, + const Ordering& ordering, + const Parameters& params) + : ForestTraversal( + resolveThreadCount(params.numThreads)), + params_(params) { + dims_ = std::move(data.dims); + fixedKeys_ = std::move(data.fixedKeys); + + // Seed the cached solution with zero vectors for all variables. for (Key key : ordering) { solution_.insert(key, Vector::Zero(dims_.at(key))); - if (!fixedKeys_.count(key)) { - reducedOrdering.push_back(key); - } } for (Key key : fixedKeys_) { if (!solution_.exists(key)) { @@ -336,29 +510,32 @@ MultifrontalSolver::MultifrontalSolver(const GaussianFactorGraph& graph, } } - // Convert to SymbolicFactorGraph to build the elimination tree - SymbolicFactorGraph symbolicGraph = buildSymbolicGraph(graph, fixedKeys_); - - // Build SymbolicEliminationTree and then SymbolicJunctionTree - SymbolicEliminationTree eliminationTree(symbolicGraph, reducedOrdering); - SymbolicJunctionTree junctionTree(eliminationTree); - // Report the symbolic structure before any merge. - reportStructure(junctionTree, dims_, "Symbolic cluster structure", - reportStream); + reportStructure(data.indexedJunctionTree, dims_, "Symbolic cluster structure", + params_.reportStream); + + // If applicable, merge leaf children by a separate cap first. + if (params_.leafMergeDimCap > 0) { + for (const auto& rootCluster : data.indexedJunctionTree.roots()) { + mergeLeafChildren(rootCluster, dims_, params_.leafMergeDimCap); + } + reportStructure(data.indexedJunctionTree, dims_, + "Clique structure after leaf merge", params_.reportStream); + } // If applicable, merge small child cliques bottom-up. - if (mergeDimCap > 0) { - for (const auto& rootCluster : junctionTree.roots()) { - mergeSmallClusters(rootCluster, dims_, mergeDimCap); + if (params_.mergeDimCap > 0) { + for (const auto& rootCluster : data.indexedJunctionTree.roots()) { + mergeSmallClusters(rootCluster, dims_, params_.mergeDimCap); } - reportStructure(junctionTree, dims_, "Clique structure after merge", - reportStream); + reportStructure(data.indexedJunctionTree, dims_, "Clique structure after merge", + params_.reportStream); } // Build the actual MultifrontalClique structure. - CliqueBuilder builder{dims_, graph, &solution_, &cliques_, {}, &fixedKeys_}; - for (const auto& rootCluster : junctionTree.roots()) { + CliqueBuilder builder{dims_, &solution_, &cliques_, &fixedKeys_, ¶ms_, + &data.rowCounts}; + for (const auto& rootCluster : data.indexedJunctionTree.roots()) { if (rootCluster) { roots_.push_back( builder.build(rootCluster, std::weak_ptr()) @@ -366,8 +543,28 @@ MultifrontalSolver::MultifrontalSolver(const GaussianFactorGraph& graph, } } - // Load initial numerical values after the structure is built. - load(graph); + // Caller is responsible for loading numerical values via load(). +} + +/* ************************************************************************* */ +MultifrontalSolver::PrecomputedData MultifrontalSolver::Precompute( + const GaussianFactorGraph& graph, const Ordering& ordering) { + PrecomputeScratch scratch = precomputeFromGraph(graph); + + Ordering reducedOrdering; + reducedOrdering.reserve(ordering.size()); + for (Key key : ordering) { + if (!scratch.fixedKeys.count(key)) { + reducedOrdering.push_back(key); + } + } + + IndexedJunctionTree indexedJunctionTree = + graph.buildIndexedJunctionTree(reducedOrdering, scratch.fixedKeys); + + return MultifrontalSolver::PrecomputedData{ + std::move(scratch.dims), std::move(scratch.fixedKeys), + std::move(indexedJunctionTree), std::move(scratch.rowCounts)}; } /* ************************************************************************* */ @@ -375,24 +572,42 @@ void MultifrontalSolver::load(const GaussianFactorGraph& graph) { for (auto& clique : cliques_) { clique->fillAb(graph); } + loaded_ = true; + eliminated_ = false; + hasDeltaError_ = false; } /* ************************************************************************* */ void MultifrontalSolver::eliminateInPlace() { - // Parallel elimination uses PostOrderForestParallel, which will be - // multi-threaded if GTSAM was compiled with TBB. - struct EliminatePostVisitor { - void operator()(const CliquePtr& node) const { - if (node) node->eliminateInPlace(); - } - }; - EliminatePostVisitor visitorPost; - TbbOpenMPMixedScope threadLimiter; - treeTraversal::PostOrderForestParallel(*this, visitorPost, 10); + if (!loaded_) { + throw std::runtime_error( + "MultifrontalSolver::eliminateInPlace: load() must be called before " + "eliminating."); + } + eliminated_ = false; + hasDeltaError_ = false; + runBottomUp([](MultifrontalClique& node) { node.eliminateInPlace(); }, + params_.eliminationParallelThreshold); + eliminated_ = true; +} + +/* ************************************************************************* */ +void MultifrontalSolver::eliminateInPlace(const GaussianFactorGraph& graph) { + // Combine load + eliminate in one post-order traversal to improve locality. + runBottomUp( + [&graph](MultifrontalClique& node) { + node.fillAb(graph); + node.eliminateInPlace(); + }, + params_.eliminationParallelThreshold); + loaded_ = true; + eliminated_ = true; + hasDeltaError_ = false; } /* ************************************************************************* */ GaussianBayesTree MultifrontalSolver::computeBayesTree() const { + assert(loaded_ && eliminated_); GaussianBayesTree bayesTree; using Clique = GaussianBayesTreeClique; using BayesCliquePtr = GaussianBayesTree::sharedClique; @@ -433,16 +648,56 @@ GaussianBayesTree MultifrontalSolver::computeBayesTree() const { } /* ************************************************************************* */ -const VectorValues& MultifrontalSolver::updateSolution() const { - for (const auto& clique : cliques_) { - clique->updateSolution(); - } +const VectorValues& MultifrontalSolver::updateSolution() { + assert(loaded_ && eliminated_); + + // Back-substitute the solution with a top-down pass through the cliques. + runTopDown([](MultifrontalClique& node) { node.updateSolution(); }, + params_.solutionParallelThreshold); + + // Enforce constrained keys as zero in the final solution. for (Key key : fixedKeys_) { solution_.at(key).setZero(); } + + // Aggregate per-clique linearized errors from the latest solution. + lastOldError_ = 0.0; + lastNewError_ = 0.0; + for (const auto& clique : cliques_) { + if (!clique) continue; + lastOldError_ += clique->lastOldError(); + lastNewError_ += clique->lastNewError(); + } + + // Add the constant term once from the root cliques. + double constantError = 0.0; + for (const auto& root : roots_) { + if (!root) continue; + constantError += root->constantTermError(); + } + lastOldError_ += constantError; + lastNewError_ += constantError; + + // Mark delta error as valid for subsequent deltaError() calls. + hasDeltaError_ = true; return solution_; } +double MultifrontalSolver::deltaError(double* oldError, + double* newError) const { + if (!hasDeltaError_) { + throw std::runtime_error( + "MultifrontalSolver::deltaError requires updateSolution()."); + } + if (oldError) { + *oldError = lastOldError_; + } + if (newError) { + *newError = lastNewError_; + } + return lastOldError_ - lastNewError_; +} + /* ************************************************************************* */ std::ostream& operator<<(std::ostream& os, const MultifrontalSolver& solver) { os << "MultifrontalSolver(roots=" << solver.roots_.size() diff --git a/gtsam/linear/MultifrontalSolver.h b/gtsam/linear/MultifrontalSolver.h index 3880daea7a..a00bb7c17d 100644 --- a/gtsam/linear/MultifrontalSolver.h +++ b/gtsam/linear/MultifrontalSolver.h @@ -18,14 +18,19 @@ #pragma once +#include #include #include #include +#include #include +#include #include #include #include +#include +#include #include #include @@ -34,47 +39,118 @@ namespace gtsam { class GaussianBayesTree; class MultifrontalClique; +/** + * Exception for unsupported use of the new multifrontal solver. + * Includes guidance for using the legacy solver instead. + */ +class GTSAM_EXPORT MultifrontalSolverNotSupported : public std::runtime_error { + public: + explicit MultifrontalSolverNotSupported(const std::string& reason) + : std::runtime_error(BuildMessage(reason)) {} + + private: + static std::string BuildMessage(const std::string& reason) { + std::string message = "MultifrontalSolver not supported: " + reason + ". "; + message += + "Enable GTSAM_ALLOW_DEPRECATED_SINCE_V43 to default to the legacy " + "solver, or set linearSolverType = MULTIFRONTAL_CHOLESKY."; + return message; + } +}; + /** * Imperative-style multifrontal solver for Gaussian factor graphs. * * This class pre-allocates all necessary memory for the elimination tree and * provides efficient methods for loading new factors, eliminating the graph, * and solving for the update vector. + * + * @note Only JacobianFactor inputs are supported. Any non-Jacobian factors + * will throw during construction/precompute or load. + * + * @note Clique merging has two optional phases: an initial leaf-merge pass + * (leafMergeDimCap) that merges multiple leaf children into a common parent + * while the parent's total dimension plus merged frontal dimensions stays + * below the cap, followed by a bottom-up pass (mergeDimCap) that merges any + * remaining small child cliques into their parent. Both phases run before + * numeric elimination and can reduce tiny cliques and improve cache locality. + * Defaults are conservative and may need tuning per machine or dataset. */ -class GTSAM_EXPORT MultifrontalSolver { +class GTSAM_EXPORT MultifrontalSolver + : public ForestTraversal { public: + /// Tuning parameters for traversal and reporting. + using Parameters = MultifrontalParameters; + + /// Precomputed symbolic and sizing data for multifrontal solver construction. + struct PrecomputedData { + std::map dims; ///< Map from variable key to dimension. + std::unordered_set fixedKeys; ///< Keys fixed by constrained factors. + IndexedJunctionTree indexedJunctionTree; ///< Precomputed indexed junction tree. + std::vector rowCounts; ///< Row counts indexed by factor index. + }; + /// Shared pointer to a MultifrontalClique. using CliquePtr = std::shared_ptr; /// Node type for tree traversal utilities. using Node = MultifrontalClique; - private: + protected: std::vector roots_; ///< Roots of the elimination tree. std::vector cliques_; ///< All cliques in the solver. std::map dims_; ///< Map from variable key to dimension. mutable VectorValues solution_; ///< Cached solution vector. std::unordered_set fixedKeys_; ///< Keys fixed by constrained factors. + bool loaded_ = false; ///< Whether load() has been called. + bool eliminated_ = false; ///< Whether eliminateInPlace() ran. + Parameters params_; ///< Tunable solver parameters. + double lastOldError_ = 0.0; ///< Cached old linearized error. + double lastNewError_ = 0.0; ///< Cached new linearized error. + bool hasDeltaError_ = false; ///< Whether updateSolution computed it. public: /** * Construct the solver from a factor graph and an ordering. - * This builds the symbolic junction tree and pre-allocates all matrices. + * This builds the indexed junction tree and pre-allocates all matrices. + * Call load() before eliminating to populate numerical values. * @param graph The factor graph to solve. + * Must contain only JacobianFactor instances. * @param ordering The variable ordering to use for elimination. - * @param mergeDimCap Merge a child if its frontal dimension plus the - * parent's total dimension is below this threshold (0 disables merging). - * @param reportStream Optional stream to report clique structure stats - * (frontals, separators, total dims, and children). + * @param params Tunable parameters for traversal and reporting. */ MultifrontalSolver(const GaussianFactorGraph& graph, const Ordering& ordering, - size_t mergeDimCap = 0, - std::ostream* reportStream = nullptr); + const Parameters& params = Parameters{}); + + /** + * Construct the solver from precomputed symbolic data. + * Call load() before eliminating to populate numerical values. + * @param data Precomputed symbolic structure and sizing data. + * @param ordering The variable ordering to use for seeding solution storage. + * @param params Tunable parameters for traversal and reporting. + */ + MultifrontalSolver(PrecomputedData data, const Ordering& ordering, + const Parameters& params = Parameters{}); + + /** + * Precompute symbolic structure and sizing data from a factor graph. + * This builds an IndexedJunctionTree that can be reused across multiple + * solver instances when the graph structure and ordering remain unchanged. + * Only JacobianFactor inputs are supported. + * + * @param graph The factor graph (must contain only JacobianFactor instances) + * @param ordering The variable elimination ordering + * @return PrecomputedData containing the indexed junction tree and sizing info + */ + static PrecomputedData Precompute(const GaussianFactorGraph& graph, + const Ordering& ordering); /** * Load new numerical values from the factor graph. * This overwrites the values in the pre-allocated matrices. * - * @param graph The factor graph with updated values (structure must match). + * @param graph The factor graph with updated values (structure must match + * the graph used to construct/precompute this solver, apart + * from updated numerical values). */ void load(const GaussianFactorGraph& graph); @@ -84,6 +160,12 @@ class GTSAM_EXPORT MultifrontalSolver { */ void eliminateInPlace(); + /** + * Load and eliminate the graph in a single traversal. + * This calls fillAb() and eliminateInPlace() per clique in post-order. + */ + void eliminateInPlace(const GaussianFactorGraph& graph); + /** * Compute a Bayes tree from the in-place Cholesky factorization. * Requires eliminateInPlace() to have been called beforehand. @@ -97,7 +179,14 @@ class GTSAM_EXPORT MultifrontalSolver { * * @return Reference to the internally cached solution vector. */ - const VectorValues& updateSolution() const; + const VectorValues& updateSolution(); + + /** + * Return the linearized delta error from the last updateSolution() call. + * Optionally returns the old and new linearized errors. + */ + double deltaError(double* oldError = nullptr, + double* newError = nullptr) const; /// Accessor for the roots of the elimination tree. const std::vector& roots() const { return roots_; } diff --git a/gtsam/linear/NoiseModel.cpp b/gtsam/linear/NoiseModel.cpp index 08aea1fc0b..986bf591fd 100644 --- a/gtsam/linear/NoiseModel.cpp +++ b/gtsam/linear/NoiseModel.cpp @@ -170,6 +170,14 @@ Vector Gaussian::unwhiten(const Vector& v) const { return backSubstituteUpper(thisR(), v); } +void Gaussian::unwhitenInPlace(Vector& v) const { + thisR().triangularView().solveInPlace(v); +} + +void Gaussian::unwhitenInPlace(Eigen::Block& v) const { + thisR().triangularView().solveInPlace(v); +} + /* ************************************************************************* */ Matrix Gaussian::Whiten(const Matrix& H) const { return thisR() * H; @@ -319,6 +327,14 @@ Vector Diagonal::unwhiten(const Vector& v) const { return v.cwiseProduct(sigmas_); } +void Diagonal::whitenInPlace(Vector& v) const { + v.array() *= invsigmas_.array(); +} + +void Diagonal::unwhitenInPlace(Vector& v) const { + v.array() *= sigmas_.array(); +} + Matrix Diagonal::Whiten(const Matrix& H) const { return vector_scale(invsigmas(), H); } @@ -331,6 +347,14 @@ void Diagonal::WhitenInPlace(Eigen::Block H) const { H = invsigmas().asDiagonal() * H; } +void Diagonal::whitenInPlace(Eigen::Block& v) const { + v.array() *= invsigmas_.array(); +} + +void Diagonal::unwhitenInPlace(Eigen::Block& v) const { + v.array() *= sigmas_.array(); +} + /* *******************************************************************************/ double Diagonal::logDetR() const { return invsigmas_.unaryExpr([](double x) { return log(x); }).sum(); @@ -403,6 +427,26 @@ Vector Constrained::whiten(const Vector& v) const { return c; } +void Constrained::whitenInPlace(Vector& v) const { + const size_t n = v.size(); + for (size_t i = 0; i < n; ++i) { + const double si = sigmas_(i); + if (si != 0.0) { + v(i) /= si; + } + } +} + +void Constrained::whitenInPlace(Eigen::Block& v) const { + const DenseIndex n = v.rows(); + for (DenseIndex i = 0; i < n; ++i) { + const double si = sigmas_(static_cast(i)); + if (si != 0.0) { + v(i, 0) /= si; + } + } +} + /* ************************************************************************* */ Constrained::shared_ptr Constrained::MixedSigmas(const Vector& sigmas) { return MixedSigmas(Vector::Constant(sigmas.size(), 1000.0), sigmas); @@ -702,6 +746,16 @@ void Isotropic::WhitenInPlace(Eigen::Block H) const { H *= invsigma_; } +/* ************************************************************************* */ +void Isotropic::unwhitenInPlace(Vector& v) const { + v *= sigma_; +} + +/* ************************************************************************* */ +void Isotropic::unwhitenInPlace(Eigen::Block& v) const { + v *= sigma_; +} + /* *******************************************************************************/ double Isotropic::logDetR() const { return log(invsigma_) * dim(); } diff --git a/gtsam/linear/NoiseModel.h b/gtsam/linear/NoiseModel.h index 0b47eea062..0e6bb895f4 100644 --- a/gtsam/linear/NoiseModel.h +++ b/gtsam/linear/NoiseModel.h @@ -18,8 +18,9 @@ #pragma once -#include +#include #include +#include #include #include #include @@ -32,6 +33,7 @@ #endif #include +#include namespace gtsam { @@ -152,6 +154,18 @@ namespace gtsam { }; //--------------------------------------------------------------------------------------- + /// Return true if the model dimension matches the manifold dimension. + template + inline bool matchesDimension(const Base& model, const T& measured) { + static_assert(IsManifold::value, + "noiseModel::matchesDimension requires a manifold type."); + if constexpr (traits::dimension == Eigen::Dynamic) { + return model.dim() == + static_cast(traits::GetDimension(measured)); + } else { + return model.dim() == static_cast(traits::dimension); + } + } /** * Gaussian implements the mathematical model @@ -223,6 +237,8 @@ namespace gtsam { Vector sigmas() const override; Vector whiten(const Vector& v) const override; Vector unwhiten(const Vector& v) const override; + void unwhitenInPlace(Vector& v) const override; + void unwhitenInPlace(Eigen::Block& v) const override; /** * Multiply a derivative with R (derivative of whiten) @@ -344,11 +360,17 @@ namespace gtsam { void print(const std::string& name) const override; Vector sigmas() const override { return sigmas_; } + /// Return standard deviations without copying. + inline const Vector& sigmasRef() const { return sigmas_; } Vector whiten(const Vector& v) const override; Vector unwhiten(const Vector& v) const override; + void whitenInPlace(Vector& v) const override; + void unwhitenInPlace(Vector& v) const override; Matrix Whiten(const Matrix& H) const override; void WhitenInPlace(Matrix& H) const override; void WhitenInPlace(Eigen::Block H) const override; + void whitenInPlace(Eigen::Block& v) const override; + void unwhitenInPlace(Eigen::Block& v) const override; /** * Return standard deviations (sqrt of diagonal) @@ -495,6 +517,8 @@ namespace gtsam { /// Calculates error vector with weights applied Vector whiten(const Vector& v) const override; + void whitenInPlace(Vector& v) const override; + void whitenInPlace(Eigen::Block& v) const override; /// Whitening functions will perform partial whitening on rows /// with a non-zero sigma. Other rows remain untouched. @@ -592,6 +616,8 @@ namespace gtsam { void WhitenInPlace(Matrix& H) const override; void whitenInPlace(Vector& v) const override; void WhitenInPlace(Eigen::Block H) const override; + void unwhitenInPlace(Vector& v) const override; + void unwhitenInPlace(Eigen::Block& v) const override; /** * Return standard deviation @@ -638,6 +664,23 @@ namespace gtsam { return shared_ptr(new Unit(dim)); } + /** + * Create a unit covariance noise model for a measurement type. + * Reuse a cached instance for fixed-size types. + */ + template , int> = 0> + static shared_ptr Create(const T& measured) { + static_assert(IsManifold::value, + "noiseModel::Unit::Create requires a manifold type."); + if constexpr (traits::dimension == Eigen::Dynamic) { + return Create(static_cast(traits::GetDimension(measured))); + } else { + static const shared_ptr kDefault = + Create(static_cast(traits::dimension)); + return kDefault; + } + } + /// true if a unit noise model, saves slow/clumsy dynamic casting bool isUnit() const override { return true; } @@ -720,6 +763,7 @@ namespace gtsam { { Vector b; Matrix B=A; this->WhitenSystem(B,b); return B; } inline Vector unwhiten(const Vector& /*v*/) const override { throw std::invalid_argument("unwhiten is not currently supported for robust noise models."); } + inline void whitenInPlace(Vector& v) const override { this->WhitenSystem(v); } /// Compute loss from the m-estimator using the Mahalanobis distance. double loss(const double squared_distance) const override { return robust_->loss(std::sqrt(squared_distance)); @@ -760,6 +804,16 @@ namespace gtsam { // Helper function GTSAM_EXPORT std::optional checkIfDiagonal(const Matrix& M); + /// Create + template + Base::shared_ptr validOrDefault(const T& value, + const Base::shared_ptr& model) { + if (!model) return noiseModel::Unit::Create(value); + if (noiseModel::matchesDimension(*model, value)) return model; + throw std::runtime_error( + "noiseModel::validOrDefault: mis-matched model dimension."); + } + } // namespace noiseModel /** diff --git a/gtsam/linear/Sampler.cpp b/gtsam/linear/Sampler.cpp index 68f21d7234..574059d61c 100644 --- a/gtsam/linear/Sampler.cpp +++ b/gtsam/linear/Sampler.cpp @@ -25,7 +25,7 @@ namespace gtsam { /* ************************************************************************* */ Sampler::Sampler(const noiseModel::Diagonal::shared_ptr& model, uint_fast64_t seed) - : model_(model), generator_(seed) { + : model_(model), generator_(seed), externalGenerator_(nullptr) { if (!model) { throw std::invalid_argument("Sampler::Sampler needs a non-null model."); } @@ -33,7 +33,24 @@ Sampler::Sampler(const noiseModel::Diagonal::shared_ptr& model, /* ************************************************************************* */ Sampler::Sampler(const Vector& sigmas, uint_fast64_t seed) - : model_(noiseModel::Diagonal::Sigmas(sigmas, true)), generator_(seed) {} + : model_(noiseModel::Diagonal::Sigmas(sigmas, true)), + generator_(seed), + externalGenerator_(nullptr) {} + +/* ************************************************************************* */ +Sampler::Sampler(const noiseModel::Diagonal::shared_ptr& model, + std::mt19937_64& rng) + : model_(model), generator_(0u), externalGenerator_(&rng) { + if (!model) { + throw std::invalid_argument("Sampler::Sampler needs a non-null model."); + } +} + +/* ************************************************************************* */ +Sampler::Sampler(const Vector& sigmas, std::mt19937_64& rng) + : model_(noiseModel::Diagonal::Sigmas(sigmas, true)), + generator_(0u), + externalGenerator_(&rng) {} /* ************************************************************************* */ Vector Sampler::sampleDiagonal(const Vector& sigmas, std::mt19937_64* rng) { @@ -55,13 +72,14 @@ Vector Sampler::sampleDiagonal(const Vector& sigmas, std::mt19937_64* rng) { /* ************************************************************************* */ Vector Sampler::sampleDiagonal(const Vector& sigmas) const { - return sampleDiagonal(sigmas, &generator_); + std::mt19937_64* rng = externalGenerator_ ? externalGenerator_ : &generator_; + return sampleDiagonal(sigmas, rng); } /* ************************************************************************* */ Vector Sampler::sample() const { assert(model_.get()); - const Vector& sigmas = model_->sigmas(); + const Vector& sigmas = model_->sigmasRef(); return sampleDiagonal(sigmas); } diff --git a/gtsam/linear/Sampler.h b/gtsam/linear/Sampler.h index eb6549eb52..6e797279ec 100644 --- a/gtsam/linear/Sampler.h +++ b/gtsam/linear/Sampler.h @@ -18,6 +18,7 @@ #pragma once +#include #include #include @@ -30,12 +31,15 @@ namespace gtsam { */ class GTSAM_EXPORT Sampler { protected: - /** noiseModel created at generation */ + /// noiseModel created at generation noiseModel::Diagonal::shared_ptr model_; - /** generator */ + /// generator mutable std::mt19937_64 generator_; + /// Non-owning optional external generator. If non-null, sampling uses this. + mutable std::mt19937_64* externalGenerator_ = nullptr; + public: typedef std::shared_ptr shared_ptr; @@ -44,21 +48,45 @@ class GTSAM_EXPORT Sampler { /** * Create a sampler for the distribution specified by a diagonal NoiseModel - * with a manually specified seed + * with a manually specified seed. + * + * This constructor is convenient for deterministic, throw-away sampling. + * If you need stateful sampling across calls or across multiple Sampler + * instances, prefer the RNG-based constructor and manage the RNG yourself. * - * NOTE: do not use zero as a seed, it will break the generator + * NOTE: do not use zero as a seed, it will break the generator. */ explicit Sampler(const noiseModel::Diagonal::shared_ptr& model, uint_fast64_t seed = 42u); + /** + * Create a sampler that draws from a caller-supplied RNG (stateful). + * + * The RNG is non-owning and must outlive this Sampler. + */ + explicit Sampler(const noiseModel::Diagonal::shared_ptr& model, + std::mt19937_64& rng); + /** * Create a sampler for a distribution specified by a vector of sigmas - * directly + * directly. * - * NOTE: do not use zero as a seed, it will break the generator + * This constructor is convenient for deterministic, throw-away sampling. + * If you need stateful sampling across calls or across multiple Sampler + * instances, prefer the RNG-based constructor and manage the RNG yourself. + * + * NOTE: do not use zero as a seed, it will break the generator. */ explicit Sampler(const Vector& sigmas, uint_fast64_t seed = 42u); + /** + * Create a sampler for sigmas that draws from a caller-supplied RNG + * (stateful). + * + * The RNG is non-owning and must outlive this Sampler. + */ + explicit Sampler(const Vector& sigmas, std::mt19937_64& rng); + /// @} /// @name access functions /// @{ @@ -76,12 +104,25 @@ class GTSAM_EXPORT Sampler { /// sample from distribution Vector sample() const; + /** + * Perturb a value by sampling in its tangent space and applying `retract`. + * + * The supplied noise model must match the dimensionality expected by `T`. + */ + template + T perturb(const T& value) const { + return traits::Retract(value, sample()); + } + /// sample with given random number generator static Vector sampleDiagonal(const Vector& sigmas, std::mt19937_64* rng); /// @} protected: - /** given sigmas for a diagonal model, returns a sample */ + /** + * Given sigmas for a diagonal model, returns a sample. + * Uses external RNG if available. + * */ Vector sampleDiagonal(const Vector& sigmas) const; }; diff --git a/gtsam/linear/SubgraphPreconditioner.cpp b/gtsam/linear/SubgraphPreconditioner.cpp index 53ea94d6eb..4fe4a79966 100644 --- a/gtsam/linear/SubgraphPreconditioner.cpp +++ b/gtsam/linear/SubgraphPreconditioner.cpp @@ -139,8 +139,9 @@ Errors SubgraphPreconditioner::operator*(const VectorValues &y) const { void SubgraphPreconditioner::multiplyInPlace(const VectorValues& y, Errors& e) const { Errors::iterator ei = e.begin(); - for(const auto& key_value: y) { - *ei = key_value.second; + // Fill the identity-part errors in key-sorted order, to match createErrors. + for (const auto& [key, value] : y.sorted()) { + *ei = value; ++ei; } @@ -155,8 +156,9 @@ VectorValues SubgraphPreconditioner::operator^(const Errors& e) const { Errors::const_iterator it = e.begin(); VectorValues y = zero(); - for(auto& key_value: y) { - key_value.second = *it; + // Map the identity-part errors back into y using key-sorted order. + for (const auto& [key, value] : y.sorted()) { + y.at(key) = *it; ++it; } transposeMultiplyAdd2(1.0, it, e.end(), y); @@ -169,9 +171,11 @@ void SubgraphPreconditioner::transposeMultiplyAdd (double alpha, const Errors& e, VectorValues& y) const { Errors::const_iterator it = e.begin(); - for(auto& key_value: y) { + // Add the identity-part contribution in key-sorted order so it + // matches the layout produced by createErrors(). + for (const auto& [key, value] : y.sorted()) { const Vector& ei = *it; - key_value.second += alpha * ei; + y.at(key) += alpha * ei; ++it; } transposeMultiplyAdd2(alpha, it, e.end(), y); diff --git a/gtsam/linear/VectorValues.cpp b/gtsam/linear/VectorValues.cpp index 8a5f575f05..3035cbb701 100644 --- a/gtsam/linear/VectorValues.cpp +++ b/gtsam/linear/VectorValues.cpp @@ -67,8 +67,8 @@ namespace gtsam { } /* ************************************************************************ */ - std::map VectorValues::sorted() const { - std::map ordered; + std::map VectorValues::sorted() const { + std::map ordered; for (const auto& kv : *this) ordered.emplace(kv); return ordered; } @@ -149,13 +149,8 @@ namespace gtsam { /* ************************************************************************ */ GTSAM_EXPORT std::ostream& operator<<(std::ostream& os, const VectorValues& v) { - // Change print depending on whether we are using TBB -#ifdef GTSAM_USE_TBB - for (const auto& [key, value] : v.sorted()) -#else - for (const auto& [key,value] : v) -#endif - { + // Always print in key-sorted order for deterministic output. + for (const auto& [key, value] : v.sorted()) { os << " " << StreamedKey(key) << ": " << value.transpose() << "\n"; } return os; @@ -171,13 +166,18 @@ namespace gtsam { /* ************************************************************************ */ bool VectorValues::equals(const VectorValues& x, double tol) const { - if(this->size() != x.size()) - return false; - auto this_it = this->begin(); - auto x_it = x.begin(); - for(; this_it != this->end(); ++this_it, ++x_it) { - if(this_it->first != x_it->first || - !equal_with_abs_tol(this_it->second, x_it->second, tol)) + if (this->size() != x.size()) return false; + + // Compare in key-sorted order so equality is independent of + // the underlying (possibly unordered) container iteration order. + const auto thisOrdered = this->sorted(); + const auto xOrdered = x.sorted(); + + auto it1 = thisOrdered.begin(); + auto it2 = xOrdered.begin(); + for (; it1 != thisOrdered.end(); ++it1, ++it2) { + if (it1->first != it2->first || + !equal_with_abs_tol(it1->second, it2->second, tol)) return false; } return true; @@ -193,12 +193,9 @@ namespace gtsam { // Copy vectors Vector result(totalDim); DenseIndex pos = 0; -#ifdef GTSAM_USE_TBB - // TBB uses un-ordered map, so inefficiently order them: + // Always order by key so the concatenated vector is deterministic + // even if the underlying container is unordered. for (const auto& [key, value] : sorted()) { -#else - for (const auto& [key, value] : *this) { -#endif result.segment(pos, value.size()) = value; pos += value.size(); } @@ -239,26 +236,40 @@ namespace gtsam { /* ************************************************************************ */ bool VectorValues::hasSameStructure(const VectorValues other) const { - // compare the "other" container with this one, using the structureCompareOp - // and then return true if all elements are compared as equal - return std::equal(this->begin(), this->end(), other.begin(), other.end(), - internal::structureCompareOp); + if (this->size() != other.size()) return false; + + // Compare in key-sorted order so structure comparison is + // independent of the underlying container iteration order. + const auto thisOrdered = this->sorted(); + const auto otherOrdered = other.sorted(); + + auto it1 = thisOrdered.begin(); + auto it2 = otherOrdered.begin(); + for (; it1 != thisOrdered.end(); ++it1, ++it2) { + if (!internal::structureCompareOp(*it1, *it2)) return false; + } + return true; } /* ************************************************************************ */ double VectorValues::dot(const VectorValues& v) const { - if(this->size() != v.size()) - throw std::invalid_argument("VectorValues::dot called with a VectorValues of different structure"); + if (this->size() != v.size()) + throw std::invalid_argument( + "VectorValues::dot called with a VectorValues of different " + "structure"); + double result = 0.0; - auto this_it = this->begin(); - auto v_it = v.begin(); - for(; this_it != this->end(); ++this_it, ++v_it) { - assert_throw(this_it->first == v_it->first, - std::invalid_argument("VectorValues::dot called with a VectorValues of different structure")); - assert_throw(this_it->second.size() == v_it->second.size(), - std::invalid_argument("VectorValues::dot called with a VectorValues of different structure")); - result += this_it->second.dot(v_it->second); + for (const auto& [key, value] : *this) { + const auto it = v.find(key); + assert_throw(it != v.end(), std::invalid_argument( + "VectorValues::dot called with a " + "VectorValues of different structure")); + assert_throw( + value.size() == it->second.size(), + std::invalid_argument("VectorValues::dot called with a VectorValues " + "of different structure")); + result += value.dot(it->second); } return result; } @@ -280,19 +291,27 @@ namespace gtsam { /* ************************************************************************ */ VectorValues VectorValues::operator+(const VectorValues& c) const { - if(this->size() != c.size()) - throw std::invalid_argument("VectorValues::operator+ called with different vector sizes"); - assert_throw(hasSameStructure(c), - std::invalid_argument("VectorValues::operator+ called with different vector sizes")); + if (this->size() != c.size()) + throw std::invalid_argument( + "VectorValues::operator+ called with different vector sizes"); VectorValues result; - // The result.end() hint here should result in constant-time inserts - for(const_iterator j1 = begin(), j2 = c.begin(); j1 != end(); ++j1, ++j2) + for (const auto& [key, value] : *this) { + const auto it = c.find(key); + assert_throw( + it != c.end(), + std::invalid_argument( + "VectorValues::operator+ called with different vector sizes")); + assert_throw( + value.size() == it->second.size(), + std::invalid_argument( + "VectorValues::operator+ called with different vector sizes")); #ifdef TBB_GREATER_EQUAL_2020 - result.values_.emplace(j1->first, j1->second + j2->second); + result.values_.emplace(key, value + it->second); #else - result.values_.insert({j1->first, j1->second + j2->second}); + result.values_.insert({key, value + it->second}); #endif + } return result; } @@ -306,16 +325,22 @@ namespace gtsam { /* ************************************************************************ */ VectorValues& VectorValues::operator+=(const VectorValues& c) { - if(this->size() != c.size()) - throw std::invalid_argument("VectorValues::operator+= called with different vector sizes"); - assert_throw(hasSameStructure(c), - std::invalid_argument("VectorValues::operator+= called with different vector sizes")); - - iterator j1 = begin(); - const_iterator j2 = c.begin(); - // The result.end() hint here should result in constant-time inserts - for(; j1 != end(); ++j1, ++j2) - j1->second += j2->second; + if (this->size() != c.size()) + throw std::invalid_argument( + "VectorValues::operator+= called with different vector sizes"); + + for (auto& [key, value] : *this) { + const auto it = c.find(key); + assert_throw( + it != c.end(), + std::invalid_argument( + "VectorValues::operator+= called with different vector sizes")); + assert_throw( + value.size() == it->second.size(), + std::invalid_argument( + "VectorValues::operator+= called with different vector sizes")); + value += it->second; + } return *this; } @@ -342,19 +367,27 @@ namespace gtsam { /* ************************************************************************ */ VectorValues VectorValues::operator-(const VectorValues& c) const { - if(this->size() != c.size()) - throw std::invalid_argument("VectorValues::operator- called with different vector sizes"); - assert_throw(hasSameStructure(c), - std::invalid_argument("VectorValues::operator- called with different vector sizes")); + if (this->size() != c.size()) + throw std::invalid_argument( + "VectorValues::operator- called with different vector sizes"); VectorValues result; - // The result.end() hint here should result in constant-time inserts - for(const_iterator j1 = begin(), j2 = c.begin(); j1 != end(); ++j1, ++j2) + for (const auto& [key, value] : *this) { + const auto it = c.find(key); + assert_throw( + it != c.end(), + std::invalid_argument( + "VectorValues::operator- called with different vector sizes")); + assert_throw( + value.size() == it->second.size(), + std::invalid_argument( + "VectorValues::operator- called with different vector sizes")); #ifdef TBB_GREATER_EQUAL_2020 - result.values_.emplace(j1->first, j1->second - j2->second); + result.values_.emplace(key, value - it->second); #else - result.values_.insert({j1->first, j1->second - j2->second}); + result.values_.insert({key, value - it->second}); #endif + } return result; } @@ -412,12 +445,7 @@ namespace gtsam { ss << " \n \n"; // Print out all rows. -#ifdef GTSAM_USE_TBB - // TBB uses un-ordered map, so inefficiently order them: for (const auto& kv : sorted()) { -#else - for (const auto& kv : *this) { -#endif ss << " "; ss << "" << keyFormatter(kv.first) << "" << kv.second.transpose() << ""; diff --git a/gtsam/linear/VectorValues.h b/gtsam/linear/VectorValues.h index c1f332380d..0e7d6599e4 100644 --- a/gtsam/linear/VectorValues.h +++ b/gtsam/linear/VectorValues.h @@ -76,9 +76,6 @@ namespace gtsam { typedef ConcurrentMap Values; ///< Collection of Vectors making up a VectorValues Values values_; ///< Vectors making up this VectorValues - /** Sort by key (primarily for use with TBB, which uses an unordered map)*/ - std::map sorted() const; - public: typedef Values::iterator iterator; ///< Iterator over vector values typedef Values::const_iterator const_iterator; ///< Const iterator over vector values @@ -283,6 +280,29 @@ namespace gtsam { /** Retrieve the entire solution as a single vector */ Vector vector() const; + /** Compute the total dimension of a subset of relevant keys. */ + template + DenseIndex totalDim(const CONTAINER& keys) const { + DenseIndex totalDim = 0; + for (Key key : keys) { + totalDim += static_cast(at(key).size()); + } + return totalDim; + } + + /** Fill a preallocated Eigen vector expression with a subset of relevant keys. */ + template + void fillVector(const CONTAINER& keys, + const Eigen::MatrixBase& result) const { + auto& writable = const_cast&>(result); + DenseIndex pos = 0; + for (Key key : keys) { + const Vector& v = at(key); + writable.segment(pos, v.size()) = v; + pos += v.size(); + } + } + /** Access a vector that is a subset of relevant keys. */ template Vector vector(const CONTAINER& keys) const { @@ -368,6 +388,9 @@ namespace gtsam { /** Element-wise scaling by a constant in-place. */ VectorValues& scaleInPlace(double alpha); + /** Sort by key (primarily for use with TBB, which uses an unordered map)*/ + std::map sorted() const; + /// @} /// @name Wrapper support diff --git a/gtsam/linear/linear.i b/gtsam/linear/linear.i index 7c5b721fb5..1b7ce58a98 100644 --- a/gtsam/linear/linear.i +++ b/gtsam/linear/linear.i @@ -176,6 +176,21 @@ virtual class GemanMcClure: gtsam::noiseModel::mEstimator::Base { double loss(double error) const; }; +virtual class TruncatedLeastSquares: gtsam::noiseModel::mEstimator::Base { + TruncatedLeastSquares(double c); + TruncatedLeastSquares(double c, gtsam::noiseModel::mEstimator::Base::ReweightScheme reweight); + static gtsam::noiseModel::mEstimator::TruncatedLeastSquares* Create(double c); + static gtsam::noiseModel::mEstimator::TruncatedLeastSquares* Create( + double c, gtsam::noiseModel::mEstimator::Base::ReweightScheme reweight); + + // enabling serialization functionality + void serializable() const; + + double weight(double error) const; + double loss(double error) const; +}; + + virtual class DCS: gtsam::noiseModel::mEstimator::Base { DCS(double c); DCS(double c, gtsam::noiseModel::mEstimator::Base::ReweightScheme reweight); diff --git a/gtsam/linear/tests/testGaussianFactorGraph.cpp b/gtsam/linear/tests/testGaussianFactorGraph.cpp index 03222bb3f4..da43d97944 100644 --- a/gtsam/linear/tests/testGaussianFactorGraph.cpp +++ b/gtsam/linear/tests/testGaussianFactorGraph.cpp @@ -21,9 +21,12 @@ #include #include #include +#include #include +#include #include #include +#include #include #include @@ -321,6 +324,28 @@ static GaussianFactorGraph createGaussianFactorGraphWithHessianFactor() { return gfg; } +/* ************************************************************************* */ +TEST(GaussianFactorGraph, deltaError) { + GaussianFactorGraph gfg = createGaussianFactorGraphWithHessianFactor(); + + VectorValues values{{0, Vector2(0.1, -0.2)}, + {1, Vector2(1.0, 0.5)}, + {2, Vector2(-0.3, 0.8)}}; + VectorValues zero = VectorValues::Zero(values); + + double expectedOld = gfg.error(zero); + double expectedNew = gfg.error(values); + double expectedDelta = expectedOld - expectedNew; + + double oldValue = 0.0; + double newValue = 0.0; + double delta = gfg.deltaError(values, &oldValue, &newValue); + + DOUBLES_EQUAL(expectedOld, oldValue, 1e-10); + DOUBLES_EQUAL(expectedNew, newValue, 1e-10); + DOUBLES_EQUAL(expectedDelta, delta, 1e-10); +} + /* ************************************************************************* */ TEST(GaussianFactorGraph, multiplyHessianAdd2) { GaussianFactorGraph gfg = createGaussianFactorGraphWithHessianFactor(); @@ -435,6 +460,20 @@ TEST(GaussianFactorGraph, DenseSolve) { EXPECT(assert_equal(expected, actual)); } +/* ************************************************************************* */ +TEST(GaussianFactorGraph, optimizeWithIndexedJunctionTree) { + GaussianFactorGraph fg = createSimpleGaussianFactorGraph(); + Ordering ordering{0, 1, 2}; // x2=0, l1=1, x1=2 + + IndexedJunctionTree indexedJunctionTree = fg.buildIndexedJunctionTree(ordering); + + VectorValues expected = fg.optimize(ordering, EliminateQR); + VectorValues actual = + fg.eliminateMultifrontal(indexedJunctionTree, EliminateQR)->optimize(); + + EXPECT(assert_equal(expected, actual, 1e-9)); +} + /* ************************************************************************* */ TEST(GaussianFactorGraph, ProbPrime) { GaussianFactorGraph gfg; diff --git a/gtsam/linear/tests/testHessianFactor.cpp b/gtsam/linear/tests/testHessianFactor.cpp index 90c443faed..23c58b4689 100644 --- a/gtsam/linear/tests/testHessianFactor.cpp +++ b/gtsam/linear/tests/testHessianFactor.cpp @@ -108,11 +108,36 @@ TEST(HessianFactor, Constructor1) // error 0.5*(f - 2*x'*g + x'*G*x) double expected = 80.375; double actual = factor.error(dx); - double expected_manual = 0.5 * (f - 2.0 * dx[0].dot(g) + dx[0].transpose() * G.selfadjointView() * dx[0]); + const double xGx = dx[0].dot(G * dx[0]); + double expected_manual = 0.5 * (f - 2.0 * dx[0].dot(g) + xGx); EXPECT_DOUBLES_EQUAL(expected, expected_manual, 1e-10); EXPECT_DOUBLES_EQUAL(expected, actual, 1e-10); } +/* ************************************************************************* */ +TEST(HessianFactor, deltaError) +{ + Matrix G = (Matrix(2,2) << 3.0, 5.0, 5.0, 6.0).finished(); + Vector g = Vector2(-8.0, -9.0); + double f = 10.0; + HessianFactor factor(0, G, g, f); + + VectorValues values{{0, Vector2(1.5, 2.5)}}; + VectorValues zero = VectorValues::Zero(values); + + double expectedOld = factor.error(zero); + double expectedNew = factor.error(values); + double expectedDelta = expectedOld - expectedNew; + + double oldValue = 0.0; + double newValue = 0.0; + double delta = factor.deltaError(values, &oldValue, &newValue); + + DOUBLES_EQUAL(expectedOld, oldValue, 1e-10); + DOUBLES_EQUAL(expectedNew, newValue, 1e-10); + DOUBLES_EQUAL(expectedDelta, delta, 1e-10); +} + /* ************************************************************************* */ TEST(HessianFactor, Constructor1b) { @@ -565,6 +590,73 @@ TEST(HessianFactor, Solve) EXPECT(assert_equal(expected, factor.solve())); } + +/* ************************************************************************* */ +TEST(HessianFactor, updateHessianWithColumnRangeOnlyUpdatesSpecifiedBlocks) { + // Create a simple 2x2 HessianFactor on keys 0 and 1 + Matrix G00 = (Matrix(2, 2) << 1, 2, 2, 3).finished(); + Matrix G01 = (Matrix(2, 2) << 4, 5, 6, 7).finished(); + Matrix G11 = (Matrix(2, 2) << 8, 9, 9, 10).finished(); + Vector g0 = Vector2(1, 2); + Vector g1 = Vector2(3, 4); + double f = 5.0; + + HessianFactor factor(0, 1, G00, G01, g0, G11, g1, f); + + // Destination matrix: 3 blocks (key 0: size 2, key 1: size 2, RHS: size 1) + KeyVector infoKeys{0, 1}; + Dims dims{2, 2, 1}; + + // Initialize to zero + SymmetricBlockMatrix info(dims); + info.setZero(); + + // Update only block column 0 (first variable) + factor.updateHessian(infoKeys, &info, 0, 1); + + // Block 0 (diagonal for key 0) should be updated (non-zero) + Matrix block0 = info.diagonalBlock(0); + EXPECT(assert_equal(G00, block0, 0)); + + // Block 1 (diagonal for key 1) should still be zero + Matrix block1 = info.diagonalBlock(1); + Matrix expected_zero_2x2 = Matrix::Zero(2, 2); + EXPECT(assert_equal(expected_zero_2x2, block1, 0)); + + // Block 2 (RHS) should still be zero + Matrix block2 = info.diagonalBlock(2); + Matrix expected_zero_1x1 = Matrix::Zero(1, 1); + EXPECT(assert_equal(expected_zero_1x1, block2, 0)); + + // Off-diagonal block (0,1) should still be zero + // Note: aboveDiagonalBlock gets the upper triangular part + Matrix block01 = info.aboveDiagonalBlock(0, 1); + EXPECT(assert_equal(expected_zero_2x2, block01, 0)); + + // Now update block column 1 + factor.updateHessian(infoKeys, &info, 1, 2); + + // Block 1 should now be updated + EXPECT(assert_equal(G11, info.diagonalBlock(1), 0)); + + // Off-diagonal block (0,1) should now be updated + EXPECT(assert_equal(G01, info.aboveDiagonalBlock(0, 1), 0)); + + // Block 2 (RHS) should still be zero (not updated yet) + EXPECT(assert_equal(expected_zero_1x1, info.diagonalBlock(2), 0)); + + // Finally update the RHS column + factor.updateHessian(infoKeys, &info, 2, 3); + + // Now verify the full matrix matches what we'd get from a full update + SymmetricBlockMatrix infoFull(dims); + infoFull.setZero(); + factor.updateHessian(infoKeys, &infoFull); + + EXPECT(assert_equal(Matrix(infoFull.selfadjointView()), + Matrix(info.selfadjointView()), 0)); +} + /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr);} /* ************************************************************************* */ diff --git a/gtsam/linear/tests/testJacobianFactor.cpp b/gtsam/linear/tests/testJacobianFactor.cpp index 234466620b..2090b050f2 100644 --- a/gtsam/linear/tests/testJacobianFactor.cpp +++ b/gtsam/linear/tests/testJacobianFactor.cpp @@ -24,6 +24,7 @@ #include #include #include +#include using namespace std; using namespace gtsam; @@ -232,6 +233,110 @@ TEST( JacobianFactor, construct_from_graph) EXPECT(assert_equal(expected, actual)); } +/* ************************************************************************* */ +TEST(JacobianFactor, construct_from_graph_no_model) +{ + const Key keyX = 1, keyY = 2; + Matrix A11 = I_2x2; + Matrix A22 = 2 * I_2x2; + Vector2 b1(1.0, 2.0); + Vector2 b2(3.0, 4.0); + + auto factor1 = std::make_shared(keyX, A11, b1); + auto factor2 = std::make_shared(keyY, A22, b2); + + GaussianFactorGraph factors{factor1, factor2}; + Ordering ordering{keyX, keyY}; + + Matrix A1(4, 2); + A1.setZero(); + A1.block(0, 0, 2, 2) = A11; + Matrix A2(4, 2); + A2.setZero(); + A2.block(2, 0, 2, 2) = A22; + Vector b(4); + b << b1, b2; + + JacobianFactor expected(keyX, A1, keyY, A2, b); + JacobianFactor actual(factors, ordering); + + EXPECT(assert_equal(expected, actual)); + EXPECT(!actual.get_model()); +} + +/* ************************************************************************* */ +TEST(JacobianFactor, construct_from_graph_mixed_models) +{ + const Key keyX = 1, keyY = 2; + Matrix A11 = I_2x2; + Matrix A22 = 2 * I_2x2; + Vector2 b1(1.0, 2.0); + Vector2 b2(3.0, 4.0); + Vector2 sigmas1(0.2, 0.3); + + auto factor1 = std::make_shared( + keyX, A11, b1, noiseModel::Diagonal::Sigmas(sigmas1)); + auto factor2 = std::make_shared(keyY, A22, b2); + + GaussianFactorGraph factors{factor1, factor2}; + Ordering ordering{keyX, keyY}; + + Matrix A1(4, 2); + A1.setZero(); + A1.block(0, 0, 2, 2) = A11; + Matrix A2(4, 2); + A2.setZero(); + A2.block(2, 0, 2, 2) = A22; + Vector b(4); + b << b1, b2; + Vector sigmas(4); + sigmas << sigmas1, Vector2(1.0, 1.0); + + JacobianFactor expected(keyX, A1, keyY, A2, b, + noiseModel::Diagonal::Sigmas(sigmas)); + JacobianFactor actual(factors, ordering); + + EXPECT(assert_equal(expected, actual)); +} + +/* ************************************************************************* */ +TEST(JacobianFactor, construct_from_graph_constrained) +{ + const Key keyX = 1, keyY = 2; + Matrix A11 = I_2x2; + Matrix A22 = 2 * I_2x2; + Vector2 b1(1.0, 2.0); + Vector2 b2(3.0, 4.0); + Vector2 sigmas1(0.0, 1.0); + Vector2 sigmas2(2.0, 3.0); + + auto factor1 = std::make_shared( + keyX, A11, b1, noiseModel::Constrained::MixedSigmas(sigmas1)); + auto factor2 = std::make_shared( + keyY, A22, b2, noiseModel::Diagonal::Sigmas(sigmas2)); + + GaussianFactorGraph factors{factor1, factor2}; + Ordering ordering{keyX, keyY}; + + Matrix A1(4, 2); + A1.setZero(); + A1.block(0, 0, 2, 2) = A11; + Matrix A2(4, 2); + A2.setZero(); + A2.block(2, 0, 2, 2) = A22; + Vector b(4); + b << b1, b2; + Vector sigmas(4); + sigmas << sigmas1, sigmas2; + + JacobianFactor expected(keyX, A1, keyY, A2, b, + noiseModel::Constrained::MixedSigmas(sigmas)); + JacobianFactor actual(factors, ordering); + + EXPECT(actual.isConstrained()); + EXPECT(assert_equal(expected, actual)); +} + /* ************************************************************************* */ TEST(JacobianFactor, error) { @@ -255,6 +360,30 @@ TEST(JacobianFactor, error) DOUBLES_EQUAL(expected_error, actual_error, 1e-10); } +/* ************************************************************************* */ +TEST(JacobianFactor, deltaError) +{ + JacobianFactor factor(simple::terms, simple::b, simple::noise); + + VectorValues values; + values.insert(5, Vector::Constant(3, 1.0)); + values.insert(10, Vector::Constant(3, 0.5)); + values.insert(15, Vector::Constant(3, 1.0/3.0)); + + VectorValues zero = VectorValues::Zero(values); + double expectedOld = factor.error(zero); + double expectedNew = factor.error(values); + double expectedDelta = expectedOld - expectedNew; + + double oldValue = 0.0; + double newValue = 0.0; + double delta = factor.deltaError(values, &oldValue, &newValue); + + DOUBLES_EQUAL(expectedOld, oldValue, 1e-10); + DOUBLES_EQUAL(expectedNew, newValue, 1e-10); + DOUBLES_EQUAL(expectedDelta, delta, 1e-10); +} + /* ************************************************************************* */ TEST(JacobianFactor, matrices_NULL) { @@ -665,6 +794,76 @@ TEST(JacobianFactor, OverdeterminedEliminate) { EXPECT(actual.second->empty()); } +/* ************************************************************************* */ +TEST(JacobianFactor, updateHessianWithColumnRangeOnlyUpdatesSpecifiedBlocks) { + const double tol = 0; + + // Create a simple 2x2 JacobianFactor on keys 0 and 1 + // A0 is 2x2 matrix for key 0, A1 is 2x2 matrix for key 1, b is 2x1 vector + Matrix A0 = (Matrix(2, 2) << 1, 2, 3, 4).finished(); + Matrix A1 = (Matrix(2, 2) << 5, 6, 7, 8).finished(); + Vector b = Vector2(1, 2); + + JacobianFactor factor(0, A0, 1, A1, b); + + // Destination matrix: 3 blocks (key 0: size 2, key 1: size 2, RHS: size 1) + KeyVector infoKeys{0, 1}; + Dims dims{2, 2, 1}; + + // Initialize to zero + SymmetricBlockMatrix info(dims); + info.setZero(); + + // Update only block column 0 (first variable) + factor.updateHessian(infoKeys, &info, 0, 1); + + // Block 0 (diagonal for key 0) should be updated (non-zero) + // The diagonal block should be A0'*A0 + Matrix expected_G00 = A0.transpose() * A0; + Matrix block0 = info.diagonalBlock(0); + EXPECT(assert_equal(expected_G00, block0, tol)); + + // Block 1 (diagonal for key 1) should still be zero + Matrix block1 = info.diagonalBlock(1); + Matrix expected_zero_2x2 = Matrix::Zero(2, 2); + EXPECT(assert_equal(expected_zero_2x2, block1, tol)); + + // Block 2 (RHS) should still be zero + Matrix block2 = info.diagonalBlock(2); + Matrix expected_zero_1x1 = Matrix::Zero(1, 1); + EXPECT(assert_equal(expected_zero_1x1, block2, tol)); + + // Off-diagonal block (0,1) should still be zero + // Note: aboveDiagonalBlock gets the upper triangular part + Matrix block01 = info.aboveDiagonalBlock(0, 1); + EXPECT(assert_equal(expected_zero_2x2, block01, tol)); + + // Now update block column 1 + factor.updateHessian(infoKeys, &info, 1, 2); + + // Block 1 should now be updated (A1'*A1) + Matrix expected_G11 = A1.transpose() * A1; + EXPECT(assert_equal(expected_G11, info.diagonalBlock(1), tol)); + + // Off-diagonal block (0,1) should now be updated (A0'*A1) + Matrix expected_G01 = A0.transpose() * A1; + EXPECT(assert_equal(expected_G01, info.aboveDiagonalBlock(0, 1), tol)); + + // Block 2 (RHS) should still be zero (not updated yet) + EXPECT(assert_equal(expected_zero_1x1, info.diagonalBlock(2), tol)); + + // Finally update the RHS column + factor.updateHessian(infoKeys, &info, 2, 3); + + // Now verify the full matrix matches what we'd get from a full update + SymmetricBlockMatrix infoFull(dims); + infoFull.setZero(); + factor.updateHessian(infoKeys, &infoFull); + + EXPECT(assert_equal(Matrix(infoFull.selfadjointView()), + Matrix(info.selfadjointView()), tol)); +} + /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr);} /* ************************************************************************* */ diff --git a/gtsam/linear/tests/testMultifrontalSolver.cpp b/gtsam/linear/tests/testMultifrontalSolver.cpp index afe5d8e7a8..98684c2236 100644 --- a/gtsam/linear/tests/testMultifrontalSolver.cpp +++ b/gtsam/linear/tests/testMultifrontalSolver.cpp @@ -47,12 +47,20 @@ const GaussianFactorGraph chain = { std::make_shared(x4, I_1x1, I_1x1, chainNoise4)}; const Ordering chainOrdering{x2, x1, x3, x4}; +MultifrontalSolver::Parameters noMergeParams() { + MultifrontalSolver::Parameters params; + params.mergeDimCap = 0; + params.leafMergeDimCap = 0; + return params; +} + } // namespace /* ************************************************************************* */ -// Build the solver and validate initial structure and load. +// Build the solver and validate initial structure and explicit load. TEST(MultifrontalSolver, Constructor) { - MultifrontalSolver solver(chain, chainOrdering); + MultifrontalSolver solver(chain, chainOrdering, noMergeParams()); + solver.load(chain); // Verify roots EXPECT(solver.roots().size() == 1); @@ -64,7 +72,7 @@ TEST(MultifrontalSolver, Constructor) { auto childClique = root->children[0]; // Verify matrices in leaf (childClique) - EXPECT_LONGS_EQUAL(4, childClique->sbm().nBlocks()); + EXPECT_LONGS_EQUAL(4, childClique->info().nBlocks()); EXPECT_LONGS_EQUAL(2, childClique->Ab().rows()); EXPECT_LONGS_EQUAL(4, childClique->Ab().nBlocks()); @@ -78,10 +86,37 @@ TEST(MultifrontalSolver, Constructor) { EXPECT(assert_equal((Matrix(2, 1) << 2., 1.).finished(), Ab)); } +/* ************************************************************************* */ +// Build the solver from precomputed data and validate structure and load. +TEST(MultifrontalSolver, ConstructorPrecomputed) { + auto data = MultifrontalSolver::Precompute(chain, chainOrdering); + MultifrontalSolver solver(std::move(data), chainOrdering, noMergeParams()); + solver.load(chain); + + // Verify roots + EXPECT(solver.roots().size() == 1); + auto root = solver.roots()[0]; + EXPECT(root != nullptr); + + // Root should have 1 child {x2, x1} + EXPECT_LONGS_EQUAL(1, root->children.size()); + auto childClique = root->children[0]; + + // Verify matrices in leaf (childClique) + CHECK(childClique->useQR() == false); + EXPECT_LONGS_EQUAL(4, childClique->info().nBlocks()); + EXPECT_LONGS_EQUAL(2, childClique->Ab().rows()); + EXPECT_LONGS_EQUAL(4, childClique->Ab().nBlocks()); + + // Verify load for childClique + Matrix A0 = childClique->Ab()(0); + EXPECT(assert_equal((Matrix(2, 1) << 2., 1.).finished(), A0)); +} + /* ************************************************************************* */ // Reload numerical values and ensure Ab updates match whitening. TEST(MultifrontalSolver, Load) { - MultifrontalSolver solver(chain, chainOrdering); + MultifrontalSolver solver(chain, chainOrdering, noMergeParams()); // Create a new graph with doubled values GaussianFactorGraph chain2; @@ -109,7 +144,8 @@ TEST(MultifrontalSolver, Load) { /* ************************************************************************* */ // Compare solver output against multifrontal elimination baseline. TEST(MultifrontalSolver, Eliminate) { - MultifrontalSolver solver(chain, chainOrdering); + MultifrontalSolver solver(chain, chainOrdering, noMergeParams()); + solver.load(chain); solver.eliminateInPlace(); // Solve @@ -122,10 +158,127 @@ TEST(MultifrontalSolver, Eliminate) { EXPECT(assert_equal(expected, actual, 1e-9)); } +/* ************************************************************************* */ +// deltaError from the solver matches GaussianFactorGraph for the +// solver-produced (optimal) delta. +TEST(MultifrontalSolver, DeltaErrorMatchesGraph) { + MultifrontalSolver solver(chain, chainOrdering, noMergeParams()); + solver.eliminateInPlace(chain); + + const VectorValues& delta = solver.updateSolution(); + + double oldFast = 0.0; + double newFast = 0.0; + double deltaFast = solver.deltaError(&oldFast, &newFast); + + double oldRef = 0.0; + double newRef = 0.0; + double deltaRef = chain.deltaError(delta, &oldRef, &newRef); + + DOUBLES_EQUAL(oldRef, oldFast, 1e-9); + DOUBLES_EQUAL(newRef, newFast, 1e-9); + DOUBLES_EQUAL(deltaRef, deltaFast, 1e-9); +} + +/* ************************************************************************* */ +// deltaError from the solver matches GaussianFactorGraph on an +// overdetermined system with nonzero residual at the solution. +TEST(MultifrontalSolver, DeltaErrorMatchesGraphInconsistent) { + const SharedDiagonal noise = noiseModel::Isotropic::Sigma(1, 1.0); + GaussianFactorGraph graph; + graph.emplace_shared(x1, I_1x1, + (Vector(1) << 1.0).finished(), noise); + graph.emplace_shared(x1, I_1x1, + (Vector(1) << -2.0).finished(), noise); + const Ordering ordering{x1}; + MultifrontalSolver solver(graph, ordering, noMergeParams()); + solver.eliminateInPlace(graph); + + const VectorValues& delta = solver.updateSolution(); + + double oldFast = 0.0; + double newFast = 0.0; + double deltaFast = solver.deltaError(&oldFast, &newFast); + + double oldRef = 0.0; + double newRef = 0.0; + double deltaRef = graph.deltaError(delta, &oldRef, &newRef); + + DOUBLES_EQUAL(oldRef, oldFast, 1e-9); + DOUBLES_EQUAL(newRef, newFast, 1e-9); + DOUBLES_EQUAL(deltaRef, deltaFast, 1e-9); +} + +/* ************************************************************************* */ +// Load + eliminate in one traversal matches standard elimination. +TEST(MultifrontalSolver, EliminateWithLoad) { + MultifrontalSolver solver(chain, chainOrdering, noMergeParams()); + solver.eliminateInPlace(chain); + + const VectorValues& actual = solver.updateSolution(); + + GaussianBayesTree expectedBT = *chain.eliminateMultifrontal(chainOrdering); + VectorValues expected = expectedBT.optimize(); + + EXPECT(assert_equal(expected, actual, 1e-9)); +} + +/* ************************************************************************* */ +// deltaError match when QR is forced, exercising the QR leaf RSd_ path. +TEST(MultifrontalSolver, DeltaErrorMatchesGraphQR) { + auto qrParams = noMergeParams(); + qrParams.qrMode = MultifrontalParameters::QRMode::Force; + MultifrontalSolver solver(chain, chainOrdering, qrParams); + solver.eliminateInPlace(chain); + + const VectorValues& delta = solver.updateSolution(); + + double oldFast = 0.0; + double newFast = 0.0; + double deltaFast = solver.deltaError(&oldFast, &newFast); + + double oldRef = 0.0; + double newRef = 0.0; + double deltaRef = chain.deltaError(delta, &oldRef, &newRef); + + DOUBLES_EQUAL(oldRef, oldFast, 1e-9); + DOUBLES_EQUAL(newRef, newFast, 1e-9); + DOUBLES_EQUAL(deltaRef, deltaFast, 1e-9); +} + +/* ************************************************************************* */ +// Forcing QR enables QR on all leaves and matches legacy QR elimination. +TEST(MultifrontalSolver, ForceQRMatchesDenseQR) { + auto qrParams = noMergeParams(); + qrParams.qrMode = MultifrontalParameters::QRMode::Force; + MultifrontalSolver solverQR(chain, chainOrdering, qrParams); + solverQR.eliminateInPlace(chain); + + size_t leafCount = 0; + size_t qrLeafCount = 0; + solverQR.runTopDown([&](MultifrontalClique& node) { + if (node.children.empty()) { + ++leafCount; + if (node.useQR()) { + ++qrLeafCount; + } + } + }); + CHECK(leafCount > 0); + CHECK(leafCount == qrLeafCount); + + const VectorValues& actual = solverQR.updateSolution(); + + VectorValues expected = chain.optimize(chainOrdering, EliminateQR); + + EXPECT(assert_equal(expected, actual, 1e-9)); +} + /* ************************************************************************* */ // Compare marginals from in-place Bayes tree against standard elimination. TEST(MultifrontalSolver, ComputeBayesTreeMarginals) { - MultifrontalSolver solver(chain, chainOrdering); + MultifrontalSolver solver(chain, chainOrdering, noMergeParams()); + solver.load(chain); solver.eliminateInPlace(); GaussianBayesTree actualBT = solver.computeBayesTree(); @@ -160,7 +313,8 @@ TEST(MultifrontalSolver, ComputeBayesTreeMarginalsConstrainedChain) { constrainedChain.emplace_shared( x2, I_1x1, (Vector(1) << 0.0).finished(), hardConstraint); - MultifrontalSolver solver(constrainedChain, chainOrdering); + MultifrontalSolver solver(constrainedChain, chainOrdering, noMergeParams()); + solver.load(constrainedChain); solver.eliminateInPlace(); GaussianBayesTree actualBT = solver.computeBayesTree(); @@ -188,7 +342,8 @@ TEST(MultifrontalSolver, ConstrainedNoiseFeasible) { x1, I_1x1, (Vector(1) << 100.0).finished(), softNoise); const Ordering ordering{x1}; - MultifrontalSolver solver(graph, ordering); + MultifrontalSolver solver(graph, ordering, noMergeParams()); + solver.load(graph); solver.eliminateInPlace(); const VectorValues& actual = solver.updateSolution(); @@ -209,7 +364,8 @@ TEST(MultifrontalSolver, ConstrainedNoiseUnsupported) { const Ordering ordering{x1}; CHECK_EXCEPTION( - { MultifrontalSolver solver(graph, ordering); }, std::runtime_error); + { MultifrontalSolver solver(graph, ordering, noMergeParams()); }, + std::runtime_error); } /* ************************************************************************* */ @@ -224,7 +380,8 @@ TEST(MultifrontalSolver, ConstrainedNoiseUnaryFeasible) { softNoise); const Ordering ordering{x1}; - MultifrontalSolver solver(graph, ordering); + MultifrontalSolver solver(graph, ordering, noMergeParams()); + solver.load(graph); solver.eliminateInPlace(); const VectorValues& actual = solver.updateSolution(); @@ -241,7 +398,8 @@ TEST(MultifrontalSolver, ConstrainedNoiseMixedKeysUnsupported) { const Ordering ordering{x1, x2}; CHECK_EXCEPTION( - { MultifrontalSolver solver(graph, ordering); }, std::runtime_error); + { MultifrontalSolver solver(graph, ordering, noMergeParams()); }, + std::runtime_error); } /* ************************************************************************* */ @@ -260,7 +418,8 @@ TEST(MultifrontalSolver, WeightedScalarMeasurements) { noiseModel::Isotropic::Sigma(1, sigma2)); const Ordering ordering{x1}; - MultifrontalSolver solver(graph, ordering); + MultifrontalSolver solver(graph, ordering, noMergeParams()); + solver.load(graph); solver.eliminateInPlace(); const VectorValues& actual = solver.updateSolution(); @@ -268,27 +427,28 @@ TEST(MultifrontalSolver, WeightedScalarMeasurements) { } /* ************************************************************************* */ -// Hessian factors contribute directly to the augmented normal equations. +// Hessian factors are rejected by the multifrontal solver. TEST(MultifrontalSolver, HessianFactors) { GaussianFactorGraph graph; graph.emplace_shared(x1, (Matrix(1, 1) << 4.0).finished(), (Vector(1) << 8.0).finished(), 0.0); const Ordering ordering{x1}; - MultifrontalSolver solver(graph, ordering); - solver.eliminateInPlace(); - const VectorValues& actual = solver.updateSolution(); - - EXPECT_DOUBLES_EQUAL(2.0, actual.at(x1)(0), 1e-9); + CHECK_EXCEPTION( + { MultifrontalSolver solver(graph, ordering, noMergeParams()); }, + std::runtime_error); } /* ************************************************************************* */ // Merge threshold changes the clique count. TEST(MultifrontalSolver, MergeDimCap) { - MultifrontalSolver solverNoMerge(chain, chainOrdering, 0); + MultifrontalSolver::Parameters noMerge = noMergeParams(); + MultifrontalSolver solverNoMerge(chain, chainOrdering, noMerge); EXPECT_LONGS_EQUAL(2, solverNoMerge.cliqueCount()); - MultifrontalSolver solverMerge(chain, chainOrdering, 1000); + MultifrontalSolver::Parameters merge = noMergeParams(); + merge.mergeDimCap = 1000; + MultifrontalSolver solverMerge(chain, chainOrdering, merge); EXPECT_LONGS_EQUAL(1, solverMerge.cliqueCount()); } @@ -303,13 +463,14 @@ TEST(MultifrontalSolver, BalancedSmoother) { // Create the Bayes tree ordering const Ordering ordering{X(1), X(3), X(5), X(7), X(2), X(6), X(4)}; - MultifrontalSolver solver(smoother, ordering); + MultifrontalSolver solver(smoother, ordering, noMergeParams()); + solver.load(smoother); // Verify roots EXPECT(solver.roots().size() == 1); auto root = solver.roots()[0]; - EXPECT_LONGS_EQUAL(root->Ab().nBlocks(), root->sbm().nBlocks()); + EXPECT_LONGS_EQUAL(root->Ab().nBlocks(), root->info().nBlocks()); // Check a leaf clique block structure. MultifrontalSolver::CliquePtr leaf = nullptr; @@ -318,7 +479,7 @@ TEST(MultifrontalSolver, BalancedSmoother) { [&](MultifrontalSolver::CliquePtr c) { if (!c) return; if (c->children.empty()) { - const size_t blocks = c->sbm().nBlocks(); + const size_t blocks = c->info().nBlocks(); if (blocks < minBlocks) { minBlocks = blocks; leaf = c; @@ -332,6 +493,7 @@ TEST(MultifrontalSolver, BalancedSmoother) { EXPECT_LONGS_EQUAL(3, minBlocks); // Eliminate and solve + solver.load(smoother); solver.eliminateInPlace(); const VectorValues& actual = solver.updateSolution(); diff --git a/gtsam/linear/tests/testNoiseModel.cpp b/gtsam/linear/tests/testNoiseModel.cpp index fa93e78045..f31f6ec323 100644 --- a/gtsam/linear/tests/testNoiseModel.cpp +++ b/gtsam/linear/tests/testNoiseModel.cpp @@ -19,7 +19,9 @@ #include +#include #include +#include #include @@ -106,6 +108,37 @@ TEST(NoiseModel, Unit) EXPECT(assert_equal(v,u->whiten(v))); } +/* ************************************************************************* */ +TEST(NoiseModel, UnitCreateMeasured) +{ + Matrix22 fixed = Matrix22::Identity(); + auto fixedModel = Unit::Create(fixed); + EXPECT_LONGS_EQUAL(4, fixedModel->dim()); + EXPECT(fixedModel == Unit::Create(fixed)); + + Matrix dynamic(2, 3); + dynamic.setZero(); + EXPECT_LONGS_EQUAL(6, Unit::Create(dynamic)->dim()); + + EXPECT_LONGS_EQUAL(2, Unit::Create(Point2(1.0, 2.0))->dim()); + EXPECT_LONGS_EQUAL(1, Unit::Create(1.0)->dim()); +} + +/* ************************************************************************* */ +TEST(NoiseModel, MatchesDimension) +{ + Matrix22 fixed = Matrix22::Identity(); + EXPECT(matchesDimension(*Unit::Create(4), fixed)); + EXPECT(!matchesDimension(*Unit::Create(3), fixed)); + + Matrix dynamic(2, 3); + dynamic.setZero(); + EXPECT(matchesDimension(*Unit::Create(6), dynamic)); + + EXPECT(matchesDimension(*Unit::Create(2), Point2(1.0, 2.0))); + EXPECT(matchesDimension(*Unit::Create(1), 1.0)); +} + /* ************************************************************************* */ TEST(NoiseModel, equals) { @@ -477,6 +510,94 @@ TEST(NoiseModel, WhitenInPlace) EXPECT(assert_equal(expected, A)); } +/* ************************************************************************* */ +TEST(NoiseModel, InPlaceVectorOperations) +{ + SharedGaussian gaussian = Gaussian::SqrtInformation(R, false); + Vector v = Vector3(5.0, 10.0, 15.0); + Vector expected = gaussian->unwhiten(v); + Vector actual = v; + gaussian->unwhitenInPlace(actual); + EXPECT(assert_equal(expected, actual)); + + SharedDiagonal diagonal = Diagonal::Sigmas(kSigmas, false); + v = Vector3(10.0, 20.0, 30.0); + expected = diagonal->whiten(v); + actual = v; + diagonal->whitenInPlace(actual); + EXPECT(assert_equal(expected, actual)); + + v = Vector3(1.0, 2.0, 3.0); + expected = diagonal->unwhiten(v); + actual = v; + diagonal->unwhitenInPlace(actual); + EXPECT(assert_equal(expected, actual)); + + SharedIsotropic isotropic = Isotropic::Sigma(3, kSigma, false); + v = Vector3(1.0, 2.0, 3.0); + expected = isotropic->unwhiten(v); + actual = v; + isotropic->unwhitenInPlace(actual); + EXPECT(assert_equal(expected, actual)); + + SharedConstrained constrained = + Constrained::MixedSigmas(Vector3(kSigma, 0.0, kSigma)); + v = Vector3(2.0, 3.0, 4.0); + expected = constrained->whiten(v); + actual = v; + constrained->whitenInPlace(actual); + EXPECT(assert_equal(expected, actual)); + EXPECT_DOUBLES_EQUAL(v(1), actual(1), 1e-12); + + SharedNoiseModel robust = Robust::Create(mEstimator::Huber::Create(1.345), + diagonal); + v = Vector3(1.0, 2.0, 3.0); + expected = robust->whiten(v); + actual = v; + robust->whitenInPlace(actual); + EXPECT(assert_equal(expected, actual)); +} + +/* ************************************************************************* */ +TEST(NoiseModel, InPlaceVectorBlockOperations) +{ + SharedGaussian gaussian = Gaussian::SqrtInformation(R, false); + SharedDiagonal diagonal = Diagonal::Sigmas(kSigmas, false); + SharedIsotropic isotropic = Isotropic::Sigma(3, kSigma, false); + SharedConstrained constrained = + Constrained::MixedSigmas(Vector3(kSigma, 0.0, kSigma)); + + Vector v = Vector::LinSpaced(5, 1.0, 5.0); + Eigen::Block block(v, 1, 0, 3, 1); + Vector expected = diagonal->whiten(Vector(block)); + diagonal->whitenInPlace(block); + EXPECT(assert_equal(expected, Vector(block))); + + v = Vector::LinSpaced(5, 1.0, 5.0); + Eigen::Block block_unwhiten(v, 1, 0, 3, 1); + expected = diagonal->unwhiten(Vector(block_unwhiten)); + diagonal->unwhitenInPlace(block_unwhiten); + EXPECT(assert_equal(expected, Vector(block_unwhiten))); + + v = Vector::LinSpaced(5, 1.0, 5.0); + Eigen::Block block_constrained(v, 1, 0, 3, 1); + expected = constrained->whiten(Vector(block_constrained)); + constrained->whitenInPlace(block_constrained); + EXPECT(assert_equal(expected, Vector(block_constrained))); + + v = Vector::LinSpaced(5, 1.0, 5.0); + Eigen::Block block_iso(v, 1, 0, 3, 1); + expected = isotropic->unwhiten(Vector(block_iso)); + isotropic->unwhitenInPlace(block_iso); + EXPECT(assert_equal(expected, Vector(block_iso))); + + v = Vector::LinSpaced(5, 1.0, 5.0); + Eigen::Block block_gauss(v, 1, 0, 3, 1); + expected = gaussian->unwhiten(Vector(block_gauss)); + gaussian->unwhitenInPlace(block_gauss); + EXPECT(assert_equal(expected, Vector(block_gauss))); +} + /* ************************************************************************* */ /* @@ -566,6 +687,21 @@ TEST(NoiseModel, robustFunctionGemanMcClure) DOUBLES_EQUAL(0.2500, gmc->loss(error4), 1e-8); } +TEST(NoiseModel, robustFunctionTLS) +{ + const double k = 4.0, error1 = 0.5, error2 = 10.0, error3 = -10.0, error4 = -0.5; + const mEstimator::TruncatedLeastSquares::shared_ptr tls = mEstimator::TruncatedLeastSquares::Create(k); + DOUBLES_EQUAL(1.0, tls->weight(error1), 1e-8); + DOUBLES_EQUAL(0.0, tls->weight(error2), 1e-8); + DOUBLES_EQUAL(0.0, tls->weight(error3), 1e-8); + DOUBLES_EQUAL(1.0, tls->weight(error4), 1e-8); + + DOUBLES_EQUAL(0.1250, tls->loss(error1), 1e-8); + DOUBLES_EQUAL(8.0, tls->loss(error2), 1e-8); + DOUBLES_EQUAL(8.0, tls->loss(error3), 1e-8); + DOUBLES_EQUAL(0.1250, tls->loss(error4), 1e-8); +} + TEST(NoiseModel, robustFunctionWelsch) { const double k = 5.0, error1 = 1.0, error2 = 10.0, error3 = -10.0, error4 = -1.0; @@ -695,6 +831,30 @@ TEST(NoiseModel, robustNoiseGemanMcClure) DOUBLES_EQUAL(sqrt_weight_error2*a11, A(1,1), 1e-8); } +TEST(NoiseModel, robustNoiseTLS) +{ + const double k = 1.0, error1 = 1.0, error2 = 100.0; + const double a00 = 1.0, a01 = 10.0, a10 = 100.0, a11 = 1000.0; + Matrix A = (Matrix(2, 2) << a00, a01, a10, a11).finished(); + Vector b = Vector2(error1, error2); + const Robust::shared_ptr robust = Robust::Create( + mEstimator::TruncatedLeastSquares::Create(k, mEstimator::TruncatedLeastSquares::Scalar), + Unit::Create(2)); + + robust->WhitenSystem(A, b); + + const double sqrt_weight_error1 = 1.0; + const double sqrt_weight_error2 = 0.0; + + DOUBLES_EQUAL(sqrt_weight_error1*error1, b(0), 1e-8); + DOUBLES_EQUAL(sqrt_weight_error2*error2, b(1), 1e-8); + + DOUBLES_EQUAL(sqrt_weight_error1*a00, A(0,0), 1e-8); + DOUBLES_EQUAL(sqrt_weight_error1*a01, A(0,1), 1e-8); + DOUBLES_EQUAL(sqrt_weight_error2*a10, A(1,0), 1e-8); + DOUBLES_EQUAL(sqrt_weight_error2*a11, A(1,1), 1e-8); +} + TEST(NoiseModel, robustNoiseDCS) { const double k = 1.0, error1 = 1.0, error2 = 100.0; diff --git a/gtsam/linear/tests/testSampler.cpp b/gtsam/linear/tests/testSampler.cpp index 5831d90486..86e9d27bb2 100644 --- a/gtsam/linear/tests/testSampler.cpp +++ b/gtsam/linear/tests/testSampler.cpp @@ -17,7 +17,6 @@ */ #include - #include using namespace gtsam; @@ -38,6 +37,18 @@ TEST(testSampler, basic) { Vector actual1 = sampler1.sample(); EXPECT_DOUBLES_EQUAL(0.0, actual1(2), tol); EXPECT(assert_equal(sampler2.sample(), sampler3.sample(), tol)); + + // RNG-based constructor should be stateful and match the same sequence as a + // seeded sampler. + std::mt19937_64 rng(1); + Sampler sampler_rng(model, rng); + Sampler sampler_seed(model, 1); + Vector s1 = sampler_rng.sample(); + Vector s1_ref = sampler_seed.sample(); + EXPECT(assert_equal(s1, s1_ref, tol)); + Vector s2 = sampler_rng.sample(); + Vector s2_ref = sampler_seed.sample(); + EXPECT(assert_equal(s2, s2_ref, tol)); } /* ************************************************************************* */ diff --git a/gtsam/navigation/EquivariantFilter.h b/gtsam/navigation/EquivariantFilter.h index 501ac9f2d3..187f0d3cb1 100644 --- a/gtsam/navigation/EquivariantFilter.h +++ b/gtsam/navigation/EquivariantFilter.h @@ -93,7 +93,7 @@ class EquivariantFilter : public ManifoldEKF { using Base::state; /// errorCovariance that returns P_, on the equivariant filter error - Matrix errorCovariance() const { return this->P_; } + const typename Base::Covariance& errorCovariance() const { return this->P_; } /// Covariance in the tangent space at the current state. CovarianceM covariance() const { diff --git a/gtsam/navigation/ManifoldEKF.h b/gtsam/navigation/ManifoldEKF.h index 18c8d158f5..b809622b94 100644 --- a/gtsam/navigation/ManifoldEKF.h +++ b/gtsam/navigation/ManifoldEKF.h @@ -135,7 +135,8 @@ class ManifoldEKF { return P_ * H.transpose() * S.inverse(); } - /// Joseph-form covariance update using a precomputed gain. + /// Joseph-form covariance update in the current tangent space using a + /// precomputed gain. template void JosephUpdate(const GainMatrix& K, const HMatrix& H, const RMatrix& R) { Jacobian I_KH = I_ - K * H; @@ -151,6 +152,8 @@ class ManifoldEKF { * @param H Jacobian of the measurement function h. * @param z Observed measurement. * @param R Measurement noise covariance. + * @param performReset If true (default), performs a reset (transport) after + * update; otherwise, just retracts the state. */ template void update( @@ -158,7 +161,8 @@ class ManifoldEKF { const Eigen::Matrix::dimension, Dim>& H, const Measurement& z, const Eigen::Matrix::dimension, - traits::dimension>& R) { + traits::dimension>& R, + bool performReset = true) { static constexpr int MeasDim = traits::dimension; // Innovation: y = h(x_pred) - z. In tangent space: local(z, h(x_pred)) @@ -174,11 +178,14 @@ class ManifoldEKF { const TangentVector delta_xi = -K * innovation; // delta_xi is Dim x 1 (or n_ x 1 if dynamic) - // Update state using retract: X_new = retract(X_old, delta_xi) - X_ = traits::Retract(X_, delta_xi); - - // Update covariance using Joseph form + // --- Update covariance in the tangent space at the current state this->JosephUpdate(K, H, R); + + // Update state using retract/ transport or just retract + if (performReset) + reset(delta_xi); + else + X_ = traits::Retract(X_, delta_xi); } /** @@ -190,11 +197,13 @@ class ManifoldEKF { * @param h Measurement model function. * @param z Observed measurement. * @param R Measurement noise covariance. + * @param performReset If true (default), transport covariance after retract. */ template void update(MeasurementFunction&& h, const Measurement& z, const Eigen::Matrix::dimension, - traits::dimension>& R) { + traits::dimension>& R, + bool performReset = true) { static_assert(IsManifold::value, "Template parameter Measurement must be a GTSAM Manifold."); @@ -203,17 +212,45 @@ class ManifoldEKF { Measurement prediction = h(X_, H); // Call the other update function - update(prediction, H, z, R); + update(prediction, H, z, R, performReset); } - /// Convenience bridge for wrappers: vector measurement update calling - /// update. This overload exists to avoid templates in wrappers. It - /// validates sizes and forwards to the templated update with Measurement = - /// gtsam::Vector (dynamic size). + /** + * Convenience bridge for wrappers: vector measurement update calling + * update. This overload exists to avoid templates in wrappers. It + * validates sizes and forwards to the templated update with Measurement = + * gtsam::Vector (dynamic size). + * @param prediction Predicted measurement vector. + * @param H Measurement Jacobian matrix. + * @param z Observed measurement vector. + * @param R Measurement noise covariance matrix. + * @param performReset If true (default), transport covariance after retract. + */ void updateWithVector(const gtsam::Vector& prediction, const Matrix& H, - const gtsam::Vector& z, const Matrix& R) { + const gtsam::Vector& z, const Matrix& R, + bool performReset = true) { validateInputs(prediction, H, z, R); - update(prediction, H, z, R); + update(prediction, H, z, R, performReset); + } + + /** + * Reset step: retract the state by a tangent perturbation and, if available, + * transport the covariance from the old tangent space to the new tangent + * space. + * + * If the retract supports a Jacobian argument, we compute B and update + * P <- B P B^T. Otherwise, we leave the covariance unchanged. + */ + void reset(const TangentVector& eta) { + if constexpr (HasRetractJacobian::value) { + Jacobian B; + if constexpr (Dim == Eigen::Dynamic) B.resize(n_, n_); + X_ = traits::Retract(X_, eta, &B); + P_ = B * P_ * B.transpose(); + } else { + X_ = traits::Retract(X_, eta); + // Covariance unchanged when Jacobian is not available. + } } protected: @@ -243,6 +280,17 @@ class ManifoldEKF { Covariance P_; ///< Covariance (Eigen::Matrix). Jacobian I_; ///< Identity matrix sized to the state dimension. int n_; ///< Runtime tangent space dimension of M. + + private: + // Detection helper: check if traits::Retract(x, v, Jacobian*) is valid. + template + struct HasRetractJacobian : std::false_type {}; + template + struct HasRetractJacobian< + T, std::void_t::Retract( + std::declval(), + std::declval::TangentVector&>(), + (Jacobian*)nullptr))>> : std::true_type {}; }; } // namespace gtsam diff --git a/gtsam/navigation/NavState.cpp b/gtsam/navigation/NavState.cpp index 8e10797ec3..a93bfead45 100644 --- a/gtsam/navigation/NavState.cpp +++ b/gtsam/navigation/NavState.cpp @@ -46,29 +46,23 @@ NavState NavState::FromPoseVelocity(const Pose3& pose, const Vector3& vel, //------------------------------------------------------------------------------ const Rot3& NavState::attitude(OptionalJacobian<3, 9> H) const { - if (H) - *H << I_3x3, Z_3x3, Z_3x3; - return R_; + return Base::rotation(H); } //------------------------------------------------------------------------------ -const Point3& NavState::position(OptionalJacobian<3, 9> H) const { - if (H) - *H << Z_3x3, R(), Z_3x3; - return t_; +Point3 NavState::position(OptionalJacobian<3, 9> H) const { + return Base::x(0, H); } //------------------------------------------------------------------------------ -const Vector3& NavState::velocity(OptionalJacobian<3, 9> H) const { - if (H) - *H << Z_3x3, Z_3x3, R(); - return v_; +Vector3 NavState::velocity(OptionalJacobian<3, 9> H) const { + return Base::x(1, H); } //------------------------------------------------------------------------------ Vector3 NavState::bodyVelocity(OptionalJacobian<3, 9> H) const { const Rot3& nRb = R_; - const Vector3& n_v = v_; + const Vector3 n_v = t_.col(1); Matrix3 D_bv_nRb; Vector3 b_v = nRb.unrotate(n_v, H ? &D_bv_nRb : 0); if (H) @@ -77,32 +71,36 @@ Vector3 NavState::bodyVelocity(OptionalJacobian<3, 9> H) const { } //------------------------------------------------------------------------------ -Matrix5 NavState::matrix() const { - Matrix3 R = this->R(); - - Matrix5 T = Matrix5::Identity(); - T.block<3, 3>(0, 0) = R; - T.block<3, 1>(0, 3) = t_; - T.block<3, 1>(0, 4) = v_; - return T; +double NavState::range(const Point3& point, OptionalJacobian<1, 9> Hself, + OptionalJacobian<1, 3> Hpoint) const { + const Vector3 delta = point - t_.col(0); + const double r = delta.norm(); + if (!Hself && !Hpoint) return r; + + const Vector3 u = delta / r; // unit vector from position to point + const Matrix13 D_r_point = u.transpose(); + + if (Hpoint) *Hpoint = D_r_point; + if (Hself) { + Hself->setZero(); + // position() = t + R * dP, so d(range)/d(dP) = d(range)/dt * dt/d(dP) + Hself->block<1, 3>(0, 3) = -D_r_point * R_.matrix(); + } + return r; } //------------------------------------------------------------------------------ -NavState::Vector25 NavState::vec(OptionalJacobian<25, 9> H) const { - const Matrix5 T = this->matrix(); - if (H) { - H->setZero(); - auto R = T.block<3, 3>(0, 0); - H->block<3, 1>(0, 1) = -R.col(2); - H->block<3, 1>(0, 2) = R.col(1); - H->block<3, 1>(5, 0) = R.col(2); - H->block<3, 1>(5, 2) = -R.col(0); - H->block<3, 1>(10, 0) = -R.col(1); - H->block<3, 1>(10, 1) = R.col(0); - H->block<3, 3>(15, 3) = R; - H->block<3, 3>(20, 6) = R; +Unit3 NavState::bearing(const Point3& point, OptionalJacobian<2, 9> Hself, + OptionalJacobian<2, 3> Hpoint) const { + Matrix26 Hpose; + OptionalJacobian<2, 6> HposeOptional(Hself ? &Hpose : nullptr); + const Unit3 b = pose().bearing(point, HposeOptional, Hpoint); + + if (Hself) { + Hself->setZero(); + Hself->block<2, 6>(0, 0) = Hpose; } - return Eigen::Map(T.data()); + return b; } //------------------------------------------------------------------------------ @@ -120,218 +118,16 @@ void NavState::print(const std::string& s) const { //------------------------------------------------------------------------------ bool NavState::equals(const NavState& other, double tol) const { - return R_.equals(other.R_, tol) && traits::Equals(t_, other.t_, tol) - && equal_with_abs_tol(v_, other.v_, tol); -} - -//------------------------------------------------------------------------------ -NavState NavState::inverse() const { - Rot3 Rt = R_.inverse(); - return NavState(Rt, Rt * (-t_), Rt * -(v_)); -} - -//------------------------------------------------------------------------------ -// See [this document](doc/Jacobians.md) for details. -NavState NavState::Expmap(const Vector9& xi, OptionalJacobian<9, 9> Hxi) { - // Get angular velocity w and components rho (for t) and nu (for v) from xi - Vector3 w = xi.head<3>(), rho = xi.segment<3>(3), nu = xi.tail<3>(); - - // Instantiate functor for Dexp-related operations: - const so3::DexpFunctor local(w); - - // Compute rotation using Expmap -#ifdef GTSAM_USE_QUATERNIONS - const Rot3 R = traits::Expmap(w); -#else - const Rot3 R(local.expmap()); -#endif - - // Compute translation and velocity. See Pose3::Expmap - Matrix3 H_t_w, H_v_w; - const Vector3 t = local.Jacobian().applyLeft(rho, Hxi ? &H_t_w : nullptr); - const Vector3 v = local.Jacobian().applyLeft(nu, Hxi ? &H_v_w : nullptr); - - if (Hxi) { - const Matrix3 Jr = local.Jacobian().right(); - // We are creating a NavState, so we still need to chain H_t_w and H_v_w - // with R^T, the Jacobian of Navstate::Create with respect to both t and v. - const Matrix3 Rt = R.transpose(); - *Hxi << Jr, Z_3x3, Z_3x3, // Jr here *is* the Jacobian of expmap - Rt * H_t_w, Jr, Z_3x3, // - Rt * H_v_w, Z_3x3, Jr; - // In the last two rows, Jr = R^T * Jl, see Barfoot eq. (8.83). - // Jl is the left Jacobian of SO(3) at w. - } - - return NavState(R, t, v); -} - -//------------------------------------------------------------------------------ -Vector9 NavState::Logmap(const NavState& state, OptionalJacobian<9, 9> Hstate) { - if (Hstate) *Hstate = LogmapDerivative(state); - - const Vector3 phi = Rot3::Logmap(state.rotation()); - const Vector3& p = state.position(); - const Vector3& v = state.velocity(); - const double t = phi.norm(); - if (t < 1e-8) { - Vector9 log; - log << phi, p, v; - return log; - - } else { - const Matrix3 W = skewSymmetric(phi / t); - - const double Tan = tan(0.5 * t); - const Vector3 Wp = W * p; - const Vector3 Wv = W * v; - const Vector3 rho = p - (0.5 * t) * Wp + (1 - t / (2. * Tan)) * (W * Wp); - const Vector3 nu = v - (0.5 * t) * Wv + (1 - t / (2. * Tan)) * (W * Wv); - Vector9 log; - // Order is ω, p, v - log << phi, rho, nu; - return log; - } -} - -//------------------------------------------------------------------------------ -Matrix9 NavState::AdjointMap() const { - const Matrix3 R = R_.matrix(); - Matrix3 A = skewSymmetric(t_) * R; - Matrix3 B = skewSymmetric(v_) * R; - // Eqn 2 in Barrau20icra - Matrix9 adj; - adj << R, Z_3x3, Z_3x3, A, R, Z_3x3, B, Z_3x3, R; - return adj; -} - -//------------------------------------------------------------------------------ -Vector9 NavState::Adjoint(const Vector9& xi_b, OptionalJacobian<9, 9> H_state, - OptionalJacobian<9, 9> H_xib) const { - const Matrix9 Ad = AdjointMap(); - - // Jacobians - if (H_state) *H_state = -Ad * adjointMap(xi_b); - if (H_xib) *H_xib = Ad; - - return Ad * xi_b; -} - -//------------------------------------------------------------------------------ -Matrix9 NavState::adjointMap(const Vector9& xi) { - Matrix3 w_hat = skewSymmetric(xi(0), xi(1), xi(2)); - Matrix3 v_hat = skewSymmetric(xi(3), xi(4), xi(5)); - Matrix3 a_hat = skewSymmetric(xi(6), xi(7), xi(8)); - Matrix9 adj; - adj << w_hat, Z_3x3, Z_3x3, v_hat, w_hat, Z_3x3, a_hat, Z_3x3, w_hat; - return adj; -} - -//------------------------------------------------------------------------------ -Vector9 NavState::adjoint(const Vector9& xi, const Vector9& y, - OptionalJacobian<9, 9> Hxi, - OptionalJacobian<9, 9> H_y) { - if (Hxi) { - Hxi->setZero(); - for (int i = 0; i < 9; ++i) { - Vector9 dxi; - dxi.setZero(); - dxi(i) = 1.0; - Matrix9 Gi = adjointMap(dxi); - Hxi->col(i) = Gi * y; - } - } - - const Matrix9& ad_xi = adjointMap(xi); - if (H_y) *H_y = ad_xi; - - return ad_xi * y; -} - -//------------------------------------------------------------------------------ -Matrix9 NavState::ExpmapDerivative(const Vector9& xi) { - Matrix9 J; - Expmap(xi, J); - return J; -} - -//------------------------------------------------------------------------------ -Matrix9 NavState::LogmapDerivative(const Vector9& xi) { - const Vector3 w = xi.head<3>(); - Vector3 rho = xi.segment<3>(3); - Vector3 nu = xi.tail<3>(); - - // Instantiate functor for Dexp-related operations: - const so3::DexpFunctor local(w); - - // Call Jacobian().applyLeft to get its Jacobians - Matrix3 H_t_w, H_v_w; - local.Jacobian().applyLeft(rho, H_t_w); - local.Jacobian().applyLeft(nu, H_v_w); - - // Multiply with R^T to account for NavState::Create Jacobian. - const Matrix3 Rt = local.expmap().transpose(); - const Matrix3 Qt = Rt * H_t_w; - const Matrix3 Qv = Rt * H_v_w; - - // Now compute the blocks of the LogmapDerivative Jacobian - const Matrix3 Jw = Rot3::LogmapDerivative(w); - const Matrix3 Qt2 = -Jw * Qt * Jw; - const Matrix3 Qv2 = -Jw * Qv * Jw; - - Matrix9 J; - J << Jw, Z_3x3, Z_3x3, - Qt2, Jw, Z_3x3, - Qv2, Z_3x3, Jw; - return J; -} - -//------------------------------------------------------------------------------ -Matrix9 NavState::LogmapDerivative(const NavState& state) { - const Vector9 xi = Logmap(state); - return LogmapDerivative(xi); -} - -//------------------------------------------------------------------------------ -Matrix5 NavState::Hat(const Vector9& xi) { - Matrix5 X; - const double wx = xi(0), wy = xi(1), wz = xi(2); - const double px = xi(3), py = xi(4), pz = xi(5); - const double vx = xi(6), vy = xi(7), vz = xi(8); - X << 0., -wz, wy, px, vx, - wz, 0., -wx, py, vy, - -wy, wx, 0., pz, vz, - 0., 0., 0., 0., 0., - 0., 0., 0., 0., 0.; - return X; -} - -//------------------------------------------------------------------------------ -Vector9 NavState::Vee(const Matrix5& Xi) { - Vector9 xi; - xi << Xi(2, 1), Xi(0, 2), Xi(1, 0), - Xi(0, 3), Xi(1, 3), Xi(2, 3), - Xi(0, 4), Xi(1, 4), Xi(2, 4); - return xi; -} - -//------------------------------------------------------------------------------ -NavState NavState::ChartAtOrigin::Retract(const Vector9& xi, - ChartJacobian Hxi) { - return Expmap(xi, Hxi); -} - -//------------------------------------------------------------------------------ -Vector9 NavState::ChartAtOrigin::Local(const NavState& state, - ChartJacobian Hstate) { - return Logmap(state, Hstate); + return Base::equals(other, tol); } //------------------------------------------------------------------------------ NavState NavState::retract(const Vector9& xi, // OptionalJacobian<9, 9> H1, OptionalJacobian<9, 9> H2) const { + // NOTE: This is an intentional custom chart for NavState manifold updates. + // It differs from the default LieGroup chart based on full Expmap/Logmap. Rot3 nRb = R_; - Point3 n_t = t_, n_v = v_; + Point3 n_t = t_.col(0), n_v = t_.col(1); Matrix3 D_bRc_xi, D_R_nRb, D_t_nRb, D_v_nRb; const Rot3 bRc = Rot3::Expmap(dR(xi), H2 ? &D_bRc_xi : 0); const Rot3 nRc = nRb.compose(bRc, H1 ? &D_R_nRb : 0); @@ -357,10 +153,11 @@ NavState NavState::retract(const Vector9& xi, // //------------------------------------------------------------------------------ Vector9 NavState::localCoordinates(const NavState& g, // OptionalJacobian<9, 9> H1, OptionalJacobian<9, 9> H2) const { + // Inverse of the custom component-wise chart used in retract(). Matrix3 D_dR_R, D_dt_R, D_dv_R; const Rot3 dR = R_.between(g.R_, H1 ? &D_dR_R : 0); - const Point3 dP = R_.unrotate(g.t_ - t_, H1 ? &D_dt_R : 0); - const Vector dV = R_.unrotate(g.v_ - v_, H1 ? &D_dv_R : 0); + const Point3 dP = R_.unrotate(g.t_.col(0) - t_.col(0), H1 ? &D_dt_R : 0); + const Vector dV = R_.unrotate(g.t_.col(1) - t_.col(1), H1 ? &D_dv_R : 0); Vector9 xi; Matrix3 D_xi_R; @@ -446,7 +243,7 @@ NavState NavState::update(const Vector3& b_acceleration, const Vector3& b_omega, Vector9 NavState::coriolis(double dt, const Vector3& omega, bool secondOrder, OptionalJacobian<9, 9> H) const { Rot3 nRb = R_; - Point3 n_t = t_, n_v = v_; + Point3 n_t = t_.col(0), n_v = t_.col(1); const double dt2 = dt * dt; const Vector3 omega_cross_vel = omega.cross(n_v); @@ -498,7 +295,7 @@ Vector9 NavState::correctPIM(const Vector9& pim, double dt, bool use2ndOrderCoriolis, OptionalJacobian<9, 9> H1, OptionalJacobian<9, 9> H2) const { const Rot3& nRb = R_; - const Velocity3& n_v = v_; // derivative is Ri ! + const Velocity3 n_v = t_.col(1); // derivative is Ri ! const double dt22 = 0.5 * dt * dt; Vector9 xi; diff --git a/gtsam/navigation/NavState.h b/gtsam/navigation/NavState.h index ebbbcf0d0b..03f0eee3a1 100644 --- a/gtsam/navigation/NavState.h +++ b/gtsam/navigation/NavState.h @@ -18,10 +18,16 @@ #pragma once +#include +#include #include #include #include +#if GTSAM_ENABLE_BOOST_SERIALIZATION +#include +#endif + namespace gtsam { /// Velocity is currently typedef'd to Vector3 @@ -35,46 +41,37 @@ using Velocity3 = Vector3; * NOTE: While Barrau20icra follow a R,v,t order, * we use a R,t,v order to maintain backwards compatibility. */ -class GTSAM_EXPORT NavState : public MatrixLieGroup { - private: - - // TODO(frank): - // - should we rename t_ to p_? if not, we should rename dP do dT - Rot3 R_; ///< Rotation nRb, rotates points/velocities in body to points/velocities in nav - Point3 t_; ///< position n_t, in nav frame - Velocity3 v_; ///< velocity n_v in nav frame - +class GTSAM_EXPORT NavState : public ExtendedPose3<2, NavState> { public: + using Base = ExtendedPose3<2, NavState>; using LieAlgebra = Matrix5; using Vector25 = Eigen::Matrix; + inline constexpr static auto dimension = 9; /// @name Constructors /// @{ /// Default constructor - NavState() : - t_(0, 0, 0), v_(Vector3::Zero()) { - } + NavState() : Base() {} + + NavState(const Base& other) : Base(other) {} /// Construct from attitude, position, velocity - NavState(const Rot3& R, const Point3& t, const Velocity3& v) : - R_(R), t_(t), v_(v) { - } + NavState(const Rot3& R, const Point3& t, const Velocity3& v) + : Base(R, (Eigen::Matrix() << t.x(), v.x(), t.y(), v.y(), + t.z(), v.z()) + .finished()) {} /// Construct from pose and velocity - NavState(const Pose3& pose, const Velocity3& v) : - R_(pose.rotation()), t_(pose.translation()), v_(v) { - } + NavState(const Pose3& pose, const Velocity3& v) + : NavState(pose.rotation(), pose.translation(), v) {} /// Construct from SO(3) and R^6 - NavState(const Matrix3& R, const Vector6& tv) : - R_(R), t_(tv.head<3>()), v_(tv.tail<3>()) { - } + NavState(const Matrix3& R, const Vector6& tv) + : NavState(Rot3(R), tv.head<3>(), tv.tail<3>()) {} /// Construct from Matrix5 - NavState(const Matrix5& T) : - R_(T.block<3, 3>(0, 0)), t_(T.block<3, 1>(0, 3)), v_(T.block<3, 1>(0, 4)) { - } + NavState(const Matrix5& T) : Base(T) {} /// Named constructor with derivatives static NavState Create(const Rot3& R, const Point3& t, const Velocity3& v, @@ -92,13 +89,29 @@ class GTSAM_EXPORT NavState : public MatrixLieGroup { /// @{ const Rot3& attitude(OptionalJacobian<3, 9> H = {}) const; - const Point3& position(OptionalJacobian<3, 9> H = {}) const; - const Velocity3& velocity(OptionalJacobian<3, 9> H = {}) const; + Point3 position(OptionalJacobian<3, 9> H = {}) const; + Velocity3 velocity(OptionalJacobian<3, 9> H = {}) const; const Pose3 pose() const { return Pose3(attitude(), position()); } + /** + * Calculate range to a 3D landmark. + * @param point 3D location of landmark + * @return range (double) + */ + double range(const Point3& point, OptionalJacobian<1, 9> Hself = {}, + OptionalJacobian<1, 3> Hpoint = {}) const; + + /** + * Calculate bearing to a 3D landmark. + * @param point 3D location of landmark + * @return bearing (Unit3) + */ + Unit3 bearing(const Point3& point, OptionalJacobian<2, 9> Hself = {}, + OptionalJacobian<2, 3> Hpoint = {}) const; + /// @} /// @name Derived quantities /// @{ @@ -113,22 +126,15 @@ class GTSAM_EXPORT NavState : public MatrixLieGroup { } /// Return position as Vector3 Vector3 t() const { - return t_; + return t_.col(0); } - /// Return velocity as Vector3. Computation-free. - const Vector3& v() const { - return v_; + /// Return velocity as Vector3. + Vector3 v() const { + return velocity(); } // Return velocity in body frame Velocity3 bodyVelocity(OptionalJacobian<3, 9> H = {}) const; - /// Return matrix group representation, in MATLAB notation: - /// nTb = [nRb n_t n_v; 0_1x3 1 0; 0_1x3 0 1] - Matrix5 matrix() const; - - /// Vectorize 5x5 matrix into a 25-dim vector. - Vector25 vec(OptionalJacobian<25, 9> H = {}) const; - /// @} /// @name Testable /// @{ @@ -147,21 +153,6 @@ class GTSAM_EXPORT NavState : public MatrixLieGroup { /// @name Group /// @{ - /// identity for group operation - static NavState Identity() { - return NavState(); - } - - /// inverse transformation with derivatives - NavState inverse() const; - - using LieGroup::inverse; // version with derivative - - /// compose syntactic sugar - NavState operator*(const NavState& T) const { - return NavState(R_ * T.R_, t_ + R_ * T.t_, v_ + R_ * T.v_); - } - /// Syntactic sugar const Rot3& rotation() const { return attitude(); }; @@ -186,82 +177,29 @@ class GTSAM_EXPORT NavState : public MatrixLieGroup { return v.segment<3>(6); } - /// retract with optional derivatives + /** + * Manifold retract used by optimization. + * This intentionally uses a component-wise chart (R via Expmap, and p/v via + * world-frame rotation of the tangent increments), not the default LieGroup + * chart based on full Expmap/Logmap. + */ NavState retract(const Vector9& v, // OptionalJacobian<9, 9> H1 = {}, OptionalJacobian<9, 9> H2 = {}) const; - /// localCoordinates with optional derivatives + /** + * Inverse of the custom manifold chart used by retract. + * Kept consistent with retract for optimization; Lie expmap/logmap remain + * available separately for group operations. + */ Vector9 localCoordinates(const NavState& g, // OptionalJacobian<9, 9> H1 = {}, OptionalJacobian<9, 9> H2 = {}) const; /// @} - /// @name Lie Group + /// @name Lie Group (all Lie group operations are implemented in ExtendedPose3) /// @{ - /** - * Exponential map at identity - create a NavState from canonical coordinates - * \f$ [R_x,R_y,R_z,T_x,T_y,T_z,V_x,V_y,V_z] \f$ - */ - static NavState Expmap(const Vector9& xi, OptionalJacobian<9, 9> Hxi = {}); - - /** - * Log map at identity - return the canonical coordinates \f$ - * [R_x,R_y,R_z,T_x,T_y,T_z,V_x,V_y,V_z] \f$ of this NavState - */ - static Vector9 Logmap(const NavState& pose, OptionalJacobian<9, 9> Hpose = {}); - - /** - * Calculate Adjoint map, transforming a twist in this pose's (i.e, body) - * frame to the world spatial frame. - */ - Matrix9 AdjointMap() const; - - /** - * Apply this NavState's AdjointMap Ad_g to a twist \f$ \xi_b \f$, i.e. a - * body-fixed velocity, transforming it to the spatial frame - * \f$ \xi^s = g*\xi^b*g^{-1} = Ad_g * \xi^b \f$ - * Note that H_xib = AdjointMap() - */ - Vector9 Adjoint(const Vector9& xi_b, - OptionalJacobian<9, 9> H_this = {}, - OptionalJacobian<9, 9> H_xib = {}) const; - - /** - * Compute the [ad(w,v)] operator as defined in [Kobilarov09siggraph], pg 11 - * but for the NavState [ad(w,v)] = [w^, zero3; v^, w^] - */ - static Matrix9 adjointMap(const Vector9& xi); - - /** - * Action of the adjointMap on a Lie-algebra vector y, with optional derivatives - */ - static Vector9 adjoint(const Vector9& xi, const Vector9& y, - OptionalJacobian<9, 9> Hxi = {}, - OptionalJacobian<9, 9> H_y = {}); - - /// Derivative of Expmap - static Matrix9 ExpmapDerivative(const Vector9& xi); - - /// Derivative of Logmap - static Matrix9 LogmapDerivative(const Vector9& xi); - - /// Derivative of Logmap, NavState version - static Matrix9 LogmapDerivative(const NavState& xi); - - // Chart at origin, depends on compile-time flag GTSAM_POSE3_EXPMAP - struct GTSAM_EXPORT ChartAtOrigin { - static NavState Retract(const Vector9& xi, ChartJacobian Hxi = {}); - static Vector9 Local(const NavState& state, ChartJacobian Hstate = {}); - }; - - /// Hat maps from tangent vector to Lie algebra - static Matrix5 Hat(const Vector9& xi); - - /// Vee maps from Lie algebra to tangent vector - static Vector9 Vee(const Matrix5& X); - /// @} /// @name Dynamics /// @{ @@ -311,9 +249,7 @@ class GTSAM_EXPORT NavState : public MatrixLieGroup { friend class boost::serialization::access; template void serialize(ARCHIVE & ar, const unsigned int /*version*/) { - ar & BOOST_SERIALIZATION_NVP(R_); - ar & BOOST_SERIALIZATION_NVP(t_); - ar & BOOST_SERIALIZATION_NVP(v_); + ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); } #endif /// @} @@ -326,4 +262,11 @@ struct traits : public internal::MatrixLieGroup {}; template <> struct traits : public internal::MatrixLieGroup {}; +// bearing and range traits, used in RangeFactor and BearingFactor +template <> +struct Bearing : HasBearing {}; + +template <> +struct Range : HasRange {}; + } // namespace gtsam diff --git a/gtsam/navigation/PseudorangeFactor.cpp b/gtsam/navigation/PseudorangeFactor.cpp new file mode 100644 index 0000000000..2ac06cec0c --- /dev/null +++ b/gtsam/navigation/PseudorangeFactor.cpp @@ -0,0 +1,137 @@ +/** + * @file PseudorangeFactor.cpp + * @author Sammy Guo + * @brief Implementation file for GNSS Pseudorange factor + * @date January 18, 2026 + **/ + +#include "PseudorangeFactor.h" + +namespace { + +/// Speed of light in a vacuum (m/s): +constexpr double CLIGHT = 299792458.0; + +} // namespace + +namespace gtsam { + +//*************************************************************************** +PseudorangeFactor::PseudorangeFactor(const Key receiverPositionKey, + const Key receiverClockBiasKey, + const double measuredPseudorange, + const Point3& satellitePosition, + const double satelliteClockBias, + const SharedNoiseModel& model) + : Base(model, receiverPositionKey, receiverClockBiasKey), + PseudorangeBase{measuredPseudorange, satellitePosition, + satelliteClockBias} {} + +//*************************************************************************** +void PseudorangeFactor::print(const std::string& s, + const KeyFormatter& keyFormatter) const { + Base::print(s, keyFormatter); + gtsam::print(pseudorange_, "pseudorange (m): "); + gtsam::print(Vector(satPos_), "sat position (ECEF meters): "); + gtsam::print(satClkBias_, "sat clock bias (s): "); +} + +//*************************************************************************** +bool PseudorangeFactor::equals(const NonlinearFactor& expected, + double tol) const { + const This* e = dynamic_cast(&expected); + return e != nullptr && Base::equals(*e, tol) && + traits::Equals(pseudorange_, e->pseudorange_, tol) && + traits::Equals(satPos_, e->satPos_, tol) && + traits::Equals(satClkBias_, e->satClkBias_, tol); +} + +//*************************************************************************** +Vector PseudorangeFactor::evaluateError( + const Point3& receiverPosition, const double& receiverClockBias, + OptionalMatrixType HreceiverPos, + OptionalMatrixType HreceiverClockBias) const { + // Apply pseudorange equation: rho = range + c*[dt_u - dt^s] + const Vector3 position_difference = receiverPosition - satPos_; + const double range = position_difference.norm(); + const double rho = range + CLIGHT * (receiverClockBias - satClkBias_); + const double error = rho - pseudorange_; + + // Compute associated derivatives: + if (HreceiverPos) { + if (range < std::numeric_limits::epsilon()) { + *HreceiverPos = Matrix13::Zero(); + } else { + *HreceiverPos = (position_difference / range).transpose(); + } + } + + if (HreceiverClockBias) { + *HreceiverClockBias = I_1x1 * CLIGHT; + } + + return Vector1(error); +} + +//*************************************************************************** +DifferentialPseudorangeFactor::DifferentialPseudorangeFactor( + const Key receiverPositionKey, const Key receiverClockBiasKey, + const Key differentialCorrectionKey, const double measuredPseudorange, + const Point3& satellitePosition, const double satelliteClockBias, + const SharedNoiseModel& model) + : Base(model, receiverPositionKey, receiverClockBiasKey, + differentialCorrectionKey), + PseudorangeBase{measuredPseudorange, satellitePosition, + satelliteClockBias} {} + +//*************************************************************************** +void DifferentialPseudorangeFactor::print( + const std::string& s, const KeyFormatter& keyFormatter) const { + Base::print(s, keyFormatter); + gtsam::print(pseudorange_, "pseudorange (m): "); + gtsam::print(Vector(satPos_), "sat position (ECEF meters): "); + gtsam::print(satClkBias_, "sat clock bias (s): "); +} + +//*************************************************************************** +bool DifferentialPseudorangeFactor::equals(const NonlinearFactor& expected, + double tol) const { + const This* e = dynamic_cast(&expected); + return e != nullptr && Base::equals(*e, tol) && + traits::Equals(pseudorange_, e->pseudorange_, tol) && + traits::Equals(satPos_, e->satPos_, tol) && + traits::Equals(satClkBias_, e->satClkBias_, tol); +} + +//*************************************************************************** +Vector DifferentialPseudorangeFactor::evaluateError( + const Point3& receiverPosition, const double& receiverClock_bias, + const double& differentialCorrection, OptionalMatrixType HreceiverPos, + OptionalMatrixType HreceiverClockBias, + OptionalMatrixType HdifferentialCorrection) const { + // Apply pseudorange equation: rho = range + c*[dt_u - dt^s] + const Vector3 position_difference = receiverPosition - satPos_; + const double range = position_difference.norm(); + const double rho = range + CLIGHT * (receiverClock_bias - satClkBias_); + const double error = rho - pseudorange_ - differentialCorrection; + + // Compute associated derivatives: + if (HreceiverPos) { + if (range < std::numeric_limits::epsilon()) { + *HreceiverPos = Matrix13::Zero(); + } else { + *HreceiverPos = (position_difference / range).transpose(); + } + } + + if (HreceiverClockBias) { + *HreceiverClockBias = I_1x1 * CLIGHT; + } + + if (HdifferentialCorrection) { + *HdifferentialCorrection = -I_1x1; + } + + return Vector1(error); +} +} // namespace gtsam diff --git a/gtsam/navigation/PseudorangeFactor.h b/gtsam/navigation/PseudorangeFactor.h new file mode 100644 index 0000000000..79fb7a4f53 --- /dev/null +++ b/gtsam/navigation/PseudorangeFactor.h @@ -0,0 +1,228 @@ +/** + * @file PseudorangeFactor.h + * @author Sammy Guo + * @brief Header file for GNSS Pseudorange factor + * @date January 18, 2026 + **/ +#pragma once + +#include +#include +#include + +#include + +namespace gtsam { + +/** + * Base class storing common members for GNSS-related pseudorange factors. + */ +struct PseudorangeBase { + double + pseudorange_; ///< Receiver-reported pseudorange measurement in meters. + Point3 satPos_; ///< Satellite position in WGS84 ECEF meters. + double satClkBias_; ///< Satellite clock bias in seconds. +}; + +/** + * Simplified GNSS pseudorange model for basic positioning problems. + * + * This factor implements a simplified version of equation 5.6 [1] + * \rho = r + c[\delta t_u - \delta t^s] + I_{\rho} + T_{\rho} + \epsilon_{\rho} + * where `\rho` is measured pseudorange (in meters) from the receiver, + * `r` true range (in meters) between receiver antenna and satellite, + * `c` is speed of light in a vacuum (m/s), + * `\delta t_u` is receiver clock bias (seconds), + * `\delta t_s` is satellite clock bias (seconds), + * and `I_{\rho}`, `T_{\rho}`, and `\epsilon_{\rho}` are ionospheric, + * tropospheric, and unmodeled errors respectively. + * + * Ionospheric and tropospheric terms are omitted in this simplified factor. + * Note that this factor is also designed for code-phase measurements. + * + * @ingroup navigation + * + * REFERENCES: + * [1] P. Misra et. al., "Global Positioning Systems: Signals, Measurements, and + * Performance", Second Edition, 2012. + */ +class GTSAM_EXPORT PseudorangeFactor : public NoiseModelFactorN, + private PseudorangeBase { + private: + typedef NoiseModelFactorN Base; + + public: + // Provide access to the Matrix& version of evaluateError: + using Base::evaluateError; + + /// shorthand for a smart pointer to a factor + typedef std::shared_ptr shared_ptr; + + /// Typedef to this class + typedef PseudorangeFactor This; + + /** default constructor - only use for serialization */ + PseudorangeFactor() = default; + + virtual ~PseudorangeFactor() = default; + + /** + * Construct a PseudorangeFactor that models the distance between a receiver + * and a satellite. + * + * @param receiverPositionKey Receiver gtsam::Point3 ECEF position node. + * @param receiverClockBiasKey Receiver clock bias node. + * @param measuredPseudorange Receiver-measured pseudorange in meters. + * @param satellitePosition Satellite ECEF position in meters. + * @param satelliteClockBias Satellite clock bias in seconds. + * @param model 1-D pseudorange noise model. + */ + PseudorangeFactor( + Key receiverPositionKey, Key receiverClockBiasKey, + double measuredPseudorange, const Point3& satellitePosition, + double satelliteClockBias = 0.0, + const SharedNoiseModel& model = noiseModel::Unit::Create(1)); + + /// @return a deep copy of this factor + gtsam::NonlinearFactor::shared_ptr clone() const override { + return std::static_pointer_cast( + gtsam::NonlinearFactor::shared_ptr(new This(*this))); + } + + /// print + void print(const std::string& s = "", const KeyFormatter& keyFormatter = + DefaultKeyFormatter) const override; + + /// equals + bool equals(const NonlinearFactor& expected, + double tol = 1e-9) const override; + + /// vector of errors + Vector evaluateError(const Point3& receiverPosition, + const double& receiverClockBias, + OptionalMatrixType HreceiverPos, + OptionalMatrixType HreceiverClockBias) const override; + + private: +#if GTSAM_ENABLE_BOOST_SERIALIZATION /// + /// Serialization function + friend class boost::serialization::access; + template + void serialize(ARCHIVE& ar, const unsigned int /*version*/) { + ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(PseudorangeFactor::Base); + ar& BOOST_SERIALIZATION_NVP(pseudorange_); + ar& BOOST_SERIALIZATION_NVP(satPos_); + ar& BOOST_SERIALIZATION_NVP(satClkBias_); + } +#endif +}; + +/// traits +template <> +struct traits : public Testable {}; + +/** + * Simple differentially-corrected pseudorange factor for precise positioning. + * + * This factor implements the model prescribed by chapter 5.8.2 from [1], + * where a reference GNSS receiver with known position provides differential + * pseudorange corrections for a "user" receiver to eliminate common-mode + * atmospheric errors. The idea being that spatially local receivers experience + * the same atmospheric errors since their signal paths pass through the same + * regions of Earth's atmosphere. Therefore, this factor accepts an additional + * "differential correction" variable from a reference receiver to cancel-out + * local-area biases from the user's pseudoranges. + * + * Note that this factor is designed for code-phase measurements. + * + * @example Please see the `DifferentialPseudorangeExample.ipynb` notebook + * for a demonstration of this factor on CORS datasets. + * + * @ingroup navigation + * + * REFERENCES: + * [1] P. Misra et. al., "Global Positioning Systems: Signals, Measurements, and + * Performance", Second Edition, 2012. + */ +class GTSAM_EXPORT DifferentialPseudorangeFactor + : public NoiseModelFactorN, + private PseudorangeBase { + private: + typedef NoiseModelFactorN Base; + + public: + // Provide access to the Matrix& version of evaluateError: + using Base::evaluateError; + + /// shorthand for a smart pointer to a factor + typedef std::shared_ptr shared_ptr; + + /// Typedef to this class + typedef DifferentialPseudorangeFactor This; + + /** default constructor - only use for serialization */ + DifferentialPseudorangeFactor() = default; + + virtual ~DifferentialPseudorangeFactor() = default; + + /** + * Construct a DifferentialPseudorangeFactor that includes a + * differential-correction term in its model for distance between a receiver + * and a satellite. + * + * @param receiverPositionKey Receiver gtsam::Point3 ECEF position node. + * @param receiverClockBiasKey Receiver clock bias node. + * @param differentialCorrectionKey Differential correction node. + * @param measuredPseudorange Receiver-measured pseudorange in meters. + * @param satellitePosition Satellite ECEF position in meters. + * @param satelliteClockBias Satellite clock bias in seconds. + * @param model 1-D pseudorange noise model. + */ + DifferentialPseudorangeFactor( + Key receiverPositionKey, Key receiverClockBiasKey, + Key differentialCorrectionKey, double measuredPseudorange, + const Point3& satellitePosition, double satelliteClockBias = 0.0, + const SharedNoiseModel& model = noiseModel::Unit::Create(1)); + + /// @return a deep copy of this factor + gtsam::NonlinearFactor::shared_ptr clone() const override { + return std::static_pointer_cast( + gtsam::NonlinearFactor::shared_ptr(new This(*this))); + } + + /// print + void print(const std::string& s = "", const KeyFormatter& keyFormatter = + DefaultKeyFormatter) const override; + + /// equals + bool equals(const NonlinearFactor& expected, + double tol = 1e-9) const override; + + /// vector of errors + Vector evaluateError( + const Point3& receiverPosition, const double& receiverClock_bias, + const double& differentialCorrection, OptionalMatrixType HreceiverPos, + OptionalMatrixType HreceiverClockBias, + OptionalMatrixType HdifferentialCorrection) const override; + + private: +#if GTSAM_ENABLE_BOOST_SERIALIZATION /// + /// Serialization function + friend class boost::serialization::access; + template + void serialize(ARCHIVE& ar, const unsigned int /*version*/) { + ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP( + DifferentialPseudorangeFactor::Base); + ar& BOOST_SERIALIZATION_NVP(pseudorange_); + ar& BOOST_SERIALIZATION_NVP(satPos_); + ar& BOOST_SERIALIZATION_NVP(satClkBias_); + } +#endif +}; + +/// traits +template <> +struct traits + : public Testable {}; + +} // namespace gtsam diff --git a/gtsam/navigation/doc/NavState.ipynb b/gtsam/navigation/doc/NavState.ipynb new file mode 100644 index 0000000000..184ff38d45 --- /dev/null +++ b/gtsam/navigation/doc/NavState.ipynb @@ -0,0 +1,390 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "title_overview", + "metadata": {}, + "source": [ + "# NavState\n", + "\n", + "The `NavState` class represents attitude, position, and velocity as a 9D manifold and also implements the matrix Lie group commonly denoted $SE_2(3)$ in the inertial-navigation literature. It is the core state type behind IMU preintegration and several navigation factors in GTSAM." + ] + }, + { + "cell_type": "markdown", + "id": "license_cell", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "markdown", + "id": "colab_badge", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "colab_install", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "imports", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from gtsam import NavState, Rot3, Point3" + ] + }, + { + "cell_type": "markdown", + "id": "manifold_section", + "metadata": {}, + "source": [ + "## `NavState` as a manifold\n", + "\n", + "A `NavState` is a tuple $(R, p, v)$ where:\n", + "- $R \\in SO(3)$ is attitude.\n", + "- $p \\in \\mathbb{R}^3$ is position in the navigation/world frame.\n", + "- $v \\in \\mathbb{R}^3$ is velocity in the navigation/world frame.\n", + "\n", + "In GTSAM, local increments for this manifold are ordered as rotation, then position, then velocity." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "construct_states", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Identity state:\n", + "R: [\n", + "\t1, 0, 0;\n", + "\t0, 1, 0;\n", + "\t0, 0, 1\n", + "]\n", + "p: 0 0 0\n", + "v: 0 0 0\n", + "\n", + "\n", + "Custom state X1:\n", + "R: [\n", + "\t0.866025, -0.5, 0;\n", + "\t0.5, 0.866025, 0;\n", + "\t0, 0, 1\n", + "]\n", + "p: 10 20 30\n", + "v: 1 2 3\n", + "\n" + ] + } + ], + "source": [ + "# Identity state\n", + "X_identity = NavState()\n", + "print(f\"Identity state:\\n{X_identity}\\n\")\n", + "\n", + "# A custom navigation state\n", + "R = Rot3.Yaw(np.pi / 6)\n", + "p = Point3(10, 20, 30)\n", + "v = np.array([1, 2, 3])\n", + "X1 = NavState(R, p, v)\n", + "print(f\"Custom state X1:\\n{X1}\")" + ] + }, + { + "cell_type": "markdown", + "id": "accessors_text", + "metadata": {}, + "source": [ + "The state components are accessible through `attitude()`, `position()`, and `velocity()`. You can also get `pose()` (rotation + position only) and `bodyVelocity()` (velocity expressed in the body frame)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "accessors_code", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attitude:\n", + "R: [\n", + "\t0.866025, -0.5, 0;\n", + "\t0.5, 0.866025, 0;\n", + "\t0, 0, 1\n", + "]\n", + "\n", + "\n", + "Position: [10. 20. 30.]\n", + "Velocity: [1. 2. 3.]\n", + "Body-frame velocity: [1.866 1.2321 3. ]\n", + "Pose:\n", + "R: [\n", + "\t0.866025, -0.5, 0;\n", + "\t0.5, 0.866025, 0;\n", + "\t0, 0, 1\n", + "]\n", + "t: 10 20 30\n", + "\n" + ] + } + ], + "source": [ + "print(f\"Attitude:\\n{X1.attitude()}\\n\")\n", + "print(f\"Position: {X1.position()}\")\n", + "print(f\"Velocity: {X1.velocity()}\")\n", + "print(f\"Body-frame velocity: {np.round(X1.bodyVelocity(), 4)}\")\n", + "print(f\"Pose:\\n{X1.pose()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "se23_conventions", + "metadata": {}, + "source": [ + "## Connection to $SE_2(3)$ and ordering conventions\n", + "\n", + "`NavState` follows the same Lie-group structure used in the $SE_2(3)$ literature, but with a different storage/order convention for compatibility with legacy GTSAM code.\n", + "\n", + "- **This notebook / `NavState` convention** (R, p, v):\n", + " $$X = \\begin{bmatrix} R & p & v \\\\ 0 & 1 & 0 \\\\ 0 & 0 & 1 \\end{bmatrix}$$\n", + "- **Common literature convention** (often Barrau et al.):\n", + " $$X_{lit} = \\begin{bmatrix} R & v & p \\\\ 0 & 1 & 0 \\\\ 0 & 0 & 1 \\end{bmatrix}$$\n", + "\n", + "Likewise, the `NavState` tangent vector uses order `[dR, dP, dV]` (rotation, position, velocity). Many papers use `[dR, dV, dP]` to match their matrix ordering.\n", + "\n", + "For comparison: in `Gal3`, we *do* follow the literature ordering conventions used there." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ordering_example", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NavState matrix (R, p, v):\n", + "[[ 0.866 -0.5 0. 10. 1. ]\n", + " [ 0.5 0.866 0. 20. 2. ]\n", + " [ 0. 0. 1. 30. 3. ]\n", + " [ 0. 0. 0. 1. 0. ]\n", + " [ 0. 0. 0. 0. 1. ]]\n", + "xi in NavState order [dR, dP, dV]: [ 0.1 -0.2 0.3 1. 2. 3. 0.4 0.5 0.6]\n", + "same increments in literature-like [dR, dV, dP] order: [ 0.1 -0.2 0.3 0.4 0.5 0.6 1. 2. 3. ]\n" + ] + } + ], + "source": [ + "T = X1.matrix()\n", + "print(\"NavState matrix (R, p, v):\")\n", + "print(np.round(T, 4))\n", + "\n", + "xi_rpv = np.array([0.1, -0.2, 0.3, 1.0, 2.0, 3.0, 0.4, 0.5, 0.6]) # [dR, dP, dV]\n", + "xi_rvp = np.hstack([xi_rpv[0:3], xi_rpv[6:9], xi_rpv[3:6]]) # [dR, dV, dP]\n", + "print(\"xi in NavState order [dR, dP, dV]:\", xi_rpv)\n", + "print(\"same increments in literature-like [dR, dV, dP] order:\", xi_rvp)" + ] + }, + { + "cell_type": "markdown", + "id": "group_section", + "metadata": {}, + "source": [ + "## Group operations\n", + "\n", + "As a Lie group, `NavState` supports composition and inversion. The composition matches matrix multiplication of the 5x5 representation." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "group_code", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X1.inverse():\n", + "R: [\n", + "\t0.866025, 0.5, 0;\n", + "\t-0.5, 0.866025, 0;\n", + "\t0, 0, 1\n", + "]\n", + "p: -18.6603 -12.3205 -30\n", + "v: -1.86603 -1.23205 -3\n", + "\n", + "\n", + "X1 * X2:\n", + "R: [\n", + "\t0.707107, -0.707107, 0;\n", + "\t0.707107, 0.707107, 0;\n", + "\t0, 0, 1\n", + "]\n", + "p: 11.8301 26.8301 35\n", + "v: 3.4641 5.73205 8\n", + "\n", + "\n", + "matrix(X1 * X2) == matrix(X1) @ matrix(X2): True\n" + ] + } + ], + "source": [ + "X2 = NavState(Rot3.Yaw(np.pi / 12), Point3(5, 5, 5), np.array([4, 2, 5]))\n", + "\n", + "X1_inv = X1.inverse()\n", + "print(f\"X1.inverse():\\n{X1_inv}\\n\")\n", + "\n", + "X_comp = X1 * X2\n", + "print(f\"X1 * X2:\\n{X_comp}\\n\")\n", + "\n", + "lhs = X_comp.matrix()\n", + "rhs = X1.matrix() @ X2.matrix()\n", + "print(\"matrix(X1 * X2) == matrix(X1) @ matrix(X2):\", np.allclose(lhs, rhs))" + ] + }, + { + "cell_type": "markdown", + "id": "lie_algebra_section", + "metadata": {}, + "source": [ + "## Lie algebra and manifold operations\n", + "\n", + "The 9D tangent coordinates are ordered as\n", + "`[R_x, R_y, R_z, P_x, P_y, P_z, V_x, V_y, V_z]`.\n", + "\n", + "`Expmap` and `Logmap` convert between tangent vectors and `NavState` group elements. `retract`/`localCoordinates` are the manifold operations used in optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "exp_log_code", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Expmap(xi):\n", + "R: [\n", + "\t0.975125, 0.108953, 0.193031;\n", + "\t-0.0890529, 0.99005, -0.108953;\n", + "\t-0.202981, 0.0890529, 0.975125\n", + "]\n", + "p: 0.481917 0.447923 0.577763\n", + "v: -0.172632 0.302981 0.13333\n", + "\n", + "\n", + "Logmap(Expmap(xi)) = [ 0.1 0.2 -0.1 0.4 0.5 0.6 -0.2 0.3 0.1]\n" + ] + } + ], + "source": [ + "xi = np.array([0.1, 0.2, -0.1, 0.4, 0.5, 0.6, -0.2, 0.3, 0.1]) # [dR, dP, dV]\n", + "\n", + "X_exp = NavState.Expmap(xi)\n", + "print(f\"Expmap(xi):\\n{X_exp}\\n\")\n", + "\n", + "xi_log = NavState.Logmap(X_exp)\n", + "print(\"Logmap(Expmap(xi)) =\", np.round(xi_log, 6))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "retract_local_code", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "localCoordinates from Xp to Xq = [ 0. 0. -0.261799 -10.606602 -3.535534 -20.\n", + " 3.535534 -0.707107 3. ]\n", + "Xp.retract(delta):\n", + "R: [\n", + "\t0.866025, -0.5, 0;\n", + "\t0.5, 0.866025, 0;\n", + "\t0, 0, 1\n", + "]\n", + "p: 10 20 30\n", + "v: 1 2 3\n", + "\n" + ] + } + ], + "source": [ + "Xp = NavState(Rot3.Yaw(np.pi / 4), Point3(15, 30, 50), np.array([-2, 0, 0]))\n", + "Xq = X1\n", + "\n", + "delta = Xp.localCoordinates(Xq)\n", + "print(\"localCoordinates from Xp to Xq =\", np.round(delta, 6))\n", + "\n", + "Xq_retracted = Xp.retract(delta)\n", + "print(f\"Xp.retract(delta):\\n{Xq_retracted}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/gtsam/navigation/doc/PseudorangeFactor.ipynb b/gtsam/navigation/doc/PseudorangeFactor.ipynb new file mode 100644 index 0000000000..d16e437e2c --- /dev/null +++ b/gtsam/navigation/doc/PseudorangeFactor.ipynb @@ -0,0 +1,105 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pseudorange Factor\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "\n", + "The `PseudorangeFactor` family provides factors for incorporating GNSS pseudorange measurements into a GTSAM factor graph. Pseudorange factors model the distance between a satellite and the GNSS receiver along with their associated errors (atmospheric, multipath, clock bias, etc...). This more-tightly couples GNSS positioning within the general probabilistic graphical estimation framework compared to loosely-coupled `GPSFactor`s. In other words, `PseudorangeFactor` integrates GNSS measurements in a \"raw\" form so the factor graph has the opportunity to correct GNSS measurements as part of the overall optimization process. Tightly-coupled GNSS filters also enable partial position observability even if the requisite minimum 4 satellites for an independent position calculation are not met." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2026, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usage Example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import gtsam\n", + "from gtsam.symbol_shorthand import B, X\n", + "import numpy as np\n", + "\n", + "cb_key = B(0) # Receiver clock bias variable key.\n", + "pos_key = X(0) # Receiver position variable key.\n", + "nm = gtsam.noiseModel.Diagonal.Sigmas(np.array([1.0]))\n", + "pf = gtsam.PseudorangeFactor(pos_key, cb_key, 123.45, np.array([123.45, 0.0, 0.0]), 0.0, nm)\n", + "pf.evaluateError(np.array([0.0, 0.0, 0.0]), 0.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Source\n", + "- [PseudorangeFactor.h](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/PseudorangeFactor.h)\n", + "- [PseudorangeFactor.cpp](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/PseudorangeFactor.cpp)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/gtsam/navigation/navigation.i b/gtsam/navigation/navigation.i index 0356112555..3530d0e62c 100644 --- a/gtsam/navigation/navigation.i +++ b/gtsam/navigation/navigation.i @@ -45,8 +45,9 @@ class ConstantBias { class NavState { // Constructors NavState(); - NavState(const gtsam::Rot3& R, const gtsam::Point3& t, gtsam::Vector v); - NavState(const gtsam::Pose3& pose, gtsam::Vector v); + NavState(const gtsam::Rot3& R, const gtsam::Point3& t, + const gtsam::Vector3& v); + NavState(const gtsam::Pose3& pose, const gtsam::Vector3& v); // Testable void print(string s = "") const; @@ -55,9 +56,27 @@ class NavState { // Access gtsam::Rot3 attitude() const; gtsam::Point3 position() const; - gtsam::Vector velocity() const; + gtsam::Vector3 velocity() const; + gtsam::Vector3 bodyVelocity() const; gtsam::Pose3 pose() const; + // Standard Interface + double range(const gtsam::Point3& point) const; + double range(const gtsam::Point3& point, Eigen::Ref Hself, + Eigen::Ref Hpoint) const; + gtsam::Unit3 bearing(const gtsam::Point3& point) const; + gtsam::Unit3 bearing(const gtsam::Point3& point, Eigen::Ref Hself, + Eigen::Ref Hpoint) const; + + // Group + static gtsam::NavState Identity(); + gtsam::NavState inverse(); + gtsam::NavState compose(const gtsam::NavState& p2) const; + gtsam::NavState between(const gtsam::NavState& p2) const; + + // Operator Overloads + gtsam::NavState operator*(const gtsam::NavState& p2) const; + // Manifold gtsam::NavState retract(const gtsam::Vector& v) const; gtsam::Vector localCoordinates(const gtsam::NavState& g) const; @@ -71,8 +90,16 @@ class NavState { gtsam::NavState expmap(gtsam::Vector v, Eigen::Ref H1, Eigen::Ref H2); gtsam::Vector logmap(const gtsam::NavState& p); gtsam::Vector logmap(const gtsam::NavState& p, Eigen::Ref H1, Eigen::Ref H2); + + // Matrix Lie Group gtsam::Matrix AdjointMap() const; gtsam::Vector Adjoint(gtsam::Vector xi_b) const; + gtsam::Vector AdjointTranspose(gtsam::Vector x) const; + static gtsam::Matrix adjointMap(gtsam::Vector xi); + static gtsam::Vector adjoint(gtsam::Vector xi, gtsam::Vector y); + static gtsam::Vector adjointTranspose(gtsam::Vector xi, gtsam::Vector y); + gtsam::Vector vec() const; + gtsam::Matrix matrix() const; static gtsam::Matrix Hat(const gtsam::Vector& xi); static gtsam::Vector Vee(const gtsam::Matrix& X); @@ -477,6 +504,50 @@ virtual class GPSFactor2ArmCalib : gtsam::NonlinearFactor{ void serialize() const; }; +#include +virtual class PseudorangeFactor : gtsam::NonlinearFactor { + PseudorangeFactor(gtsam::Key receiverPositionKey, + gtsam::Key receiverClockBiasKey, double measuredPseudorange, + const gtsam::Point3& satellitePosition, + double satelliteClockBias, + const gtsam::noiseModel::Base* model); + + // Testable + void print(string s = "", const gtsam::KeyFormatter& keyFormatter = + gtsam::DefaultKeyFormatter) const; + bool equals(const gtsam::NonlinearFactor& expected, double tol); + + // Standard Interface + gtsam::Vector evaluateError(const gtsam::Point3& receiverPosition, + const double& receiverClockBias) const; + + // enable serialization functionality + void serialize() const; +}; + +virtual class DifferentialPseudorangeFactor : gtsam::NonlinearFactor { + DifferentialPseudorangeFactor(gtsam::Key receiverPositionKey, + gtsam::Key receiverClockBiasKey, + gtsam::Key differentialCorrectionKey, + double measuredPseudorange, + const gtsam::Point3& satellitePosition, + double satelliteClockBias, + const gtsam::noiseModel::Base* model); + + // Testable + void print(string s = "", const gtsam::KeyFormatter& keyFormatter = + gtsam::DefaultKeyFormatter) const; + bool equals(const gtsam::NonlinearFactor& expected, double tol); + + // Standard Interface + gtsam::Vector evaluateError(const gtsam::Point3& receiverPosition, + const double& receiverClockBias, + const double& differentialCorrection) const; + + // enable serialization functionality + void serialize() const; +}; + #include virtual class BarometricFactor : gtsam::NonlinearFactor { BarometricFactor(); @@ -543,6 +614,7 @@ virtual class Scenario { gtsam::Vector acceleration_n(double t) const; gtsam::Rot3 rotation(double t) const; gtsam::NavState navState(double t) const; + gtsam::Gal3 gal3(double t) const; gtsam::Vector velocity_b(double t) const; gtsam::Vector acceleration_b(double t) const; }; @@ -611,7 +683,7 @@ virtual class ManifoldEKF { // Only vector-based measurements are supported in wrapper void updateWithVector(const gtsam::Vector& prediction, const gtsam::Matrix& H, - const gtsam::Vector& z, const gtsam::Matrix& R); + const gtsam::Vector& z, const gtsam::Matrix& R, bool performReset = true); }; #include @@ -643,6 +715,27 @@ virtual class InvariantEKF : gtsam::LeftLinearEKF { void predict(const gtsam::Vector& u, double dt, gtsam::Matrix Q); }; +// --------------------------------------------------------------------------- +// ABC Equivariant Filter +#include +namespace abc { +template +class AbcEquivariantFilter { + // Constructors + AbcEquivariantFilter(); + AbcEquivariantFilter(gtsam::Matrix Sigma0); + + // Predict and update methods + void predict(const gtsam::Vector3& omega, const gtsam::Matrix6& inputCovariance, double dt); + void update(const gtsam::Unit3& y, const gtsam::Unit3& d, const gtsam::Matrix3& R, int cal_idx); + + // Accessors + gtsam::Rot3 attitude() const; + gtsam::Vector3 bias() const; + gtsam::Rot3 calibration(size_t i) const; +}; +} // namespace abc + // Specialized NavState IMU EKF #include class NavStateImuEKF : gtsam::LeftLinearEKF { diff --git a/gtsam/navigation/navigation.md b/gtsam/navigation/navigation.md index 25737c6971..785bc42ed9 100644 --- a/gtsam/navigation/navigation.md +++ b/gtsam/navigation/navigation.md @@ -5,7 +5,7 @@ The `navigation` module in GTSAM provides specialized tools for inertial navigat ## Classes ### Core Navigation Types -- **[NavState](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/NavState.h)**: Represents the complete navigation state $\mathcal{SE}_2(3)$, i.e., attitude, position, and velocity. It also implements the group ${SE}_2(3)$. +- **[NavState](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/NavState.h)**: Represents the complete navigation state $\mathcal{SE}_2(3)$, i.e., attitude, position, and velocity. It also implements the group ${SE}_2(3)$. See the [NavState user guide](doc/NavState.ipynb). - **[ImuBias](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/ImuBias.h)**: Models constant biases in IMU measurements (accelerometer and gyroscope). ### Invariant Kalman Filtering @@ -33,6 +33,7 @@ The `navigation` module in GTSAM provides specialized tools for inertial navigat - **[GPSFactor](doc/GPSFactor.ipynb)**: Factor for incorporating GPS position measurements. - **[BarometricFactor](doc/BarometricFactor.ipynb)**: Incorporates barometric altitude measurements. +- **[PseudorangeFactor](doc/PseudorangeFactor.ipynb)**: Precise GNSS positioning. ### Magnetic Field Integration diff --git a/gtsam/navigation/tests/testCombinedImuFactor.cpp b/gtsam/navigation/tests/testCombinedImuFactor.cpp index 54be1fb07c..55d806a999 100644 --- a/gtsam/navigation/tests/testCombinedImuFactor.cpp +++ b/gtsam/navigation/tests/testCombinedImuFactor.cpp @@ -198,7 +198,7 @@ TEST_PIM(CombinedImuFactor, PredictRotation) { // Predict const Pose3 x(Rot3::Ypr(0, 0, 0), Point3(0, 0, 0)), x2; - const Vector3 v(0, 0, 0), v2(0, 0, 0); + const Vector3 v(0, 0, 0); const NavState actual = pim.predict(NavState(x, v), bias); const Pose3 expectedPose(Rot3::Ypr(M_PI / 10, 0, 0), Point3(0, 0, 0)); EXPECT(assert_equal(expectedPose, actual.pose(), tol)); diff --git a/gtsam/navigation/tests/testInvariantEKF.cpp b/gtsam/navigation/tests/testInvariantEKF.cpp index a75c60d4eb..fcad8d22d9 100644 --- a/gtsam/navigation/tests/testInvariantEKF.cpp +++ b/gtsam/navigation/tests/testInvariantEKF.cpp @@ -65,7 +65,7 @@ TEST(IEKF_Pose2, PredictUpdateSequence) { EXPECT(assert_equal(P1_expected, ekf.covariance(), 1e-9)); // --- First Update --- - ekf.update(h_gps, z1, R); + ekf.update(h_gps, z1, R, false); // Calculate expected state and covariance (manual Kalman steps) Matrix H1; // H = dh/dlocal(X) -> 2x3 @@ -97,7 +97,7 @@ TEST(IEKF_Pose2, PredictUpdateSequence) { EXPECT(assert_equal(P2_expected, ekf.covariance(), 1e-9)); // --- Second Update --- - ekf.update(h_gps, z2, R); + ekf.update(h_gps, z2, R, false); // Calculate expected state and covariance (manual Kalman steps) Matrix H2; // 2x3 diff --git a/gtsam/navigation/tests/testManifoldEKF.cpp b/gtsam/navigation/tests/testManifoldEKF.cpp index 1e93b228fc..da6d4f6018 100644 --- a/gtsam/navigation/tests/testManifoldEKF.cpp +++ b/gtsam/navigation/tests/testManifoldEKF.cpp @@ -7,46 +7,47 @@ * See LICENSE for the license information * -------------------------------------------------------------------------- */ - /** - * @file testManifoldEKF.cpp - * @brief Unit test for the ManifoldEKF base class using Unit3. - * @date April 26, 2025 - * @authors Scott Baker, Matt Kielo, Frank Dellaert - */ +/** + * @file testManifoldEKF.cpp + * @brief Unit test for the ManifoldEKF base class using Unit3. + * @date April 26, 2025 + * @authors Scott Baker, Matt Kielo, Frank Dellaert + */ +#include #include #include #include +#include #include #include -#include - #include +#include using namespace gtsam; // Define simple dynamics for Unit3: constant velocity in the tangent space namespace exampleUnit3 { - // Predicts the next state given current state, tangent velocity, and dt - Unit3 f(const Unit3& p, const Vector2& v, double dt) { - return p.retract(v * dt); - } +// Predicts the next state given current state, tangent velocity, and dt +Unit3 f(const Unit3& p, const Vector2& v, double dt) { + return p.retract(v * dt); +} - // Define a measurement model: measure the z-component of the Unit3 direction - // H is the Jacobian dh/d(local(p)) - double measureZ(const Unit3& p, OptionalJacobian<1, 2> H) { - if (H) { - // H = d(p.point3().z()) / d(local(p)) - // Calculate numerically for simplicity in test - auto h = [](const Unit3& p_) { return p_.point3().z(); }; - *H = numericalDerivative11(h, p); - } - return p.point3().z(); +// Define a measurement model: measure the z-component of the Unit3 direction +// H is the Jacobian dh/d(local(p)) +double measureZ(const Unit3& p, OptionalJacobian<1, 2> H) { + if (H) { + // H = d(p.point3().z()) / d(local(p)) + // Calculate numerically for simplicity in test + auto h = [](const Unit3& p_) { return p_.point3().z(); }; + *H = numericalDerivative11(h, p); } + return p.point3().z(); +} -} // namespace exampleUnit3 +} // namespace exampleUnit3 // Test fixture for ManifoldEKF with Unit3 struct Unit3EKFTest { @@ -54,20 +55,20 @@ struct Unit3EKFTest { Matrix2 P0; Vector2 velocity; double dt; - Matrix2 Q; // Process noise - Matrix1 R; // Measurement noise - - Unit3EKFTest() : - p0(Unit3(Point3(1, 0, 0))), // Start pointing along X-axis - P0(I_2x2 * 0.01), - velocity((Vector2() << 0.0, M_PI / 4.0).finished()), // Rotate towards +Z axis - dt(0.1), - Q(I_2x2 * 0.001), - R(Matrix1::Identity() * 0.01) { - } + Matrix2 Q; // Process noise + Matrix1 R; // Measurement noise + + Unit3EKFTest() + : p0(Unit3(Point3(1, 0, 0))), // Start pointing along X-axis + P0(I_2x2 * 0.01), + velocity((Vector2() << 0.0, M_PI / 4.0) + .finished()), // Rotate towards +Z axis + dt(0.1), + Q(I_2x2 * 0.001), + R(Matrix1::Identity() * 0.01) {} }; - +//============================================================================== TEST(ManifoldEKF_Unit3, Predict) { Unit3EKFTest data; @@ -83,7 +84,7 @@ TEST(ManifoldEKF_Unit3, Predict) { // GTSAM's numericalDerivative handles derivatives *between* manifolds. auto predict_wrapper = [&](const Unit3& p) -> Unit3 { return exampleUnit3::f(p, data.velocity, data.dt); - }; + }; Matrix2 F = numericalDerivative11(predict_wrapper, data.p0); // --- Perform EKF prediction --- @@ -97,45 +98,51 @@ TEST(ManifoldEKF_Unit3, Predict) { Matrix2 P_expected = F * data.P0 * F.transpose() + data.Q; EXPECT(assert_equal(P_expected, ekf.covariance(), 1e-8)); - // Check F manually for a simple case (e.g., zero velocity should give Identity) + // Check F manually for a simple case (e.g., zero velocity should give + // Identity) Vector2 zero_velocity = Vector2::Zero(); auto predict_wrapper_zero = [&](const Unit3& p) -> Unit3 { return exampleUnit3::f(p, zero_velocity, data.dt); - }; - Matrix2 F_zero = numericalDerivative11(predict_wrapper_zero, data.p0); + }; + Matrix2 F_zero = + numericalDerivative11(predict_wrapper_zero, data.p0); EXPECT(assert_equal(I_2x2, F_zero, 1e-8)); - } +//============================================================================== TEST(ManifoldEKF_Unit3, Update) { Unit3EKFTest data; // Use a slightly different starting point and covariance for variety - Unit3 p_start = Unit3(Point3(0, 1, 0)).retract((Vector2() << 0.1, 0).finished()); // Perturb pointing along Y + Unit3 p_start = + Unit3(Point3(0, 1, 0)) + .retract( + (Vector2() << 0.1, 0).finished()); // Perturb pointing along Y Matrix2 P_start = I_2x2 * 0.05; ManifoldEKF ekf(p_start, P_start); // Simulate a measurement (e.g., true value + noise) double z_true = exampleUnit3::measureZ(p_start, {}); - double z_observed = z_true + 0.02; // Add some noise + double z_observed = z_true + 0.02; // Add some noise // --- Perform EKF update --- ekf.update(exampleUnit3::measureZ, z_observed, data.R); // --- Verification (Manual Kalman Update Steps) --- // 1. Predict measurement and get Jacobian H - Matrix12 H; // Note: Jacobian is 1x2 for Unit3 + Matrix12 H; // Note: Jacobian is 1x2 for Unit3 double z_pred = exampleUnit3::measureZ(p_start, H); // 2. Innovation and Covariance - double y = z_pred - z_observed; // Innovation (using vector subtraction for z) - Matrix1 S = H * P_start * H.transpose() + data.R; // 1x1 matrix + double y = + z_pred - z_observed; // Innovation (using vector subtraction for z) + Matrix1 S = H * P_start * H.transpose() + data.R; // 1x1 matrix // 3. Kalman Gain K - Matrix K = P_start * H.transpose() * S.inverse(); // 2x1 matrix + Matrix K = P_start * H.transpose() * S.inverse(); // 2x1 matrix // 4. State Correction (in tangent space) - Vector2 delta_xi = -K * y; // 2x1 vector + Vector2 delta_xi = -K * y; // 2x1 vector // 5. Expected Updated State and Covariance Unit3 p_updated_expected = p_start.retract(delta_xi); @@ -147,36 +154,109 @@ TEST(ManifoldEKF_Unit3, Update) { EXPECT(assert_equal(P_updated_expected, ekf.covariance(), 1e-8)); } +//============================================================================== +namespace pose2_manifold_ekf_example { +const Pose2 X0(1.0, -2.0, 0.4); +const Matrix3 P0 = + (Matrix3() << 20, 1, -2, 1, 30, 4, -2, 4, 50).finished() * 1e-2; +const Vector3 eta = (Vector3() << 15, -5, 30).finished() * 1e-2; +} // namespace pose2_manifold_ekf_example + +//============================================================================== +TEST(ManifoldEKF_Pose2, ResetUsesRetractJacobian) { + using namespace pose2_manifold_ekf_example; + ManifoldEKF ekf(X0, P0); + + Matrix3 B; + Pose2 expected_state = traits::Retract(X0, eta, &B); + Matrix3 expected_covariance = B * P0 * B.transpose(); + + ekf.reset(eta); + + EXPECT(assert_equal(expected_state, ekf.state(), 1e-9)); + EXPECT(assert_equal(expected_covariance, ekf.covariance(), 1e-9)); + EXPECT((P0 - ekf.covariance()).norm() > 1e-12); +} + +//============================================================================== +TEST(ManifoldEKF_Pose2, ResetCovarianceMonteCarlo) { + Pose2 X0(0.2, -0.4, 0.3); + Matrix3 P0 = (Matrix3() << 20, 3, -1, 3, 25, 2, -1, 2, 15).finished() * 1e-5; + Vector3 eta; + eta << 1e-3, -8e-4, 1.2e-3; + ManifoldEKF ekf(X0, P0); + + Matrix3 B; + Pose2 X1 = traits::Retract(X0, eta, &B); + Matrix3 expected_covariance = B * P0 * B.transpose(); + + const int kNumSamples = 20000; + std::mt19937 rng(42); + std::normal_distribution normal(0.0, 1.0); + Eigen::LLT llt(P0); + Matrix3 L = llt.matrixL(); + + Vector3 mean = Vector3::Zero(); + Matrix3 sample_covariance = Matrix3::Zero(); + for (int i = 0; i < kNumSamples; ++i) { + Vector3 z; + z << normal(rng), normal(rng), normal(rng); + Vector3 delta0 = L * z; + Pose2 X0_sample = X0.retract(delta0); + Pose2 X1_sample = traits::Retract(X0_sample, eta); + Vector3 delta1 = X1.localCoordinates(X1_sample); + mean += delta1; + sample_covariance += delta1 * delta1.transpose(); + } + mean /= static_cast(kNumSamples); + sample_covariance = sample_covariance / static_cast(kNumSamples - 1); + sample_covariance -= (static_cast(kNumSamples) / + static_cast(kNumSamples - 1)) * + (mean * mean.transpose()); + + ekf.reset(eta); + EXPECT(assert_equal(expected_covariance, ekf.covariance(), 1e-9)); + EXPECT(assert_equal(expected_covariance, sample_covariance, 1e-2)); +} + +//============================================================================== // Define simple dynamics and measurement for a 2x2 Matrix state namespace manifold_ekf_example { - // Predicts the next state given current state (Matrix), tangent "velocity" (Vector), and dt. - Matrix f(const Matrix& p, const Vector& vTangent, double dt) { - return traits::Retract(p, vTangent * dt); // + - } +// Predicts the next state given current state (Matrix), tangent "velocity" +// (Vector), and dt. +Matrix f(const Matrix& p, const Vector& vTangent, double dt) { + return traits::Retract(p, vTangent * dt); // + +} - // Define a measurement model: measure the trace of the Matrix (assumed 2x2 here) - double h(const Matrix& p, OptionalJacobian<-1, -1> H = {}) { - // Specialized for a 2x2 matrix! - if (p.rows() != 2 || p.cols() != 2) { - throw std::invalid_argument("Matrix must be 2x2."); - } - if (H) { - H->resize(1, p.size()); - *H << 1.0, 0.0, 0.0, 1.0; // d(trace)/dp00, d(trace)/dp01, d(trace)/dp10, d(trace)/dp11 - } - return p(0, 0) + p(1, 1); // Trace of the matrix +// Define a measurement model: measure the trace of the Matrix (assumed 2x2 +// here) +double h(const Matrix& p, OptionalJacobian<-1, -1> H = {}) { + // Specialized for a 2x2 matrix! + if (p.rows() != 2 || p.cols() != 2) { + throw std::invalid_argument("Matrix must be 2x2."); + } + if (H) { + H->resize(1, p.size()); + *H << 1.0, 0.0, 0.0, + 1.0; // d(trace)/dp00, d(trace)/dp01, d(trace)/dp10, d(trace)/dp11 } + return p(0, 0) + p(1, 1); // Trace of the matrix +} -} // namespace manifold_ekf_example +} // namespace manifold_ekf_example +//============================================================================== TEST(ManifoldEKF_DynamicMatrix, CombinedPredictAndUpdate) { Matrix pInitial = (Matrix(2, 2) << 1.0, 2.0, 3.0, 4.0).finished(); - Matrix pInitialCovariance = I_4x4 * 0.01; // Covariance for 2x2 matrix (4x4) - Vector vTangent = (Vector(4) << 0.5, 0.1, -0.1, -0.5).finished(); // [dp00, dp10, dp01, dp11]/sec + Matrix pInitialCovariance = I_4x4 * 0.01; // Covariance for 2x2 matrix (4x4) + Vector vTangent = (Vector(4) << 0.5, 0.1, -0.1, -0.5) + .finished(); // [dp00, dp10, dp01, dp11]/sec double deltaTime = 0.1; - Matrix processNoiseCovariance = I_4x4 * 0.001; // Process noise covariance (4x4) - Matrix measurementNoiseCovariance = Matrix::Identity(1, 1) * 0.005; // Measurement noise covariance (1x1) + Matrix processNoiseCovariance = + I_4x4 * 0.001; // Process noise covariance (4x4) + Matrix measurementNoiseCovariance = + Matrix::Identity(1, 1) * 0.005; // Measurement noise covariance (1x1) ManifoldEKF ekf(pInitial, pInitialCovariance); // For a 2x2 Matrix, tangent space dimension is 2*2=4. @@ -184,16 +264,19 @@ TEST(ManifoldEKF_DynamicMatrix, CombinedPredictAndUpdate) { EXPECT_LONGS_EQUAL(pInitial.rows() * pInitial.cols(), ekf.state().size()); // Predict Step - Matrix pPredictedMean = manifold_ekf_example::f(pInitial, vTangent, deltaTime); + Matrix pPredictedMean = + manifold_ekf_example::f(pInitial, vTangent, deltaTime); - // For this linear prediction model (pNext = pCurrent + V*dt in tangent space), - // Derivative w.r.t deltaXi is Identity. + // For this linear prediction model (pNext = pCurrent + V*dt in tangent + // space), Derivative w.r.t deltaXi is Identity. Matrix fJacobian = I_4x4; ekf.predict(pPredictedMean, fJacobian, processNoiseCovariance); EXPECT(assert_equal(pPredictedMean, ekf.state(), 1e-9)); - Matrix pPredictedCovarianceExpected = fJacobian * pInitialCovariance * fJacobian.transpose() + processNoiseCovariance; + Matrix pPredictedCovarianceExpected = + fJacobian * pInitialCovariance * fJacobian.transpose() + + processNoiseCovariance; EXPECT(assert_equal(pPredictedCovarianceExpected, ekf.covariance(), 1e-9)); // Update Step @@ -208,29 +291,38 @@ TEST(ManifoldEKF_DynamicMatrix, CombinedPredictAndUpdate) { ekf.update(manifold_ekf_example::h, zObserved, measurementNoiseCovariance); // Manual Kalman Update Steps for Verification - Matrix hJacobian(1, 4); // Measurement Jacobian H (1x4 for 2x2 matrix, trace measurement) - double zPredictionManual = manifold_ekf_example::h(pCurrentForUpdate, hJacobian); + Matrix hJacobian( + 1, 4); // Measurement Jacobian H (1x4 for 2x2 matrix, trace measurement) + double zPredictionManual = + manifold_ekf_example::h(pCurrentForUpdate, hJacobian); Matrix hJacobianExpected = (Matrix(1, 4) << 1.0, 0.0, 0.0, 1.0).finished(); EXPECT(assert_equal(hJacobianExpected, hJacobian, 1e-9)); // Innovation: y = zObserved - zPredictionManual (since measurement is double) double yInnovation = zObserved - zPredictionManual; - Matrix innovationCovariance = hJacobian * pCurrentCovarianceForUpdate * hJacobian.transpose() + measurementNoiseCovariance; + Matrix innovationCovariance = + hJacobian * pCurrentCovarianceForUpdate * hJacobian.transpose() + + measurementNoiseCovariance; - Matrix kalmanGain = pCurrentCovarianceForUpdate * hJacobian.transpose() * innovationCovariance.inverse(); // K is 4x1 + Matrix kalmanGain = pCurrentCovarianceForUpdate * hJacobian.transpose() * + innovationCovariance.inverse(); // K is 4x1 // State Correction (in tangent space of Matrix) - Vector deltaXiTangent = kalmanGain * yInnovation; // deltaXi is 4x1 Vector + Vector deltaXiTangent = kalmanGain * yInnovation; // deltaXi is 4x1 Vector - Matrix pUpdatedManualExpected = traits::Retract(pCurrentForUpdate, deltaXiTangent); - Matrix pUpdatedCovarianceManualExpected = (I_4x4 - kalmanGain * hJacobian) * pCurrentCovarianceForUpdate; + Matrix pUpdatedManualExpected = + traits::Retract(pCurrentForUpdate, deltaXiTangent); + Matrix pUpdatedCovarianceManualExpected = + (I_4x4 - kalmanGain * hJacobian) * pCurrentCovarianceForUpdate; EXPECT(assert_equal(pUpdatedManualExpected, ekf.state(), 1e-9)); - EXPECT(assert_equal(pUpdatedCovarianceManualExpected, ekf.covariance(), 1e-9)); + EXPECT( + assert_equal(pUpdatedCovarianceManualExpected, ekf.covariance(), 1e-9)); } // Test the non-templated wrapper bridge updateWithVector delegates to // update +//============================================================================== TEST(ManifoldEKF_DynamicMatrix, UpdateWithVectorBridge) { // State is a 2x2 Matrix manifold (dim=4) Matrix X0 = (Matrix(2, 2) << 1.0, 2.0, 3.0, 4.0).finished(); @@ -269,4 +361,4 @@ TEST(ManifoldEKF_DynamicMatrix, UpdateWithVectorBridge) { int main() { TestResult tr; return TestRegistry::runAllTests(tr); -} \ No newline at end of file +} diff --git a/gtsam/navigation/tests/testNavState.cpp b/gtsam/navigation/tests/testNavState.cpp index 16606cfe43..3a6b06134e 100644 --- a/gtsam/navigation/tests/testNavState.cpp +++ b/gtsam/navigation/tests/testNavState.cpp @@ -24,6 +24,7 @@ #include #include +#include using namespace std::placeholders; using namespace std; @@ -52,6 +53,13 @@ static const NavState T2(Rot3::Rodrigues(0.3, 0.2, 0.1), P2, V2); static const NavState T3(Rot3::Rodrigues(-90, 0, 0), Point3(5, 6, 7), Point3(1, 2, 3)); +// Some shared test values - pulled from equivalent tests in Pose3 +static const Point3 l1(1, 0, 0), l2(1, 1, 0), l3(2, 2, 0), l4(1, 4, -4); +static const Velocity3 kTestVelocity(0.4, 0.5, 0.6); +static const NavState x1(Rot3(), Point3::Zero(), kTestVelocity), + x2(Rot3::Ypr(0.0, 0.0, 0.0), l2, kTestVelocity), + x3(Rot3::Ypr(M_PI / 4.0, 0.0, 0.0), l2, kTestVelocity); + //****************************************************************************** TEST(NavState, Concept) { GTSAM_CONCEPT_ASSERT(IsGroup); @@ -124,6 +132,22 @@ TEST( NavState, Velocity) { EXPECT(assert_equal((Matrix )eH, aH)); } +/* ************************************************************************* */ +TEST(NavState, PoseJacobian) { + // NavState::pose() should be a pure projection onto the (R,t) components. + std::function f = [](const NavState& s) { + return s.pose(); + }; + + const Matrix69 actualH = numericalDerivative11(f, kState1); + + Matrix69 expectedH = Matrix69::Zero(); + expectedH.block<3, 3>(0, 0) = I_3x3; + expectedH.block<3, 3>(3, 3) = I_3x3; + + EXPECT(assert_equal(expectedH, actualH, 1e-6)); +} + /* ************************************************************************* */ TEST( NavState, BodyVelocity) { Matrix39 aH, eH; @@ -232,7 +256,7 @@ TEST(NavState, Compose) { } /* ************************************************************************* */ -// Check compose and its push-forward, another case +// Check compose and its pushforward, another case TEST(NavState, Compose2) { const NavState& T1 = T; Matrix actual = (T1 * T2).matrix(); @@ -361,7 +385,7 @@ TEST(NavState, Coriolis2) { TEST(NavState, Coriolis3) { /** Consider a massless planet with an attached nav frame at - * n_omega = [0 0 1]', and a body at position n_t = [1 0 0]', travelling with + * n_omega = [0 0 1]', and a body at position n_t = [1 0 0]', traveling with * velocity n_v = [0 1 0]'. Orient the body so that it is not instantaneously * aligned with the nav frame (i.e., nRb != I_3x3). Test that first and * second order Coriolis corrections are as expected. @@ -529,6 +553,15 @@ Point3 expectedP(0.29552, 0.0446635, 1); NavState expected(expectedR, expectedV, expectedP); } // namespace screwNavState +/* ************************************************************************* */ +// Checks correct exponential map (Expmap) with brute force matrix exponential +TEST(NavState, Expmap_c_full) { + EXPECT(assert_equal(screwNavState::expected, + expm(screwNavState::xi), 1e-6)); + EXPECT(assert_equal(screwNavState::expected, + NavState::Expmap(screwNavState::xi), 1e-6)); +} + /* ************************************************************************* */ // assert that T*exp(xi)*T^-1 is equal to exp(Ad_T(xi)) TEST(NavState, Adjoint_full) { @@ -550,14 +583,42 @@ TEST(NavState, Adjoint_compose_full) { // To debug derivatives of compose, assert that // T1*T2*exp(Adjoint(inv(T2),x) = T1*exp(x)*T2 const NavState& T1 = T; - Vector x = - (Vector(9) << 0.1, 0.1, 0.1, 0.4, 0.2, 0.8, 0.4, 0.2, 0.8).finished(); + Vector9 x; + x << 0.1, 0.1, 0.1, 0.4, 0.2, 0.8, 0.4, 0.2, 0.8; NavState expected = T1 * NavState::Expmap(x) * T2; Vector y = T2.inverse().Adjoint(x); NavState actual = T1 * T2 * NavState::Expmap(y); EXPECT(assert_equal(expected, actual, 1e-6)); } +/* ************************************************************************* */ +TEST(NavState, ExpmapsGaloreFull) { + Vector xi; + NavState actual; + xi = (Vector(9) << 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9).finished(); + actual = NavState::Expmap(xi); + EXPECT(assert_equal(expm(xi), actual, 1e-6)); + EXPECT(assert_equal(xi, NavState::Logmap(actual), 1e-6)); + + xi = (Vector(9) << 0.1, -0.2, 0.3, -0.4, 0.5, -0.6, -0.7, -0.8, -0.9) + .finished(); + for (double theta = 1.0; 0.3 * theta <= M_PI; theta *= 2) { + Vector txi = xi * theta; + actual = NavState::Expmap(txi); + EXPECT(assert_equal(expm(txi, 30), actual, 1e-6)); + Vector log = NavState::Logmap(actual); + EXPECT(assert_equal(actual, NavState::Expmap(log), 1e-6)); + EXPECT(assert_equal(txi, log, 1e-6)); // not true once wraps + } + + // Works with large v as well, but expm needs 10 iterations! + xi = + (Vector(9) << 0.2, 0.3, -0.8, 100.0, 120.0, -60.0, 12, 14, 45).finished(); + actual = NavState::Expmap(xi); + EXPECT(assert_equal(expm(xi, 10), actual, 1e-5)); + EXPECT(assert_equal(xi, NavState::Logmap(actual), 1e-9)); +} + /* ************************************************************************* */ TEST(NavState, HatAndVee) { // Create a few test vectors @@ -668,8 +729,8 @@ TEST(NavState, manifold_expmap) { TEST(NavState, subgroups) { // Frank - Below only works for correct "Agrawal06iros style expmap // lines in canonical coordinates correspond to Abelian subgroups in SE(3) - Vector d = - (Vector(9) << 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9).finished(); + Vector9 d; + d << 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9; // exp(-d)=inverse(exp(d)) EXPECT(assert_equal(NavState::Expmap(-d), NavState::Expmap(d).inverse())); // exp(5d)=exp(2*d+3*d)=exp(2*d)exp(3*d)=exp(3*d)exp(2*d) @@ -779,21 +840,6 @@ TEST(NavState, Vec) { EXPECT(assert_equal(numericalH, actualH, 1e-9)); } -/* ************************************************************************* */ -TEST(NavState, AdjointMap_GenericVsSpecialized) { - // Create a non-trivial NavState object - const NavState navState(Rot3::Rodrigues(0.1, 0.2, 0.3), Point3(1.0, 2.0, 3.0), Velocity3(0.4, 0.5, 0.6)); - - // Call the specialized AdjointMap - Matrix9 specialized_Adj = navState.AdjointMap(); - - // Call the generic AdjointMap from the base class - Matrix9 generic_Adj = static_cast*>(&navState)->AdjointMap(); - - // Assert that they are equal - EXPECT(assert_equal(specialized_Adj, generic_Adj, 1e-9)); -} - /* ************************************************************************* */ TEST(NavState, AutonomousFlow) { const double dt = 0.1; @@ -814,6 +860,56 @@ TEST(NavState, AutonomousFlow) { CHECK(assert_equal(numericalPhi, analyticalPhi, 1e-9)); } +/* ************************************************************************* */ +double range_proxy(const NavState& navState, const Point3& point) { + return navState.range(point); +} +TEST(NavState, RangeToPoint3) { + Matrix expectedH1, actualH1, expectedH2, actualH2; + + // Establish range is indeed 1. + EXPECT_DOUBLES_EQUAL(1.0, x1.range(l1), 1e-9); + + // Establish range is indeed sqrt(2). + EXPECT_DOUBLES_EQUAL(std::sqrt(2.0), x1.range(l2), 1e-9); + + // Another pair + double actual23 = x2.range(l3, actualH1, actualH2); + EXPECT_DOUBLES_EQUAL(std::sqrt(2.0), actual23, 1e-9); + + // Check numerical derivatives + expectedH1 = numericalDerivative21(range_proxy, x2, l3); + expectedH2 = numericalDerivative22(range_proxy, x2, l3); + EXPECT(assert_equal(expectedH1, actualH1)); + EXPECT(assert_equal(expectedH2, actualH2)); + + // Another test + double actual34 = x3.range(l4, actualH1, actualH2); + EXPECT_DOUBLES_EQUAL(5.0, actual34, 1e-9); + + // Check numerical derivatives + expectedH1 = numericalDerivative21(range_proxy, x3, l4); + expectedH2 = numericalDerivative22(range_proxy, x3, l4); + EXPECT(assert_equal(expectedH1, actualH1)); + EXPECT(assert_equal(expectedH2, actualH2)); +} + +/* ************************************************************************* */ +Unit3 bearing_proxy(const NavState& navState, const Point3& point) { + return navState.bearing(point); +} +TEST(NavState, BearingToPoint3) { + Matrix expectedH1, actualH1, expectedH2, actualH2; + + EXPECT(assert_equal(Unit3(1, 0, 0), x1.bearing(l1, actualH1, actualH2), 1e-9)); + + // Check numerical derivatives + expectedH1 = numericalDerivative21(bearing_proxy, x1, l1); + expectedH2 = numericalDerivative22(bearing_proxy, x1, l1); + EXPECT(assert_equal(expectedH1, actualH1, 1e-5)); + EXPECT(assert_equal(expectedH2, actualH2, 1e-5)); +} + /* ************************************************************************* */ int main() { TestResult tr; diff --git a/gtsam/navigation/tests/testPseudorangeFactor.cpp b/gtsam/navigation/tests/testPseudorangeFactor.cpp new file mode 100644 index 0000000000..7a558534dd --- /dev/null +++ b/gtsam/navigation/tests/testPseudorangeFactor.cpp @@ -0,0 +1,190 @@ +/** + * @file testPseudorangeFactor.cpp + * @brief Unit test for PseudorangeFactor + * @author Sammy Guo + * @date January 18, 2026 + */ + +#include +#include +#include +#include +#include + +using namespace gtsam; + +// ************************************************************************* +TEST(TestPseudorangeFactor, Constructor) { + const auto factor = + PseudorangeFactor(Key(0), Key(1), 0.0, Point3::Zero(), 0.0, + noiseModel::Isotropic::Sigma(1, 1.0)); + + Matrix Hpos, Hbias; + const double error = + factor.evaluateError(Point3::Zero(), 0.0, Hpos, Hbias)[0]; + EXPECT_DOUBLES_EQUAL(0.0, error, 1e-9); + + // Derivatives are technically undefined if the receiver and satellite + // positions are the same (hopefully that's never the case in reality). But + // for all intents and purposes, zero-valued derivatives can substitute for + // undefined gradient at that singularity. So make sure this corner-case does + // not numerically explode: + EXPECT(!Hpos.array().isNaN().any()); + EXPECT(!Hbias.array().isNaN().any()); + EXPECT_DOUBLES_EQUAL(Hpos.norm(), 0.0, 1e-9); + // Clock bias derivative should always be speed-of-light in vacuum: + EXPECT_DOUBLES_EQUAL(Hbias.norm(), 299792458.0, 1e-9); +} + +// ************************************************************************* +TEST(TestPseudorangeFactor, Jacobians1) { + // Synthetic example with exact error/derivatives: + const auto factor = PseudorangeFactor( + Key(0), Key(1), // Receiver position and clock bias keys. + 4.0, // Measured pseudorange. + // Satellite position: + Vector3(0.0, 0.0, 3.0), + 0.0 // Sat clock drift bias. + ); + const double error = factor.evaluateError(Vector3::Zero(), 0.0)[0]; + EXPECT_DOUBLES_EQUAL(-1.0, error, 1e-6); + + Values values; + values.insert(Key(0), Vector3(1.0, 2.0, 3.0)); + values.insert(Key(1), 0.0); + EXPECT_CORRECT_FACTOR_JACOBIANS(factor, values, 1e-3, 1e-5); +} + +// ************************************************************************* +TEST(TestPseudorangeFactor, Jacobians2) { + // Example values borrowed from `SinglePointPositioningExample.ipynb`: + const auto factor = PseudorangeFactor( + Key(0), Key(1), // Receiver position and clock bias keys. + 24874028.989, // Measured pseudorange. + // Satellite position: + Vector3(-5824269.46342, -22935011.26952, -12195522.22428), + -0.00022743876852667193 // Sat clock drift bias. + ); + + Values values; + values.insert( + Key(0), Vector3(-2684418.91084688, -4293361.08683296, 3865365.45451951)); + values.insert(Key(1), 5.377885093511699e-07); + EXPECT_CORRECT_FACTOR_JACOBIANS(factor, values, 1e-3, 1e-5); +} + +// ************************************************************************* +TEST(TestPseudorangeFactor, print) { + // Just make sure `print()` doesn't throw errors + // since there's no elegant way to check stdout. + const auto factor = PseudorangeFactor(); + factor.print(); +} + +// ************************************************************************* +TEST(TestPseudorangeFactor, equals) { + const auto factor1 = PseudorangeFactor(); + const auto factor2 = PseudorangeFactor(1, 2, 0.0, Point3::Zero(), 0.0); + const auto factor3 = + PseudorangeFactor(1, 2, 10.0, Point3(1.0, 2.0, 3.0), 20.0); + + CHECK(factor1.equals(factor1)); + CHECK(factor2.equals(factor2)); + CHECK(!factor1.equals(factor2)); + CHECK(factor2.equals(factor3, 1e99)); + + // Test print: + factor2.print("factor2"); +} + +// ************************************************************************* +TEST(TestDifferentialPseudorangeFactor, Constructor) { + const auto factor = + DifferentialPseudorangeFactor(Key(0), Key(1), Key(2), 0.0, Point3::Zero(), + 0.0, noiseModel::Isotropic::Sigma(1, 1.0)); + + Matrix Hpos, Hbias, Hcorrection; + const double error = factor.evaluateError(Point3::Zero(), 0.0, 0.0, Hpos, + Hbias, Hcorrection)[0]; + EXPECT_DOUBLES_EQUAL(0.0, error, 1e-9); + + // Derivatives are technically undefined if the receiver and satellite + // positions are the same (hopefully that's never the case in reality). But + // for all intents and purposes, zero-valued derivatives can substitute for + // undefined gradient at that singularity. So make sure this corner-case does + // not numerically explode: + EXPECT(!Hpos.array().isNaN().any()); + EXPECT(!Hbias.array().isNaN().any()); + EXPECT(!Hcorrection.array().isNaN().any()); + EXPECT_DOUBLES_EQUAL(Hpos.norm(), 0.0, 1e-9); + // Clock bias derivative should always be speed-of-light in vacuum: + EXPECT_DOUBLES_EQUAL(Hbias.norm(), 299792458.0, 1e-9); + // Correction derivative should be constant -1: + EXPECT_DOUBLES_EQUAL(Hcorrection(0, 0), -1.0, 1e-9); +} + +// ************************************************************************* +TEST(TestDifferentialPseudorangeFactor, Jacobians) { + // Synthetic example with exact error/derivatives: + const auto factor = DifferentialPseudorangeFactor( + Key(0), Key(1), // Receiver position and clock bias keys. + Key(2), // Differential correction keys. + 4.0, // Measured pseudorange. + // Satellite position: + Vector3(0.0, 0.0, 3.0), + 0.0 // Sat clock drift bias. + ); + + // Zero differential correction case: + { + const double error = factor.evaluateError(Vector3::Zero(), 0.0, 0.0)[0]; + EXPECT_DOUBLES_EQUAL(-1.0, error, 1e-6); + } + + // Nontrivial differential correction: + { + const double error = factor.evaluateError(Vector3::Zero(), 0.0, 123.0)[0]; + EXPECT_DOUBLES_EQUAL(-124.0, error, 1e-6); + } + + Values values; + values.insert(Key(0), Vector3(1.0, 2.0, 3.0)); + values.insert(Key(1), 0.0); + values.insert(Key(2), 0.0); + EXPECT_CORRECT_FACTOR_JACOBIANS(factor, values, 1e-3, 1e-5); +} + +// ************************************************************************* +TEST(TestDifferentialPseudorangeFactor, print) { + // Just make sure `print()` doesn't throw errors + // since there's no elegant way to check stdout. + const auto factor = DifferentialPseudorangeFactor(); + factor.print(); +} + +// ************************************************************************* +TEST(TestDifferentialPseudorangeFactor, equals) { + const auto factor1 = DifferentialPseudorangeFactor(); + const auto factor2 = + DifferentialPseudorangeFactor(1, 2, 3, 0.0, Point3::Zero(), 0.0); + const auto factorCorr = + DifferentialPseudorangeFactor(1, 2, 7, 0.0, Point3::Zero(), 0.0); + const auto factor3 = + DifferentialPseudorangeFactor(1, 2, 3, 10.0, Point3(1.0, 2.0, 3.0), 20.0); + + CHECK(factor1.equals(factor1)); + CHECK(factor2.equals(factor2)); + CHECK(!factor1.equals(factor2)); + CHECK(factor2.equals(factor3, 1e99)); + CHECK(!factor2.equals(factorCorr)); + + // Test print: + factor2.print("factor2"); +} + +// ************************************************************************* +int main() { + TestResult tr; + return TestRegistry::runAllTests(tr); +} +// ************************************************************************* \ No newline at end of file diff --git a/gtsam/nonlinear/BatchFixedLagSmoother.cpp b/gtsam/nonlinear/BatchFixedLagSmoother.cpp index 4545c15400..2f929c7db5 100644 --- a/gtsam/nonlinear/BatchFixedLagSmoother.cpp +++ b/gtsam/nonlinear/BatchFixedLagSmoother.cpp @@ -344,16 +344,6 @@ void BatchFixedLagSmoother::marginalize(const KeyVector& marginalizeKeys) { insertFactors(marginalFactors); } -/* ************************************************************************* */ -void BatchFixedLagSmoother::PrintKeySet(const set& keys, - const string& label) { - cout << label; - for(Key key: keys) { - cout << " " << DefaultKeyFormatter(key); - } - cout << endl; -} - /* ************************************************************************* */ void BatchFixedLagSmoother::PrintKeySet(const KeySet& keys, const string& label) { diff --git a/gtsam/nonlinear/BatchFixedLagSmoother.h b/gtsam/nonlinear/BatchFixedLagSmoother.h index f4d06bd243..fb5ce8722b 100644 --- a/gtsam/nonlinear/BatchFixedLagSmoother.h +++ b/gtsam/nonlinear/BatchFixedLagSmoother.h @@ -129,7 +129,7 @@ class GTSAM_EXPORT BatchFixedLagSmoother : public FixedLagSmoother { protected: /** A typedef defining an Key-Factor mapping **/ - typedef std::map > FactorIndex; + typedef std::map FactorIndex; /** The L-M optimization parameters **/ LevenbergMarquardtParams parameters_; @@ -180,8 +180,7 @@ class GTSAM_EXPORT BatchFixedLagSmoother : public FixedLagSmoother { private: /** Private methods for printing debug information */ - static void PrintKeySet(const std::set& keys, const std::string& label); - static void PrintKeySet(const gtsam::KeySet& keys, const std::string& label); + static void PrintKeySet(const KeySet& keys, const std::string& label); static void PrintSymbolicFactor(const NonlinearFactor::shared_ptr& factor); static void PrintSymbolicFactor(const GaussianFactor::shared_ptr& factor); static void PrintSymbolicGraph(const NonlinearFactorGraph& graph, const std::string& label); diff --git a/gtsam/nonlinear/Expression-inl.h b/gtsam/nonlinear/Expression-inl.h index b09bcb3a5b..e324a24069 100644 --- a/gtsam/nonlinear/Expression-inl.h +++ b/gtsam/nonlinear/Expression-inl.h @@ -125,7 +125,7 @@ Expression::Expression(const Expression& expression1, } template -std::set Expression::keys() const { +KeySet Expression::keys() const { return root_->keys(); } diff --git a/gtsam/nonlinear/Expression.h b/gtsam/nonlinear/Expression.h index aa65384c29..3749397ea9 100644 --- a/gtsam/nonlinear/Expression.h +++ b/gtsam/nonlinear/Expression.h @@ -143,7 +143,7 @@ class Expression { } /// Return keys that play in this expression - std::set keys() const; + KeySet keys() const; /// Return dimensions for each argument, as a map void dims(std::map& map) const; diff --git a/gtsam/nonlinear/GaussNewtonOptimizer.cpp b/gtsam/nonlinear/GaussNewtonOptimizer.cpp index c31451e56a..6f0b587865 100644 --- a/gtsam/nonlinear/GaussNewtonOptimizer.cpp +++ b/gtsam/nonlinear/GaussNewtonOptimizer.cpp @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -49,9 +50,15 @@ GaussianFactorGraph::shared_ptr GaussNewtonOptimizer::iterate() { GaussianFactorGraph::shared_ptr linear = graph_.linearize(state_->values); gttoc(GaussNewtonOptimizer_Linearize); - // Solve Factor Graph gttic(GaussNewtonOptimizer_Solve); - const VectorValues delta = solve(*linear, params_); + VectorValues delta; + if (ensureMultifrontalSolver(params_, state_->values)) { + nonlinearMultifrontalSolver_->load(*linear); + nonlinearMultifrontalSolver_->eliminateInPlace(); + delta = nonlinearMultifrontalSolver_->updateSolution(); + } else { + delta = solve(*linear, params_); + } gttoc(GaussNewtonOptimizer_Solve); // Maybe show output diff --git a/gtsam/nonlinear/GncOptimizer.h b/gtsam/nonlinear/GncOptimizer.h index 0fe576159a..3f4f769f59 100644 --- a/gtsam/nonlinear/GncOptimizer.h +++ b/gtsam/nonlinear/GncOptimizer.h @@ -26,6 +26,9 @@ #pragma once +#include + +#include #include #include #include @@ -36,7 +39,35 @@ namespace gtsam { * Equivalent to chi2inv in Matlab. */ static double Chi2inv(const double alpha, const size_t dofs) { - return internal::chi_squared_quantile(dofs, alpha); + return internal::chiSquaredQuantile(dofs, alpha); +} + +/** + * @enum Type + * @brief Enum to classify factor types in GNC optimization. + */ +enum class Type { + Normal, ///< Normal case. + Inlier, ///< Factor is a known inlier. + Outlier, ///< Factor is a known outlier. + NonNoiseModel, ///< Factor does not have a noise model + NullPointer ///< Factor pointer is null. +}; + +bool isNullType(Type type) { + return type == Type::NullPointer; +} + +bool isNonNoiseModelType(Type type) { + return type == Type::NonNoiseModel; +} + +bool needsWeightUpdate(Type type) { + return type == Type::Normal; +} + +bool hasNoise(Type type) { + return type == Type::Normal || type == Type::Inlier || type == Type::Outlier; } /* ************************************************************************* */ @@ -47,11 +78,24 @@ class GncOptimizer { typedef typename GncParameters::OptimizerType BaseOptimizer; private: - NonlinearFactorGraph nfg_; ///< Original factor graph to be solved by GNC. - Values state_; ///< Initial values to be used at each iteration by GNC. - GncParameters params_; ///< GNC parameters. - Vector weights_; ///< Weights associated to each factor in GNC (this could be a local variable in optimize, but it is useful to make it accessible from outside). - Vector barcSq_; ///< Inlier thresholds. A factor is considered an inlier if factor.error() < barcSq_[i] (where i is the position of the factor in the factor graph. Note that factor.error() whitens by the covariance. + /// Original factor graph to be solved by GNC. + NonlinearFactorGraph nfg_; + + /// Initial values to be used at each iteration by GNC. + Values state_; + + /// GNC parameters. + GncParameters params_; + + /// Weights associated to each factor in GNC (accessible from outside). + Vector weights_; + + /// Inlier thresholds. A factor is considered an inlier if factor.error() < + /// barcSq_[i]. Note: factor.error() whitens by the covariance. + Vector barcSq_; + + /// Cached factor types for GNC. + std::vector factorTypes_; public: /// Constructor. @@ -62,41 +106,53 @@ class GncOptimizer { // make sure all noiseModels are Gaussian or convert to Gaussian nfg_.resize(graph.size()); + factorTypes_.assign(graph.size(), Type::NullPointer); for (size_t i = 0; i < graph.size(); i++) { - if (graph[i]) { - NoiseModelFactor::shared_ptr factor = graph.at(i); - auto robust = - std::dynamic_pointer_cast(factor->noiseModel()); - // if the factor has a robust loss, we remove the robust loss - nfg_[i] = robust ? factor-> cloneWithNewNoiseModel(robust->noise()) : factor; + if (!graph[i]) { + factorTypes_[i] = Type::NullPointer; + continue; } + NoiseModelFactor::shared_ptr factor = graph.at(i); + if (!factor) { + if (!params.allowNonNoiseModelFactors) { + throw std::runtime_error("GncOptimizer::constructor: the user must set allowNonNoiseModelFactors as" + " true if the factor graph contains factors without noise model."); + } + nfg_[i] = graph[i]; + factorTypes_[i] = Type::NonNoiseModel; + continue; + } + auto robust = + std::dynamic_pointer_cast(factor->noiseModel()); + // if the factor has a robust loss, we remove the robust loss + nfg_[i] = robust ? factor-> cloneWithNewNoiseModel(robust->noise()) : factor; + factorTypes_[i] = Type::Normal; } - // check that known inliers and outliers make sense: - std::vector inconsistentlySpecifiedWeights; // measurements the user has incorrectly specified - // to be BOTH known inliers and known outliers - std::set_intersection(params.knownInliers.begin(),params.knownInliers.end(), - params.knownOutliers.begin(),params.knownOutliers.end(), - std::inserter(inconsistentlySpecifiedWeights, inconsistentlySpecifiedWeights.begin())); - if(inconsistentlySpecifiedWeights.size() > 0){ // if we have inconsistently specified weights, we throw an exception - params.print("params\n"); - throw std::runtime_error("GncOptimizer::constructor: the user has selected one or more measurements" - " to be BOTH a known inlier and a known outlier."); - } // check that known inliers are in the graph for (size_t i = 0; i < params.knownInliers.size(); i++){ - if( params.knownInliers[i] > nfg_.size()-1 ){ // outside graph + if( params.knownInliers[i] > nfg_.size()-1 || isNullType(factorTypes_[params.knownInliers[i]])) { // outside graph throw std::runtime_error("GncOptimizer::constructor: the user has selected one or more measurements" "that are not in the factor graph to be known inliers."); } + if (!isNonNoiseModelType(factorTypes_[params.knownInliers[i]])) { + factorTypes_[params.knownInliers[i]] = Type::Inlier; + } } // check that known outliers are in the graph for (size_t i = 0; i < params.knownOutliers.size(); i++){ - if( params.knownOutliers[i] > nfg_.size()-1 ){ // outside graph + if( params.knownOutliers[i] > nfg_.size()-1 || isNullType(factorTypes_[params.knownOutliers[i]])) { // outside graph throw std::runtime_error("GncOptimizer::constructor: the user has selected one or more measurements" "that are not in the factor graph to be known outliers."); } + if (!needsWeightUpdate(factorTypes_[params.knownOutliers[i]])) { + // it can only be Normal, Inlier, or NonNoiseModel here so this works + throw std::runtime_error("GncOptimizer::constructor: the user has selected one or more measurements" + " to be an outlier that is either an inlier or a non noise model factor."); + } + factorTypes_[params.knownOutliers[i]] = Type::Outlier; } + // initialize weights (if we don't have prior knowledge of inliers/outliers // the weights are all initialized to 1. weights_ = initializeWeightsFromKnownInliersAndOutliers(); @@ -130,14 +186,14 @@ class GncOptimizer { void setInlierCostThresholdsAtProbability(const double alpha) { barcSq_ = Vector::Ones(nfg_.size()); // initialize for (size_t k = 0; k < nfg_.size(); k++) { - if (nfg_[k]) { + if (hasNoise(factorTypes_[k])) { barcSq_[k] = 0.5 * Chi2inv(alpha, nfg_[k]->dim()); // 0.5 derives from the error definition in gtsam } } } /** Set weights for each factor. This is typically not needed, but - * provides an extra interface for the user to initialize the weightst + * provides an extra interface for the user to initialize the weights * */ void setWeights(const Vector w) { if (size_t(w.size()) != nfg_.size()) { @@ -173,6 +229,7 @@ class GncOptimizer { Vector initializeWeightsFromKnownInliersAndOutliers() const{ Vector weights = Vector::Ones(nfg_.size()); + // we do not loop through the factorTypes_ vector because in general params_.knownOutliers will always be smaller for (size_t i = 0; i < params_.knownOutliers.size(); i++){ weights[ params_.knownOutliers[i] ] = 0.0; // known to be outliers } @@ -181,6 +238,7 @@ class GncOptimizer { /// Compute optimal solution using graduated non-convexity. Values optimize() { + validateLossSchedulerCombination(); NonlinearFactorGraph graph_initial = this->makeWeightedGraph(weights_); BaseOptimizer baseOptimizer( graph_initial, state_, params_.baseOptimizerParams); @@ -193,7 +251,12 @@ class GncOptimizer { // maximum residual errors at initialization // For GM: if residual error is small, mu -> 0 // For TLS: if residual error is small, mu -> -1 - int nrUnknownInOrOut = nfg_.size() - ( params_.knownInliers.size() + params_.knownOutliers.size() ); + int nrUnknownInOrOut = 0; + for (Type t : factorTypes_) { + if (needsWeightUpdate(t)) { + nrUnknownInOrOut++; + } + } // ^^ number of measurements that are not known to be inliers or outliers (GNC will need to figure them out) if (mu <= 0 || nrUnknownInOrOut == 0) { // no need to even call GNC in this case if (mu <= 0 && params_.verbosity >= GncParameters::Verbosity::SUMMARY) { @@ -268,6 +331,18 @@ class GncOptimizer { return result; } + void validateLossSchedulerCombination() const { + if (params_.lossType == GncLossType::GM && + params_.scheduler != GncScheduler::Linear) { + throw std::runtime_error( + "GncOptimizer::optimize: scheduler must be Linear for GM."); + } + if (params_.lossType == GncLossType::TLS) { + // Linear and SuperLinear are both valid for TLS. + return; + } + } + /// Initialize the gnc parameter mu such that loss is approximately convex (remark 5 in GNC paper). double initializeMu() const { @@ -279,7 +354,7 @@ class GncOptimizer { Since barcSq_ can be different for each factor, we compute the max of the quantity in remark 5 in GNC paper */ for (size_t k = 0; k < nfg_.size(); k++) { - if (nfg_[k]) { + if (hasNoise(factorTypes_[k])) { mu_init = std::max(mu_init, 2 * nfg_[k]->error(state_) / barcSq_[k]); } } @@ -293,7 +368,7 @@ class GncOptimizer { */ mu_init = std::numeric_limits::infinity(); for (size_t k = 0; k < nfg_.size(); k++) { - if (nfg_[k]) { + if (hasNoise(factorTypes_[k])) { double rk = nfg_[k]->error(state_); mu_init = (2 * rk - barcSq_[k]) > 0 ? // if positive, update mu, otherwise keep same std::min(mu_init, barcSq_[k] / (2 * rk - barcSq_[k]) ) : mu_init; @@ -321,7 +396,17 @@ class GncOptimizer { return std::max(1.0, mu / params_.muStep); case GncLossType::TLS: // increases mu at each iteration (original cost is recovered for mu -> inf) - return mu * params_.muStep; + switch (params_.scheduler) { + case GncScheduler::SuperLinear: { + if (mu < 1) return std::min(std::sqrt(mu) * params_.muStep, params_.muMax); + return std::min(mu * params_.muStep, params_.muMax); + } + case GncScheduler::Linear: { + return mu * params_.muStep; + } + default: + throw std::runtime_error("GncOptimizer::updateMu: unknown scheduler type."); + } default: throw std::runtime_error( "GncOptimizer::updateMu: called with unknown loss type."); @@ -398,8 +483,13 @@ class GncOptimizer { NonlinearFactorGraph newGraph; newGraph.resize(nfg_.size()); for (size_t i = 0; i < nfg_.size(); i++) { - if (nfg_[i]) { - auto factor = nfg_.at(i); + if (!isNullType(factorTypes_[i])) { + if (!hasNoise(factorTypes_[i])) { + // Keep non NoiseModel factors same. + newGraph[i] = nfg_[i]; + continue; + } + auto factor = std::static_pointer_cast(nfg_[i]); auto noiseModel = std::dynamic_pointer_cast( factor->noiseModel()); if (noiseModel) { @@ -419,44 +509,50 @@ class GncOptimizer { Vector calculateWeights(const Values& currentEstimate, const double mu) { Vector weights = initializeWeightsFromKnownInliersAndOutliers(); - // do not update the weights that the user has decided are known inliers - std::vector allWeights; - for (size_t k = 0; k < nfg_.size(); k++) { - allWeights.push_back(k); - } - std::vector knownWeights; - std::set_union(params_.knownInliers.begin(), params_.knownInliers.end(), - params_.knownOutliers.begin(), params_.knownOutliers.end(), - std::inserter(knownWeights, knownWeights.begin())); - - std::vector unknownWeights; - std::set_difference(allWeights.begin(), allWeights.end(), - knownWeights.begin(), knownWeights.end(), - std::inserter(unknownWeights, unknownWeights.begin())); - - // update weights of known inlier/outlier measurements + // update weights of unknown measurements switch (params_.lossType) { case GncLossType::GM: { // use eq (12) in GNC paper - for (size_t k : unknownWeights) { - if (nfg_[k]) { + for (size_t k = 0; k < nfg_.size(); k++) { + if (needsWeightUpdate(factorTypes_[k])) { double u2_k = nfg_[k]->error(currentEstimate); // squared (and whitened) residual - weights[k] = std::pow( - (mu * barcSq_[k]) / (u2_k + mu * barcSq_[k]), 2); + weights[k] = noiseModel::mEstimator::GemanMcClure::Weight(u2_k, mu * barcSq_[k]); } } return weights; } - case GncLossType::TLS: { // use eq (14) in GNC paper - for (size_t k : unknownWeights) { - if (nfg_[k]) { + case GncLossType::TLS: { + for (size_t k = 0; k < nfg_.size(); k++) { + if (needsWeightUpdate(factorTypes_[k])) { double u2_k = nfg_[k]->error(currentEstimate); // squared (and whitened) residual - double upperbound = (mu + 1) / mu * barcSq_[k]; - double lowerbound = mu / (mu + 1) * barcSq_[k]; - weights[k] = std::sqrt(barcSq_[k] * mu * (mu + 1) / u2_k) - mu; - if (u2_k >= upperbound || weights[k] < 0) { - weights[k] = 0; - } else if (u2_k <= lowerbound || weights[k] > 1) { - weights[k] = 1; + switch (params_.scheduler) { + case GncScheduler::SuperLinear: { + double lowerbound = barcSq_[k]; + double upperbound = ((mu + 1.0) * (mu + 1.0) / (mu * mu)) * barcSq_[k]; + auto w = noiseModel::mEstimator::TruncatedLeastSquares::Weight(u2_k, lowerbound, upperbound); + if (w) { + weights[k] = *w; + } + else { + double transition_weight = std::sqrt(barcSq_[k] / u2_k) * (mu + 1.0) - mu; + weights[k] = std::clamp(transition_weight, 0.0, 1.0); + } + break; + } + case GncScheduler::Linear: { // use eq (14) in GNC paper + double upperbound = ((mu + 1.0) / mu) * barcSq_[k]; + double lowerbound = (mu / (mu + 1.0)) * barcSq_[k]; + auto w = noiseModel::mEstimator::TruncatedLeastSquares::Weight(u2_k, lowerbound, upperbound); + if (w) { + weights[k] = *w; + } + else { + double transition_weight = std::sqrt(barcSq_[k] * mu * (mu + 1.0) / u2_k) - mu; + weights[k] = std::clamp(transition_weight, 0.0, 1.0); + } + break; + } + default: + throw std::runtime_error("GncOptimizer::calculateWeights: unknown scheduler type."); } } } diff --git a/gtsam/nonlinear/GncParams.h b/gtsam/nonlinear/GncParams.h index b1237b7901..436f5d0821 100644 --- a/gtsam/nonlinear/GncParams.h +++ b/gtsam/nonlinear/GncParams.h @@ -38,6 +38,13 @@ enum GncLossType { TLS /*Truncated least squares*/ }; +/// Choice of GNC scheduling strategy. +/// SuperLinear reference https://openaccess.thecvf.com/content/CVPR2023/papers/Peng_On_the_Convergence_of_IRLS_and_Its_Variants_in_Outlier-Robust_CVPR_2023_paper.pdf +enum class GncScheduler { + Linear, + SuperLinear +}; + template class GncParams { public: @@ -67,11 +74,14 @@ class GncParams { BaseOptimizerParameters baseOptimizerParams; ///< Optimization parameters used to solve the weighted least squares problem at each GNC iteration /// any other specific GNC parameters: GncLossType lossType = TLS; ///< Default loss + GncScheduler scheduler = GncScheduler::Linear; ///< Default scheduler size_t maxIterations = 100; ///< Maximum number of iterations double muStep = 1.4; ///< Multiplicative factor to reduce/increase the mu in gnc double relativeCostTol = 1e-5; ///< If relative cost change is below this threshold, stop iterating double weightsTol = 1e-4; ///< If the weights are within weightsTol from being binary, stop iterating (only for TLS) + double muMax = 1e16; ///< Maximum value of mu in GNC, acts as a cap (only for TLS) Verbosity verbosity = SILENT; ///< Verbosity level + bool allowNonNoiseModelFactors = false; ///< If true, factors without noise model are not reweighted and not not included in mu calculation /// Use IndexVector for inliers and outliers since it is fast using IndexVector = FastVector; @@ -85,6 +95,11 @@ class GncParams { lossType = type; } + /// Set the scheduler type. + void setScheduler(const GncScheduler s) { + scheduler = s; + } + /// Set the maximum number of iterations in GNC (changing the max nr of iters might lead to less accurate solutions and is not recommended). void setMaxIterations(const size_t maxIter) { std::cout @@ -137,13 +152,19 @@ class GncParams { std::sort(knownOutliers.begin(), knownOutliers.end()); } + void setAllowNonNoiseModelFactors(bool allow) { + allowNonNoiseModelFactors = allow; + } + /// Equals. bool equals(const GncParams& other, double tol = 1e-9) const { return baseOptimizerParams.equals(other.baseOptimizerParams) && lossType == other.lossType && maxIterations == other.maxIterations && std::fabs(muStep - other.muStep) <= tol + && scheduler == other.scheduler && verbosity == other.verbosity && knownInliers == other.knownInliers - && knownOutliers == other.knownOutliers; + && knownOutliers == other.knownOutliers + && allowNonNoiseModelFactors == other.allowNonNoiseModelFactors; } /// Print. @@ -159,6 +180,16 @@ class GncParams { default: throw std::runtime_error("GncParams::print: unknown loss type."); } + switch (scheduler) { + case GncScheduler::Linear: + std::cout << "scheduler: Linear" << "\n"; + break; + case GncScheduler::SuperLinear: + std::cout << "scheduler: SuperLinear" << "\n"; + break; + default: + throw std::runtime_error("GncParams::print: unknown scheduler type."); + } std::cout << "maxIterations: " << maxIterations << "\n"; std::cout << "muStep: " << muStep << "\n"; std::cout << "relativeCostTol: " << relativeCostTol << "\n"; @@ -168,6 +199,7 @@ class GncParams { std::cout << "knownInliers: " << knownInliers[i] << "\n"; for (size_t i = 0; i < knownOutliers.size(); i++) std::cout << "knownOutliers: " << knownOutliers[i] << "\n"; + std::cout << "allowNonNoiseModelFactors: " << allowNonNoiseModelFactors << "\n"; baseOptimizerParams.print("Base optimizer params: "); } }; diff --git a/gtsam/nonlinear/IncrementalFixedLagSmoother.cpp b/gtsam/nonlinear/IncrementalFixedLagSmoother.cpp index 394eb77b10..419543c0ac 100644 --- a/gtsam/nonlinear/IncrementalFixedLagSmoother.cpp +++ b/gtsam/nonlinear/IncrementalFixedLagSmoother.cpp @@ -165,7 +165,7 @@ void IncrementalFixedLagSmoother::createOrderingConstraints( } /* ************************************************************************* */ -void IncrementalFixedLagSmoother::PrintKeySet(const std::set& keys, +void IncrementalFixedLagSmoother::PrintKeySet(const KeySet& keys, const std::string& label) { std::cout << label; for(Key key: keys) { diff --git a/gtsam/nonlinear/IncrementalFixedLagSmoother.h b/gtsam/nonlinear/IncrementalFixedLagSmoother.h index 1e4263d4b5..056211a428 100644 --- a/gtsam/nonlinear/IncrementalFixedLagSmoother.h +++ b/gtsam/nonlinear/IncrementalFixedLagSmoother.h @@ -142,7 +142,7 @@ class GTSAM_EXPORT IncrementalFixedLagSmoother: public FixedLagSmoother { private: /** Private methods for printing debug information */ - static void PrintKeySet(const std::set& keys, const std::string& label = + static void PrintKeySet(const KeySet& keys, const std::string& label = "Keys:"); static void PrintSymbolicFactor(const GaussianFactor::shared_ptr& factor); static void PrintSymbolicGraph(const GaussianFactorGraph& graph, diff --git a/gtsam/nonlinear/LMDampingParams.h b/gtsam/nonlinear/LMDampingParams.h new file mode 100644 index 0000000000..809869b60f --- /dev/null +++ b/gtsam/nonlinear/LMDampingParams.h @@ -0,0 +1,54 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file LMDampingParams.h + * @brief Parameters controlling LM-style damping for NonlinearMultifrontalSolver. + * @author Frank Dellaert + * @date January 2026 + */ + +#pragma once + +namespace gtsam { + +/** + * Parameters controlling LM-style damping as applied by + * `gtsam::NonlinearMultifrontalSolver`. + * + * @note These parameters are intentionally in a standalone header so they can + * be referenced from nonlinear optimizer parameter types without pulling in + * the full solver headers. + */ +struct LMDampingParams { + /// If true, use diagonal damping (LM) instead of identity damping. + bool diagonalDamping = false; + + /** + * If true, use the exact diagonal of the linearized system Hessian + * `diag(J^T J)` (computed via `GaussianFactorGraph::hessianDiagonal()`) when + * applying diagonal damping. + * + * If false, use the diagonal of each clique's assembled information matrix, + * which includes Schur complement contributions and can differ from + * `diag(J^T J)`. + */ + bool exactHessianDiagonal = false; + + /// Clamp minimum diagonal value used for diagonal damping. + double minDiagonal = 1e-6; + + /// Clamp maximum diagonal value used for diagonal damping. + double maxDiagonal = 1e32; +}; + +} // namespace gtsam + diff --git a/gtsam/nonlinear/LevenbergMarquardtOptimizer.cpp b/gtsam/nonlinear/LevenbergMarquardtOptimizer.cpp index 90a4cc68d3..2d141d2eb6 100644 --- a/gtsam/nonlinear/LevenbergMarquardtOptimizer.cpp +++ b/gtsam/nonlinear/LevenbergMarquardtOptimizer.cpp @@ -19,6 +19,7 @@ */ #include +#include #include #include #include @@ -92,7 +93,7 @@ GaussianFactorGraph LevenbergMarquardtOptimizer::buildDampedSystem( if (params_.verbosityLM >= LevenbergMarquardtParams::DAMPED) std::cout << "building damped system with lambda " << currentState->lambda << std::endl; - if (params_.diagonalDamping) + if (params_.dampingParams.diagonalDamping) return currentState->buildDampedSystem(linear, sqrtHessianDiagonal); else return currentState->buildDampedSystem(linear); @@ -137,8 +138,6 @@ bool LevenbergMarquardtOptimizer::tryLambda(const GaussianFactorGraph& linear, if (verbose) cout << "trying lambda = " << currentState->lambda << endl; - // Build damped system for this lambda (adds prior factors that make it like gradient descent) - auto dampedSystem = buildDampedSystem(linear, sqrtHessianDiagonal); // Try solving double modelFidelity = 0.0; @@ -151,9 +150,19 @@ bool LevenbergMarquardtOptimizer::tryLambda(const GaussianFactorGraph& linear, bool systemSolvedSuccessfully; try { - // ============ Solve is where most computation happens !! ================= - delta = solve(dampedSystem, params_); + // ============ This is where most computation happens !! ================= + if (nonlinearMultifrontalSolver_) { + nonlinearMultifrontalSolver_->eliminateInPlace(currentState->lambda); + delta = nonlinearMultifrontalSolver_->updateSolution(); + } else { + // Build damped system for this lambda (adds prior factors that make it + // like gradient descent) + GaussianFactorGraph dampedSystem = + buildDampedSystem(linear, sqrtHessianDiagonal); + delta = solve(dampedSystem, params_); + } systemSolvedSuccessfully = true; + // ======================================================================== } catch (const IndeterminantLinearSystemException&) { systemSolvedSuccessfully = false; } @@ -166,13 +175,20 @@ bool LevenbergMarquardtOptimizer::tryLambda(const GaussianFactorGraph& linear, // Compute the old linearized error as it is not the same // as the nonlinear error when robust noise models are used. - double oldLinearizedError = linear.error(VectorValues::Zero(delta)); - double newlinearizedError = linear.error(delta); + double oldLinearizedError = 0.0; + double newLinearizedError = 0.0; + double linearizedCostChange = 0.0; + if (nonlinearMultifrontalSolver_) { + linearizedCostChange = nonlinearMultifrontalSolver_->deltaError( + &oldLinearizedError, &newLinearizedError); + } else { + linearizedCostChange = + linear.deltaError(delta, &oldLinearizedError, &newLinearizedError); + } // cost change in the linearized system (old - new) - double linearizedCostChange = oldLinearizedError - newlinearizedError; if (verbose) - cout << "newlinearizedError = " << newlinearizedError + cout << "newLinearizedError = " << newLinearizedError << " linearizedCostChange = " << linearizedCostChange << endl; if (linearizedCostChange >= 0) { // step is valid @@ -279,6 +295,12 @@ GaussianFactorGraph::shared_ptr LevenbergMarquardtOptimizer::iterate() { cout << "linearizing = " << endl; GaussianFactorGraph::shared_ptr linear = linearize(); + const bool useMultifrontal = + ensureMultifrontalSolver(params_, currentState->values); + if (useMultifrontal) { + nonlinearMultifrontalSolver_->load(*linear); + } + if(currentState->totalNumberInnerIterations==0) { // write initial error writeLogFile(currentState->error); @@ -290,10 +312,12 @@ GaussianFactorGraph::shared_ptr LevenbergMarquardtOptimizer::iterate() { // Only calculate diagonal of Hessian (expensive) once per outer iteration, if we need it VectorValues sqrtHessianDiagonal; - if (params_.diagonalDamping) { + if (params_.dampingParams.diagonalDamping && !useMultifrontal) { sqrtHessianDiagonal = linear->hessianDiagonal(); for (auto& [key, value] : sqrtHessianDiagonal) { - value = value.cwiseMax(params_.minDiagonal).cwiseMin(params_.maxDiagonal).cwiseSqrt(); + value = value.cwiseMax(params_.dampingParams.minDiagonal) + .cwiseMin(params_.dampingParams.maxDiagonal) + .cwiseSqrt(); } } @@ -307,4 +331,3 @@ GaussianFactorGraph::shared_ptr LevenbergMarquardtOptimizer::iterate() { } } /* namespace gtsam */ - diff --git a/gtsam/nonlinear/LevenbergMarquardtParams.cpp b/gtsam/nonlinear/LevenbergMarquardtParams.cpp index 39b7731739..e7c8fa7815 100644 --- a/gtsam/nonlinear/LevenbergMarquardtParams.cpp +++ b/gtsam/nonlinear/LevenbergMarquardtParams.cpp @@ -97,13 +97,15 @@ void LevenbergMarquardtParams::print(const std::string& str) const { std::cout << " lambdaUpperBound: " << lambdaUpperBound << "\n"; std::cout << " lambdaLowerBound: " << lambdaLowerBound << "\n"; std::cout << " minModelFidelity: " << minModelFidelity << "\n"; - std::cout << " diagonalDamping: " << diagonalDamping << "\n"; - std::cout << " minDiagonal: " << minDiagonal << "\n"; - std::cout << " maxDiagonal: " << maxDiagonal << "\n"; + std::cout << " diagonalDamping: " << dampingParams.diagonalDamping + << "\n"; + std::cout << " exactHessianDiagonalMF: " << dampingParams.exactHessianDiagonal + << "\n"; + std::cout << " minDiagonal: " << dampingParams.minDiagonal << "\n"; + std::cout << " maxDiagonal: " << dampingParams.maxDiagonal << "\n"; std::cout << " verbosityLM: " << verbosityLMTranslator(verbosityLM) << "\n"; std::cout.flush(); } } /* namespace gtsam */ - diff --git a/gtsam/nonlinear/LevenbergMarquardtParams.h b/gtsam/nonlinear/LevenbergMarquardtParams.h index b2eae36215..7a16cbc157 100644 --- a/gtsam/nonlinear/LevenbergMarquardtParams.h +++ b/gtsam/nonlinear/LevenbergMarquardtParams.h @@ -21,6 +21,7 @@ #pragma once #include +#include #include namespace gtsam { @@ -53,16 +54,12 @@ class GTSAM_EXPORT LevenbergMarquardtParams: public NonlinearOptimizerParams { VerbosityLM verbosityLM; ///< The verbosity level for Levenberg-Marquardt (default: SILENT), see also NonlinearOptimizerParams::verbosity double minModelFidelity; ///< Lower bound for the modelFidelity to accept the result of an LM iteration std::string logFile; ///< an optional CSV log file, with [iteration, time, error, lambda] - bool diagonalDamping; ///< if true, use diagonal of Hessian bool useFixedLambdaFactor; ///< if true applies constant increase (or decrease) to lambda according to lambdaFactor - double minDiagonal; ///< when using diagonal damping saturates the minimum diagonal entries (default: 1e-6) - double maxDiagonal; ///< when using diagonal damping saturates the maximum diagonal entries (default: 1e32) + /// Parameters controlling LM damping behavior (legacy and `MULTIFRONTAL_SOLVER`). + LMDampingParams dampingParams; LevenbergMarquardtParams() - : verbosityLM(SILENT), - diagonalDamping(false), - minDiagonal(1e-6), - maxDiagonal(1e32) { + : verbosityLM(SILENT) { SetLegacyDefaults(this); } @@ -77,8 +74,11 @@ class GTSAM_EXPORT LevenbergMarquardtParams: public NonlinearOptimizerParams { p->lambdaUpperBound = 1e5; p->lambdaLowerBound = 0.0; p->minModelFidelity = 1e-3; - p->diagonalDamping = false; p->useFixedLambdaFactor = true; + p->dampingParams.diagonalDamping = false; + p->dampingParams.exactHessianDiagonal = false; + p->dampingParams.minDiagonal = 1e-6; + p->dampingParams.maxDiagonal = 1e32; } // these do seem to work better for SFM @@ -93,8 +93,11 @@ class GTSAM_EXPORT LevenbergMarquardtParams: public NonlinearOptimizerParams { p->lambdaInitial = 1e-04; p->lambdaFactor = 2.0; p->minModelFidelity = 1e-3; // options.min_relative_decrease in CERES - p->diagonalDamping = true; p->useFixedLambdaFactor = false; // This is important + p->dampingParams.diagonalDamping = true; + p->dampingParams.exactHessianDiagonal = false; + p->dampingParams.minDiagonal = 1e-6; + p->dampingParams.maxDiagonal = 1e32; } static LevenbergMarquardtParams LegacyDefaults() { @@ -127,7 +130,7 @@ class GTSAM_EXPORT LevenbergMarquardtParams: public NonlinearOptimizerParams { /// @name Getters/Setters, mainly for wrappers. Use fields above in C++. /// @{ - bool getDiagonalDamping() const { return diagonalDamping; } + bool getDiagonalDamping() const { return dampingParams.diagonalDamping; } double getlambdaFactor() const { return lambdaFactor; } double getlambdaInitial() const { return lambdaInitial; } double getlambdaLowerBound() const { return lambdaLowerBound; } @@ -136,7 +139,7 @@ class GTSAM_EXPORT LevenbergMarquardtParams: public NonlinearOptimizerParams { std::string getLogFile() const { return logFile; } std::string getVerbosityLM() const { return verbosityLMTranslator(verbosityLM);} - void setDiagonalDamping(bool flag) { diagonalDamping = flag; } + void setDiagonalDamping(bool flag) { dampingParams.diagonalDamping = flag; } void setlambdaFactor(double value) { lambdaFactor = value; } void setlambdaInitial(double value) { lambdaInitial = value; } void setlambdaLowerBound(double value) { lambdaLowerBound = value; } diff --git a/gtsam/nonlinear/NonlinearEquality.h b/gtsam/nonlinear/NonlinearEquality.h index baedca43a2..2bc0d71e12 100644 --- a/gtsam/nonlinear/NonlinearEquality.h +++ b/gtsam/nonlinear/NonlinearEquality.h @@ -45,7 +45,7 @@ template class NonlinearEquality: public NonlinearEqualityConstraint { public: - typedef VALUE T; + using T = VALUE; private: @@ -64,6 +64,9 @@ class NonlinearEquality: public NonlinearEqualityConstraint { // typedef to base class using Base = NonlinearEqualityConstraint; + GTSAM_CONCEPT_MANIFOLD_TYPE(T) + GTSAM_CONCEPT_TESTABLE_TYPE(T) + public: /// Function that compares two values. @@ -71,11 +74,9 @@ class NonlinearEquality: public NonlinearEqualityConstraint { CompareFunction compare_; /// Default constructor - only for serialization - NonlinearEquality() { - } + NonlinearEquality() {} - ~NonlinearEquality() override { - } + ~NonlinearEquality() override {} /// @name Standard Constructors /// @{ @@ -102,9 +103,7 @@ class NonlinearEquality: public NonlinearEqualityConstraint { compare_(_compare) { } - Key key() const { - return keys().front(); - } + Key key() const { return keys().front(); } /// @} /// @name Testable @@ -141,6 +140,9 @@ class NonlinearEquality: public NonlinearEqualityConstraint { } } + /// Whether this constraint should be treated as hard. + bool isHardConstraint() const override { return !allow_error_; } + /// Error function Vector evaluateError(const T& xj, OptionalMatrixType H = nullptr) const { const size_t nj = traits::GetDimension(feasible_); @@ -222,7 +224,7 @@ struct traits> : Testable> {}; template class NonlinearEquality1: public NonlinearEqualityConstraint { public: - typedef VALUE X; + typedef VALUE T; protected: typedef NonlinearEqualityConstraint Base; @@ -232,10 +234,10 @@ class NonlinearEquality1: public NonlinearEqualityConstraint { NonlinearEquality1() { } - X value_; /// fixed value for variable + T value_; /// fixed value for variable - GTSAM_CONCEPT_MANIFOLD_TYPE(X) - GTSAM_CONCEPT_TESTABLE_TYPE(X) + GTSAM_CONCEPT_MANIFOLD_TYPE(T) + GTSAM_CONCEPT_TESTABLE_TYPE(T) public: @@ -247,8 +249,8 @@ class NonlinearEquality1: public NonlinearEqualityConstraint { * @param key the key for the unknown variable to be constrained * @param mu a parameter which really turns this into a strong prior */ - NonlinearEquality1(const X& value, Key key, double mu = 1000.0) - : Base(noiseModel::Constrained::All(traits::GetDimension(value), + NonlinearEquality1(const T& value, Key key, double mu = 1000.0) + : Base(noiseModel::Constrained::All(traits::GetDimension(value), std::abs(mu)), KeyVector{key}), value_(value) {} @@ -265,15 +267,15 @@ class NonlinearEquality1: public NonlinearEqualityConstraint { Key key() const { return keys().front(); } /// g(x) with optional derivative - Vector evaluateError(const X& x1, OptionalMatrixType H = nullptr) const { + Vector evaluateError(const T& x1, OptionalMatrixType H = nullptr) const { if (H) - (*H) = Matrix::Identity(traits::GetDimension(x1),traits::GetDimension(x1)); + (*H) = Matrix::Identity(traits::GetDimension(x1),traits::GetDimension(x1)); // manifold equivalent of h(x)-z -> log(z,h(x)) - return traits::Local(value_,x1); + return traits::Local(value_,x1); } Vector unwhitenedError(const Values& x, OptionalMatrixVecType H = nullptr) const override { - X x1 = x.at(key()); + T x1 = x.at(key()); if (H) { return evaluateError(x1, &(H->front())); } else { @@ -287,7 +289,7 @@ class NonlinearEquality1: public NonlinearEqualityConstraint { std::cout << s << ": NonlinearEquality1(" << keyFormatter(this->key()) << ")," << "\n"; this->noiseModel_->print(); - traits::Print(value_, "Value"); + traits::Print(value_, "Value"); } GTSAM_MAKE_ALIGNED_OPERATOR_NEW @@ -326,6 +328,7 @@ class NonlinearEquality2 : public NonlinearEqualityConstraint { typedef NonlinearEquality2 This; GTSAM_CONCEPT_MANIFOLD_TYPE(T) + GTSAM_CONCEPT_TESTABLE_TYPE(T) /// Default constructor to allow for serialization NonlinearEquality2() {} @@ -333,7 +336,6 @@ class NonlinearEquality2 : public NonlinearEqualityConstraint { public: typedef std::shared_ptr> shared_ptr; - /** * Constructor * @param key1 the key for the first unknown variable to be constrained @@ -343,6 +345,7 @@ class NonlinearEquality2 : public NonlinearEqualityConstraint { NonlinearEquality2(Key key1, Key key2, double mu = 1e4) : Base(noiseModel::Constrained::All(traits::dimension, std::abs(mu)), KeyVector{key1, key2}) {} + ~NonlinearEquality2() override {} /// @return a deep copy of this factor diff --git a/gtsam/nonlinear/NonlinearFactor.h b/gtsam/nonlinear/NonlinearFactor.h index f3b8b73185..ab03fe2ff8 100644 --- a/gtsam/nonlinear/NonlinearFactor.h +++ b/gtsam/nonlinear/NonlinearFactor.h @@ -239,6 +239,8 @@ class GTSAM_EXPORT NoiseModelFactor: public NonlinearFactor { /** get the dimension of the factor (number of rows on linearization) */ size_t dim() const override { + if (!noiseModel_) + throw std::runtime_error("NoiseModelFactor::dim(): no noise model set"); return noiseModel_->dim(); } diff --git a/gtsam/nonlinear/NonlinearFactorGraph.cpp b/gtsam/nonlinear/NonlinearFactorGraph.cpp index 4d4a51f640..d8437d71ab 100644 --- a/gtsam/nonlinear/NonlinearFactorGraph.cpp +++ b/gtsam/nonlinear/NonlinearFactorGraph.cpp @@ -30,6 +30,8 @@ #ifdef GTSAM_USE_TBB # include +# include +# include #endif #include @@ -168,6 +170,35 @@ void NonlinearFactorGraph::saveGraph(const std::string& filename, /* ************************************************************************* */ double NonlinearFactorGraph::error(const Values& values) const { gttic(NonlinearFactorGraph_error); + +#ifdef GTSAM_USE_TBB + constexpr size_t kGrainSize = 256; // Fixed grain size for deterministic splitting + if (factors_.size() > 2 * kGrainSize) { + TbbOpenMPMixedScope threadLimiter; + double total_error = tbb::parallel_deterministic_reduce( + tbb::blocked_range(0, size(), kGrainSize), + 0.0, // identity value + [this, &values](const tbb::blocked_range& r, double local_error) -> double { + for (size_t i = r.begin(); i != r.end(); ++i) { + const auto& factor = factors_[i]; + if (factor && factor->sendable()) + local_error += factor->error(values); + } + return local_error; + }, + [](double x, double y) -> double { + return x + y; + }); + + // Process non-sendable factors sequentially (e.g., Python factors requiring GIL) + for(const sharedFactor& factor: factors_) { + if (factor && !factor->sendable()) + total_error += factor->error(values); + } + return total_error; + } +#endif + double total_error = 0.; // iterate over all the factors_ to accumulate the log probabilities for(const sharedFactor& factor: factors_) { diff --git a/gtsam/nonlinear/NonlinearMultifrontalSolver.cpp b/gtsam/nonlinear/NonlinearMultifrontalSolver.cpp new file mode 100644 index 0000000000..9063bafa84 --- /dev/null +++ b/gtsam/nonlinear/NonlinearMultifrontalSolver.cpp @@ -0,0 +1,154 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file NonlinearMultifrontalSolver.cpp + * @brief Implementation of nonlinear multifrontal solver. + * @author Frank Dellaert + * @date January 2026 + */ + +#include +#include +#include +#include +#include +#include +#include + +namespace gtsam { + +namespace { + +std::map computeDimsFromValues(const Values& values) { + return values.dims(); +} + +std::unordered_set collectFixedKeys(const NonlinearFactorGraph& graph) { + std::unordered_set fixedKeys; + for (const auto& factor : graph) { + if (!factor || factor->keys().size() != 1) continue; + if (auto constraint = + std::dynamic_pointer_cast(factor)) { + if (constraint->isHardConstraint()) { + fixedKeys.insert(factor->keys().front()); + } else { + throw MultifrontalSolverNotSupported( + "non-hard constraints are not supported"); + } + } + } + return fixedKeys; +} + +} // namespace + +/* ************************************************************************* */ +NonlinearMultifrontalSolver::NonlinearMultifrontalSolver( + const NonlinearFactorGraph& graph, const Values& values, + const Ordering& ordering, MultifrontalSolver::Parameters params, + DampingParams dampingParams) + : MultifrontalSolver( + NonlinearMultifrontalSolver::Precompute(graph, values, ordering), + ordering, params), + dampingParams_(dampingParams) {} + +/* ************************************************************************* */ +MultifrontalSolver::PrecomputedData NonlinearMultifrontalSolver::Precompute( + const NonlinearFactorGraph& graph, const Values& values, + const Ordering& ordering) { + auto dims = computeDimsFromValues(values); + auto fixedKeys = collectFixedKeys(graph); + + Ordering reducedOrdering; + reducedOrdering.reserve(ordering.size()); + for (Key key : ordering) { + if (!fixedKeys.count(key)) { + reducedOrdering.push_back(key); + } + } + + IndexedJunctionTree indexedJunctionTree(graph, reducedOrdering, fixedKeys); + + std::vector rowCounts; + rowCounts.reserve(graph.size()); + for (const auto& factor : graph) { + size_t dim = factor ? factor->dim() : 0; + rowCounts.push_back(dim); + } + + return MultifrontalSolver::PrecomputedData{ + std::move(dims), std::move(fixedKeys), std::move(indexedJunctionTree), std::move(rowCounts)}; +} + +/* ************************************************************************* */ +void NonlinearMultifrontalSolver::load(const GaussianFactorGraph& graph) { + MultifrontalSolver::load(graph); + if (dampingParams_.diagonalDamping && dampingParams_.exactHessianDiagonal) { + exactHessianDiagonal_ = graph.hessianDiagonal(); + hasExactHessianDiagonal_ = true; + } else { + hasExactHessianDiagonal_ = false; + exactHessianDiagonal_ = VectorValues(); + } +} + +/* ************************************************************************* */ +void NonlinearMultifrontalSolver::eliminateInPlace(double lambda) { + if (!loaded_) { + throw std::runtime_error( + "NonlinearMultifrontalSolver::eliminateInPlace: load() must be called " + "before eliminating."); + } + + eliminated_ = false; + if (lambda <= 0.0) { + MultifrontalSolver::eliminateInPlace(); + } else { + runBottomUp( + [this, lambda](MultifrontalClique& node) { + node.eliminateInPlace(lambda, dampingParams_, exactHessianDiagonal_); + }, + params_.eliminationParallelThreshold); + } + eliminated_ = true; +} + +/* ************************************************************************* */ +void NonlinearMultifrontalSolver::eliminateInPlace( + const GaussianFactorGraph& graph, double lambda) { + eliminated_ = false; + if (lambda <= 0.0) { + MultifrontalSolver::eliminateInPlace(graph); + return; + } + + // Calculate the exact Hessian diagonal if needed. + if (dampingParams_.diagonalDamping && dampingParams_.exactHessianDiagonal) { + exactHessianDiagonal_ = graph.hessianDiagonal(); + hasExactHessianDiagonal_ = true; + } else { + hasExactHessianDiagonal_ = false; + exactHessianDiagonal_ = VectorValues(); + } + + // Run bottom-up elimination with damping. + runBottomUp( + [&graph, this, lambda](MultifrontalClique& node) { + node.fillAb(graph); + node.eliminateInPlace(lambda, dampingParams_, exactHessianDiagonal_); + }, + params_.eliminationParallelThreshold); + loaded_ = true; + eliminated_ = true; +} + +} // namespace gtsam diff --git a/gtsam/nonlinear/NonlinearMultifrontalSolver.h b/gtsam/nonlinear/NonlinearMultifrontalSolver.h new file mode 100644 index 0000000000..334bae0e29 --- /dev/null +++ b/gtsam/nonlinear/NonlinearMultifrontalSolver.h @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file NonlinearMultifrontalSolver.h + * @brief Multifrontal solver for nonlinear factor graphs. + * @author Frank Dellaert + * @date January 2026 + */ + +#pragma once + +#include +#include +#include +#include + +#include + +namespace gtsam { + +/** + * Multifrontal solver for nonlinear factor graphs. + * + * This class extends MultifrontalSolver to solve nonlinear problems. + * The linearization is provided externally via load(), or via + * eliminateInPlace() which combines loading and elimination. + */ +class GTSAM_EXPORT NonlinearMultifrontalSolver : public MultifrontalSolver { + public: + using DampingParams = LMDampingParams; + + /** + * Construct the solver from a nonlinear factor graph and linearization point. + * This computes the symbolic structure (including fixed keys) from the + * nonlinear graph and uses the values to determine variable dimensions. + * Call load() with a linearized graph before eliminating. + * @param graph The nonlinear factor graph to build structure from. + * @param values The linearization point used to determine variable dims. + * @param ordering The variable ordering to use. + * @param params Tunable parameters for traversal and reporting. + */ + NonlinearMultifrontalSolver(const NonlinearFactorGraph& graph, + const Values& values, const Ordering& ordering, + MultifrontalSolver::Parameters params = {}, + DampingParams dampingParams = DampingParams()); + + /** + * Precompute symbolic structure from a nonlinear factor graph and values. + * This avoids linearization; call load() with a linearized graph before + * eliminating. + */ + static MultifrontalSolver::PrecomputedData Precompute( + const NonlinearFactorGraph& graph, const Values& values, + const Ordering& ordering); + + /** + * Load new numerical values from the factor graph. + * This overrides the base load() to optionally cache `diag(J^T J)` for + * exact diagonal damping when enabled. + */ + void load(const GaussianFactorGraph& graph); + + /** + * Eliminate with optional LM-style damping. + * When lambda is provided, adds damping on frontal blocks before + * factorization. + */ + void eliminateInPlace(double lambda = 0.0); + + /** + * Load and eliminate the graph in a single traversal with optional damping. + * This calls fillAb() and factorization per clique in post-order. + * @param graph The linearized factor graph (structure must match). + * @param lambda Optional damping value; non-positive disables damping. + */ + void eliminateInPlace(const GaussianFactorGraph& graph, double lambda = 0.0); + + private: + DampingParams dampingParams_; + VectorValues exactHessianDiagonal_; + bool hasExactHessianDiagonal_ = false; +}; + +} // namespace gtsam diff --git a/gtsam/nonlinear/NonlinearOptimizer.cpp b/gtsam/nonlinear/NonlinearOptimizer.cpp index d8b17dacde..b3f7160c4d 100644 --- a/gtsam/nonlinear/NonlinearOptimizer.cpp +++ b/gtsam/nonlinear/NonlinearOptimizer.cpp @@ -17,13 +17,17 @@ */ #include +#include #include +#include #include #include #include #include #include +#include #include +#include #include @@ -136,8 +140,15 @@ VectorValues NonlinearOptimizer::solve(const GaussianFactorGraph& gfg, // Check which solver we are using if (params.isMultifrontal()) { // Multifrontal QR or Cholesky (decided by params.getEliminationFunction()) - if (params.ordering) - delta = gfg.optimize(*params.ordering, params.getEliminationFunction()); + if (params.ordering) { + if (!indexedJunctionTreeCache_.has_value()) { + indexedJunctionTreeCache_ = gfg.buildIndexedJunctionTree(*params.ordering); + } + + delta = gfg.eliminateMultifrontal(*indexedJunctionTreeCache_, + params.getEliminationFunction()) + ->optimize(); + } else delta = gfg.optimize(params.getEliminationFunction()); } else if (params.isSequential()) { @@ -178,8 +189,9 @@ VectorValues NonlinearOptimizer::solve(const GaussianFactorGraph& gfg, } /* ************************************************************************* */ -bool checkConvergence(double relativeErrorTreshold, double absoluteErrorTreshold, - double errorThreshold, double currentError, double newError, +bool checkConvergence(double relativeErrorThreshold, + double absoluteErrorThreshold, double errorThreshold, + double currentError, double newError, NonlinearOptimizerParams::Verbosity verbosity) { if (verbosity >= NonlinearOptimizerParams::ERROR) { if (newError <= errorThreshold) @@ -194,26 +206,26 @@ bool checkConvergence(double relativeErrorTreshold, double absoluteErrorTreshold // check if diverges double absoluteDecrease = currentError - newError; if (verbosity >= NonlinearOptimizerParams::ERROR) { - if (absoluteDecrease <= absoluteErrorTreshold) + if (absoluteDecrease <= absoluteErrorThreshold) cout << "absoluteDecrease: " << setprecision(12) << absoluteDecrease << " < " - << absoluteErrorTreshold << endl; + << absoluteErrorThreshold << endl; else cout << "absoluteDecrease: " << setprecision(12) << absoluteDecrease - << " >= " << absoluteErrorTreshold << endl; + << " >= " << absoluteErrorThreshold << endl; } // calculate relative error decrease and update currentError double relativeDecrease = absoluteDecrease / currentError; if (verbosity >= NonlinearOptimizerParams::ERROR) { - if (relativeDecrease <= relativeErrorTreshold) + if (relativeDecrease <= relativeErrorThreshold) cout << "relativeDecrease: " << setprecision(12) << relativeDecrease << " < " - << relativeErrorTreshold << endl; + << relativeErrorThreshold << endl; else cout << "relativeDecrease: " << setprecision(12) << relativeDecrease - << " >= " << relativeErrorTreshold << endl; + << " >= " << relativeErrorThreshold << endl; } - bool converged = (relativeErrorTreshold && (relativeDecrease <= relativeErrorTreshold)) || - (absoluteDecrease <= absoluteErrorTreshold); + bool converged = (relativeErrorThreshold && (relativeDecrease <= relativeErrorThreshold)) || + (absoluteDecrease <= absoluteErrorThreshold); if (verbosity >= NonlinearOptimizerParams::TERMINATION && converged) { if (absoluteDecrease >= 0.0) cout << "converged" << endl; @@ -222,9 +234,9 @@ bool checkConvergence(double relativeErrorTreshold, double absoluteErrorTreshold cout << "errorThreshold: " << newError << " (¶ms)) { + dampingParams.exactHessianDiagonal = + lmParams->dampingParams.exactHessianDiagonal; + dampingParams.diagonalDamping = lmParams->dampingParams.diagonalDamping; + dampingParams.minDiagonal = lmParams->dampingParams.minDiagonal; + dampingParams.maxDiagonal = lmParams->dampingParams.maxDiagonal; + } + + // Lazily create the solver. + // Use default ordering or create one. + Ordering ordering; + if (params.ordering) + ordering = *params.ordering; + else + ordering = Ordering::Create(params.orderingType, graph_); + + // Construct it (may throw if unsupported). + nonlinearMultifrontalSolver_ = + std::make_unique( + graph_, values, ordering, params.multifrontalParams, dampingParams); + } + return true; } +} // namespace gtsam diff --git a/gtsam/nonlinear/NonlinearOptimizer.h b/gtsam/nonlinear/NonlinearOptimizer.h index f79c3614fb..0dc2bd4f2d 100644 --- a/gtsam/nonlinear/NonlinearOptimizer.h +++ b/gtsam/nonlinear/NonlinearOptimizer.h @@ -20,17 +20,25 @@ #include #include +#include + +#include +#include namespace gtsam { -namespace internal { struct NonlinearOptimizerState; } +namespace internal { +struct NonlinearOptimizerState; +} +class NonlinearMultifrontalSolver; /** * This is the abstract interface for classes that can optimize for the * maximum-likelihood estimate of a NonlinearFactorGraph. * * To use a class derived from this interface, construct the class with a - * NonlinearFactorGraph and an initial Values variable assignment. Next, call the + * NonlinearFactorGraph and an initial Values variable assignment. Next, call +the * optimize() method which returns the optimized variable assignment. * * Simple and compact example: @@ -54,11 +62,10 @@ cout << "Converged in " << optimizer.iterations() << " iterations " * * Example of setting parameters before optimization: * \code -// Each derived optimizer type has its own parameters class, which inherits from NonlinearOptimizerParams -DoglegParams params; -params.factorization = DoglegParams::QR; -params.relativeErrorTol = 1e-3; -params.absoluteErrorTol = 1e-3; +// Each derived optimizer type has its own parameters class, which inherits from +NonlinearOptimizerParams DoglegParams params; params.factorization = +DoglegParams::QR; params.relativeErrorTol = 1e-3; params.absoluteErrorTol = +1e-3; // Optimize Values result = DoglegOptimizer(graph, initialValues, params).optimize(); @@ -70,24 +77,33 @@ Values result = DoglegOptimizer(graph, initialValues, params).optimize(); * you can easily control what happens between iterations, such as drawing or * printing, moving points from behind the camera to in front, etc. * - * For more flexibility you may override virtual methods in your own derived class. + * For more flexibility you may override virtual methods in your own derived +class. */ class GTSAM_EXPORT NonlinearOptimizer { + protected: + NonlinearFactorGraph graph_; ///< The graph with nonlinear factors + + std::unique_ptr state_; ///< PIMPL'd state -protected: - NonlinearFactorGraph graph_; ///< The graph with nonlinear factors + /// Solver for multifrontal Cholesky, lazily created + mutable std::unique_ptr + nonlinearMultifrontalSolver_; - std::unique_ptr state_; ///< PIMPL'd state + private: + /// Cached indexed junction tree used to avoid rebuilding the symbolic structure + /// across iterations when the ordering remains constant. + mutable std::optional indexedJunctionTreeCache_; -public: + public: /** A shared pointer to this class */ using shared_ptr = std::shared_ptr; /// @name Standard interface /// @{ - /** - * Optimize for the maximum-likelihood estimate, returning a the optimized + /** + * Optimize for the maximum-likelihood estimate, returning a the optimized * variable assignments. * * This function simply calls iterate() in a loop, checking for convergence @@ -95,7 +111,10 @@ class GTSAM_EXPORT NonlinearOptimizer { * process, you may call iterate() and check_convergence() yourself, and if * needed modify the optimization state between iterations. */ - virtual const Values& optimize() { defaultOptimize(); return values(); } + virtual const Values& optimize() { + defaultOptimize(); + return values(); + } /** * Optimize, but return empty result if any uncaught exception is thrown @@ -112,10 +131,10 @@ class GTSAM_EXPORT NonlinearOptimizer { size_t iterations() const; /// return values in current optimizer state - const Values &values() const; + const Values& values() const; /// return the graph with nonlinear factors - const NonlinearFactorGraph &graph() const { return graph_; } + const NonlinearFactorGraph& graph() const { return graph_; } /// @} @@ -125,19 +144,20 @@ class GTSAM_EXPORT NonlinearOptimizer { /** Virtual destructor */ virtual ~NonlinearOptimizer(); - /** Default function to do linear solve, i.e. optimize a GaussianFactorGraph */ - virtual VectorValues solve(const GaussianFactorGraph &gfg, - const NonlinearOptimizerParams& params) const; + /** Default function to do linear solve, i.e. optimize a GaussianFactorGraph + */ + virtual VectorValues solve(const GaussianFactorGraph& gfg, + const NonlinearOptimizerParams& params) const; - /** - * Perform a single iteration, returning GaussianFactorGraph corresponding to + /** + * Perform a single iteration, returning GaussianFactorGraph corresponding to * the linearized factor graph. */ virtual GaussianFactorGraph::shared_ptr iterate() = 0; /// @} -protected: + protected: /** A default implementation of the optimization loop, which calls iterate() * until checkConvergence returns true. */ @@ -145,20 +165,38 @@ class GTSAM_EXPORT NonlinearOptimizer { virtual const NonlinearOptimizerParams& _params() const = 0; - /** Constructor for initial construction of base classes. Takes ownership of state. */ + /** + * Ensure that the nonlinearMultifrontalSolver_ is populated if (and only if) + * the params request the multifrontal Cholesky solver type (e.g., + * MULTIFRONTAL_SOLVER). + * + * Returns true if the multifrontal solver is available and ready. If a + * different solver type is requested in params, this function returns false + * without modifying any solver state. If constraints are present or + * multifrontal initialization fails, it also returns false (and callers + * should fall back to the legacy linear solver path). + */ + bool ensureMultifrontalSolver(const NonlinearOptimizerParams& params, + const Values& values) const; + + /** Constructor for initial construction of base classes. Takes ownership of + * state. */ NonlinearOptimizer(const NonlinearFactorGraph& graph, std::unique_ptr state); }; -/** Check whether the relative error decrease is less than relativeErrorTreshold, - * the absolute error decrease is less than absoluteErrorTreshold, or - * the error itself is less than errorThreshold. +/** Check whether the relative error decrease is less than + * relativeErrorThreshold, the absolute error decrease is less than + * absoluteErrorThreshold, or the error itself is less than + * errorThreshold. */ -GTSAM_EXPORT bool checkConvergence(double relativeErrorTreshold, - double absoluteErrorTreshold, double errorThreshold, - double currentError, double newError, NonlinearOptimizerParams::Verbosity verbosity = NonlinearOptimizerParams::SILENT); +GTSAM_EXPORT bool checkConvergence( + double relativeErrorThreshold, double absoluteErrorThreshold, + double errorThreshold, double currentError, double newError, + NonlinearOptimizerParams::Verbosity verbosity = + NonlinearOptimizerParams::SILENT); -GTSAM_EXPORT bool checkConvergence(const NonlinearOptimizerParams& params, double currentError, - double newError); +GTSAM_EXPORT bool checkConvergence(const NonlinearOptimizerParams& params, + double currentError, double newError); -} // gtsam +} // namespace gtsam diff --git a/gtsam/nonlinear/NonlinearOptimizerParams.cpp b/gtsam/nonlinear/NonlinearOptimizerParams.cpp index 55dfd4561d..f57881bc9c 100644 --- a/gtsam/nonlinear/NonlinearOptimizerParams.cpp +++ b/gtsam/nonlinear/NonlinearOptimizerParams.cpp @@ -85,6 +85,9 @@ void NonlinearOptimizerParams::print(const std::string& str) const { std::cout.flush(); switch (linearSolverType) { + case MULTIFRONTAL_SOLVER: + std::cout << " linear solver type: MULTIFRONTAL SOLVER\n"; + break; case MULTIFRONTAL_CHOLESKY: std::cout << " linear solver type: MULTIFRONTAL CHOLESKY\n"; break; @@ -108,6 +111,31 @@ void NonlinearOptimizerParams::print(const std::string& str) const { break; } + if (linearSolverType == MULTIFRONTAL_SOLVER) { + const auto& p = multifrontalParams; + std::cout << " multifrontal.leafMergeDimCap: " << p.leafMergeDimCap << "\n"; + std::cout << " multifrontal.mergeDimCap: " << p.mergeDimCap << "\n"; + const char* qrMode = "off"; + switch (p.qrMode) { + case MultifrontalParameters::QRMode::Off: + qrMode = "off"; + break; + case MultifrontalParameters::QRMode::Allow: + qrMode = "allow"; + break; + case MultifrontalParameters::QRMode::Force: + qrMode = "force"; + break; + } + std::cout << " multifrontal.qrMode: " << qrMode << "\n"; + std::cout << " multifrontal.qrAspectRatio: " << p.qrAspectRatio << "\n"; + std::cout << " multifrontal.eliminationParallelThreshold: " + << p.eliminationParallelThreshold << "\n"; + std::cout << " multifrontal.solutionParallelThreshold: " + << p.solutionParallelThreshold << "\n"; + std::cout << " multifrontal.numThreads: " << p.numThreads << "\n"; + } + switch (orderingType){ case Ordering::COLAMD: std::cout << " ordering: COLAMD\n"; @@ -136,19 +164,34 @@ bool NonlinearOptimizerParams::equals(const NonlinearOptimizerParams& other, iterative_params_equal = !iterativeParams && !other.iterativeParams; } + auto multifrontalEqual = [&]() { + const auto& a = multifrontalParams; + const auto& b = other.multifrontalParams; + return a.leafMergeDimCap == b.leafMergeDimCap && + a.mergeDimCap == b.mergeDimCap && + a.qrMode == b.qrMode && a.qrAspectRatio == b.qrAspectRatio && + a.reportStream == b.reportStream && + a.eliminationParallelThreshold == b.eliminationParallelThreshold && + a.solutionParallelThreshold == b.solutionParallelThreshold && + a.numThreads == b.numThreads; + }; + return maxIterations == other.getMaxIterations() && std::abs(relativeErrorTol - other.getRelativeErrorTol()) <= tol && std::abs(absoluteErrorTol - other.getAbsoluteErrorTol()) <= tol && std::abs(errorTol - other.getErrorTol()) <= tol && verbosityTranslator(verbosity) == other.getVerbosity() && orderingType == other.orderingType && ordering == other.ordering && - linearSolverType == other.linearSolverType && iterative_params_equal; + linearSolverType == other.linearSolverType && iterative_params_equal && + multifrontalEqual(); } /* ************************************************************************* */ std::string NonlinearOptimizerParams::linearSolverTranslator( LinearSolverType linearSolverType) const { switch (linearSolverType) { + case MULTIFRONTAL_SOLVER: + return "MULTIFRONTAL_SOLVER"; case MULTIFRONTAL_CHOLESKY: return "MULTIFRONTAL_CHOLESKY"; case MULTIFRONTAL_QR: @@ -170,6 +213,8 @@ std::string NonlinearOptimizerParams::linearSolverTranslator( /* ************************************************************************* */ NonlinearOptimizerParams::LinearSolverType NonlinearOptimizerParams::linearSolverTranslator( const std::string& linearSolverType) const { + if (linearSolverType == "MULTIFRONTAL_SOLVER") + return MULTIFRONTAL_SOLVER; if (linearSolverType == "MULTIFRONTAL_CHOLESKY") return MULTIFRONTAL_CHOLESKY; if (linearSolverType == "MULTIFRONTAL_QR") diff --git a/gtsam/nonlinear/NonlinearOptimizerParams.h b/gtsam/nonlinear/NonlinearOptimizerParams.h index cef7e85e3c..4c6987b94d 100644 --- a/gtsam/nonlinear/NonlinearOptimizerParams.h +++ b/gtsam/nonlinear/NonlinearOptimizerParams.h @@ -23,7 +23,9 @@ #include #include +#include +#include #include #include @@ -96,6 +98,7 @@ class GTSAM_EXPORT NonlinearOptimizerParams { /** See NonlinearOptimizerParams::linearSolverType */ enum LinearSolverType { + MULTIFRONTAL_SOLVER, MULTIFRONTAL_CHOLESKY, MULTIFRONTAL_QR, SEQUENTIAL_CHOLESKY, @@ -104,9 +107,14 @@ class GTSAM_EXPORT NonlinearOptimizerParams { CHOLMOD, /* Experimental Flag */ }; - LinearSolverType linearSolverType = MULTIFRONTAL_CHOLESKY; ///< The type of linear solver to use in the nonlinear optimizer std::optional ordering; ///< The optional variable elimination ordering, or empty to use COLAMD (default: empty) IterativeOptimizationParameters::shared_ptr iterativeParams; ///< The container for iterativeOptimization parameters. used in CG Solvers. + /// Parameters for `gtsam::MultifrontalSolver` when using `MULTIFRONTAL_SOLVER`. + + /// The type of linear solver to use in the nonlinear optimizer + LinearSolverType linearSolverType = MULTIFRONTAL_CHOLESKY; + + MultifrontalParameters multifrontalParams; NonlinearOptimizerParams() = default; virtual ~NonlinearOptimizerParams() { @@ -117,7 +125,8 @@ class GTSAM_EXPORT NonlinearOptimizerParams { bool equals(const NonlinearOptimizerParams& other, double tol = 1e-9) const; inline bool isMultifrontal() const { - return (linearSolverType == MULTIFRONTAL_CHOLESKY) + return (linearSolverType == MULTIFRONTAL_SOLVER) + || (linearSolverType == MULTIFRONTAL_CHOLESKY) || (linearSolverType == MULTIFRONTAL_QR); } @@ -136,6 +145,7 @@ class GTSAM_EXPORT NonlinearOptimizerParams { GaussianFactorGraph::Eliminate getEliminationFunction() const { switch (linearSolverType) { + case MULTIFRONTAL_SOLVER: case MULTIFRONTAL_CHOLESKY: case SEQUENTIAL_CHOLESKY: return EliminatePreferCholesky; diff --git a/gtsam/nonlinear/PriorFactor.h b/gtsam/nonlinear/PriorFactor.h index 0aa14174ec..e37c7e8062 100644 --- a/gtsam/nonlinear/PriorFactor.h +++ b/gtsam/nonlinear/PriorFactor.h @@ -49,7 +49,7 @@ class PriorFactor : public ExtendedPriorFactor { /// Constructor PriorFactor(Key key, const VALUE& prior, const SharedNoiseModel& model = nullptr) - : Base(key, prior, model) {} + : Base(key, prior, noiseModel::validOrDefault(prior, model)) {} /// Convenience constructor that takes a full covariance argument PriorFactor(Key key, const VALUE& prior, const Matrix& covariance) diff --git a/gtsam/nonlinear/Values-inl.h b/gtsam/nonlinear/Values-inl.h index b6eca8b994..95af20da3e 100644 --- a/gtsam/nonlinear/Values-inl.h +++ b/gtsam/nonlinear/Values-inl.h @@ -24,6 +24,7 @@ #pragma once +#include #include #include @@ -255,8 +256,8 @@ namespace gtsam { } // internal /* ************************************************************************* */ - template - const ValueType Values::at(Key j) const { + template + const ValueType Values::at(Key j) const { // Find the item KeyValueMap::const_iterator item = values_.find(j); @@ -266,7 +267,28 @@ namespace gtsam { // Check the type and throw exception if incorrect // h() split in two lines to avoid internal compiler error (MSVC2017) auto h = internal::handle(); - return h(j, item->second.get()); + return h(j, item->second.get()); + } + + /* ************************************************************************* */ + template + const ValueType& Values::atRef(Key j) const { + // Find the item + KeyValueMap::const_iterator item = values_.find(j); + + // Throw exception if it does not exist + if (item == values_.end()) throw ValuesKeyDoesNotExist("atRef", j); + + const Value* value = item->second.get(); +#ifndef NDEBUG + auto ptr = dynamic_cast*>(value); + assert(ptr && "Values::atRef: incorrect ValueType"); + if (!ptr) throw ValuesIncorrectType(j, typeid(*value), typeid(ValueType)); + return ptr->value(); +#else + auto ptr = static_cast*>(value); + return ptr->value(); +#endif } /* ************************************************************************* */ diff --git a/gtsam/nonlinear/Values.cpp b/gtsam/nonlinear/Values.cpp index e2579e5a35..7fc84098d1 100644 --- a/gtsam/nonlinear/Values.cpp +++ b/gtsam/nonlinear/Values.cpp @@ -107,14 +107,8 @@ namespace gtsam { assert(this->size() == delta.size()); auto key_value = values_.begin(); VectorValues::const_iterator key_delta; -#ifdef GTSAM_USE_TBB for (; key_value != values_.end(); ++key_value) { key_delta = delta.find(key_value->first); -#else - for (key_delta = delta.begin(); key_value != values_.end(); - ++key_value, ++key_delta) { - assert(key_value->first == key_delta->first); -#endif Key var = key_value->first; assert(static_cast(delta[var].size()) == key_value->second->dim()); assert(delta[var].allFinite()); diff --git a/gtsam/nonlinear/Values.h b/gtsam/nonlinear/Values.h index 7e950479ad..5e9bf8d046 100644 --- a/gtsam/nonlinear/Values.h +++ b/gtsam/nonlinear/Values.h @@ -78,6 +78,9 @@ namespace gtsam { // The member to store the values, see just above KeyValueMap values_; + // Friend access for efficient in-place updates. + friend class NonlinearMultifrontalSolver; + public: /// A shared_ptr to this class @@ -152,6 +155,13 @@ namespace gtsam { template const ValueType at(Key j) const; + /** Retrieve a variable by key \c j without copying. + * This is a fast path that assumes the stored type matches ValueType; + * in debug builds it asserts on mismatch. + */ + template + const ValueType& atRef(Key j) const; + /// version for double double atDouble(size_t key) const { return at(key);} diff --git a/gtsam/nonlinear/doc/ConcentratedGaussian.ipynb b/gtsam/nonlinear/doc/ConcentratedGaussian.ipynb index b77885f431..e852d562e8 100644 --- a/gtsam/nonlinear/doc/ConcentratedGaussian.ipynb +++ b/gtsam/nonlinear/doc/ConcentratedGaussian.ipynb @@ -13,7 +13,7 @@ "2. EKF users receiving `ConcentratedGaussian` outputs.\n", "3. Advanced users leveraging transport, reset, and fusion of Left Extended Concentrated Gaussians (L-ECGs).\n", "\n", - "Related notebooks: {doc}`PriorFactor `, {doc}`ExtendedPriorFactor `." + "Related notebooks: [PriorFactor](PriorFactor.ipynb), [ExtendedPriorFactor](ExtendedPriorFactor.ipynb)." ] }, { @@ -52802,4 +52802,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/gtsam/nonlinear/doc/ExtendedPriorFactor.ipynb b/gtsam/nonlinear/doc/ExtendedPriorFactor.ipynb index 4a47e96c6b..97c0f27652 100644 --- a/gtsam/nonlinear/doc/ExtendedPriorFactor.ipynb +++ b/gtsam/nonlinear/doc/ExtendedPriorFactor.ipynb @@ -9,7 +9,7 @@ "\n", "## Purpose and Audience\n", "\n", - "`ExtendedPriorFactor` is the generalized building block that underlies {doc}`PriorFactor ` and other soft anchoring mechanisms. It lets you express an (optionally shifted) Gaussian (or robust) likelihood in the tangent space of an arbitrary manifold value type. This notebook targets advanced GTSAM users designing custom factors, experimenting with non-zero tangent-space means, or working with non-traditional manifold types." + "`ExtendedPriorFactor` is the generalized building block that underlies [PriorFactor](PriorFactor.ipynb) and other soft anchoring mechanisms. It lets you express an (optionally shifted) Gaussian (or robust) likelihood in the tangent space of an arbitrary manifold value type. This notebook targets advanced GTSAM users designing custom factors, experimenting with non-zero tangent-space means, or working with non-traditional manifold types." ] }, { @@ -241,7 +241,7 @@ "source": [ "## When Not to Use\n", "\n", - "- If you simply need a zero-mean soft prior: prefer {doc}`PriorFactor `.\n", + "- If you simply need a zero-mean soft prior: prefer [PriorFactor](PriorFactor.ipynb).\n", "- If you require a hard equality constraint: consider `NonlinearEquality`.\n", "- If the residual should depend on another variable or measurement, design a custom factor instead of embedding complexity in `Local`." ] @@ -253,7 +253,7 @@ "source": [ "## See Also\n", "\n", - "- {doc}`PriorFactor `\n", + "- [PriorFactor](PriorFactor.ipynb)\n", "- Other manifold priors: `BetweenFactor`, `NonlinearEquality`, and robust variants\n", "- Underlying noise models: `noiseModel::Isotropic`, `noiseModel::Diagonal`, robust creators" ] @@ -280,4 +280,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/gtsam/nonlinear/internal/ChiSquaredInverse.h b/gtsam/nonlinear/internal/ChiSquaredInverse.h index 6707be1fe3..edfb2bfee8 100644 --- a/gtsam/nonlinear/internal/ChiSquaredInverse.h +++ b/gtsam/nonlinear/internal/ChiSquaredInverse.h @@ -36,8 +36,8 @@ namespace internal { * @param alpha Quantile value * @return double */ -inline double chi_squared_quantile(const double dofs, const double alpha) { - return 2 * igami(dofs / 2, alpha); +inline double chiSquaredQuantile(const double dofs, const double alpha) { + return 2 * gtsam_cephes_igami(dofs / 2, alpha); } } // namespace internal diff --git a/gtsam/nonlinear/internal/ExpressionNode.h b/gtsam/nonlinear/internal/ExpressionNode.h index 25587f5119..81ba1f69cc 100644 --- a/gtsam/nonlinear/internal/ExpressionNode.h +++ b/gtsam/nonlinear/internal/ExpressionNode.h @@ -92,8 +92,8 @@ class ExpressionNode { } /// Return keys that play in this expression as a set - virtual std::set keys() const { - std::set keys; + virtual KeySet keys() const { + KeySet keys; return keys; } @@ -182,8 +182,8 @@ class LeafExpression: public ExpressionNode { } /// Return keys that play in this expression - std::set keys() const override { - std::set keys; + KeySet keys() const override { + KeySet keys; keys.insert(key_); return keys; } @@ -260,7 +260,7 @@ class UnaryExpression: public ExpressionNode { } /// Return keys that play in this expression - std::set keys() const override { + KeySet keys() const override { return expression1_->keys(); } @@ -372,9 +372,9 @@ class BinaryExpression: public ExpressionNode { } /// Return keys that play in this expression - std::set keys() const override { - std::set keys = expression1_->keys(); - std::set myKeys = expression2_->keys(); + KeySet keys() const override { + KeySet keys = expression1_->keys(); + KeySet myKeys = expression2_->keys(); keys.insert(myKeys.begin(), myKeys.end()); return keys; } @@ -480,9 +480,9 @@ class TernaryExpression: public ExpressionNode { } /// Return keys that play in this expression - std::set keys() const override { - std::set keys = expression1_->keys(); - std::set myKeys = expression2_->keys(); + KeySet keys() const override { + KeySet keys = expression1_->keys(); + KeySet myKeys = expression2_->keys(); keys.insert(myKeys.begin(), myKeys.end()); myKeys = expression3_->keys(); keys.insert(myKeys.begin(), myKeys.end()); @@ -588,7 +588,7 @@ class ScalarMultiplyNode : public ExpressionNode { } /// Return keys that play in this expression - std::set keys() const override { + KeySet keys() const override { return expression_->keys(); } @@ -677,9 +677,9 @@ class BinarySumNode : public ExpressionNode { } /// Return keys that play in this expression - std::set keys() const override { - std::set keys = expression1_->keys(); - std::set myKeys = expression2_->keys(); + KeySet keys() const override { + KeySet keys = expression1_->keys(); + KeySet myKeys = expression2_->keys(); keys.insert(myKeys.begin(), myKeys.end()); return keys; } diff --git a/gtsam/nonlinear/nonlinear.i b/gtsam/nonlinear/nonlinear.i index 04308142ac..0838523e0a 100644 --- a/gtsam/nonlinear/nonlinear.i +++ b/gtsam/nonlinear/nonlinear.i @@ -203,18 +203,6 @@ virtual class LinearContainerFactor : gtsam::NonlinearFactor { void serializable() const; }; // \class LinearContainerFactor -// Summarization functionality -//#include -// -//// Uses partial QR approach by default -// gtsam::GaussianFactorGraph summarize( -// const gtsam::NonlinearFactorGraph& graph, const gtsam::Values& values, -// const gtsam::KeySet& saved_keys); -// -// gtsam::NonlinearFactorGraph summarizeAsNonlinearContainer( -// const gtsam::NonlinearFactorGraph& graph, const gtsam::Values& values, -// const gtsam::KeySet& saved_keys); - //************************************************************************* // Nonlinear optimizers //************************************************************************* @@ -312,6 +300,11 @@ enum GncLossType { TLS /*Truncated least squares*/ }; +enum GncScheduler { + Linear, + SuperLinear +}; + template virtual class GncParams { GncParams(const PARAMS& baseOptimizerParams); @@ -325,6 +318,8 @@ virtual class GncParams { gtsam::This::Verbosity verbosity; gtsam::This::IndexVector knownInliers; gtsam::This::IndexVector knownOutliers; + bool allowNonNoiseModelFactors; + gtsam::GncScheduler scheduler; void setLossType(const gtsam::GncLossType type); void setMaxIterations(const size_t maxIter); @@ -334,6 +329,8 @@ virtual class GncParams { void setVerbosityGNC(const gtsam::This::Verbosity value); void setKnownInliers(const gtsam::This::IndexVector& knownIn); void setKnownOutliers(const gtsam::This::IndexVector& knownOut); + void setAllowNonNoiseModelFactors(bool allow); + void setScheduler(const gtsam::GncScheduler scheduler); void print(const string& str = "GncParams: ") const; enum Verbosity { @@ -637,7 +634,7 @@ template virtual class PriorFactor : gtsam::NoiseModelFactor { PriorFactor(gtsam::Key key, const T& prior, - const gtsam::noiseModel::Base* noiseModel); + const gtsam::noiseModel::Base* noiseModel = nullptr); T prior() const; // enabling serialization functionality diff --git a/gtsam/nonlinear/tests/testAdaptAutoDiff.cpp b/gtsam/nonlinear/tests/testAdaptAutoDiff.cpp index 2deece2282..77bcd0cbdd 100644 --- a/gtsam/nonlinear/tests/testAdaptAutoDiff.cpp +++ b/gtsam/nonlinear/tests/testAdaptAutoDiff.cpp @@ -250,7 +250,7 @@ TEST(AdaptAutoDiff, SnavelyExpression) { internal::upAligned(RecordSize) + P.traceSize() + X.traceSize(), expression.traceSize()); - const set expected{1, 2}; + const KeySet expected{1, 2}; EXPECT(expected == expression.keys()); } diff --git a/gtsam/nonlinear/tests/testExpression.cpp b/gtsam/nonlinear/tests/testExpression.cpp index 67815e262d..1a21ba0f7c 100644 --- a/gtsam/nonlinear/tests/testExpression.cpp +++ b/gtsam/nonlinear/tests/testExpression.cpp @@ -86,7 +86,7 @@ Vector f3(const Point3& p, OptionalJacobian H) { return p; } Point3_ pointExpression(1); -const set expected{1}; +const KeySet expected{1}; } // namespace unary // Create a unary expression that takes another expression as a single argument. @@ -186,7 +186,7 @@ TEST(Expression, BinaryToDouble) { /* ************************************************************************* */ // Check keys of an expression created from class method. TEST(Expression, BinaryKeys) { - const set expected{1, 2}; + const KeySet expected{1, 2}; EXPECT(expected == binary::p_cam.keys()) } @@ -223,7 +223,7 @@ Expression uv_hat(uncalibrate, K, projection); /* ************************************************************************* */ // keys TEST(Expression, TreeKeys) { - const set expected{1, 2, 3}; + const KeySet expected{1, 2, 3}; EXPECT(expected == tree::uv_hat.keys()) } @@ -261,7 +261,7 @@ TEST(Expression, compose1) { Rot3_ R3 = R1 * R2; // Check keys - const set expected{1, 2}; + const KeySet expected{1, 2}; EXPECT(expected == R3.keys()) } @@ -273,7 +273,7 @@ TEST(Expression, compose2) { Rot3_ R3 = R1 * R2; // Check keys - const set expected{1}; + const KeySet expected{1}; EXPECT(expected == R3.keys()) } @@ -285,7 +285,7 @@ TEST(Expression, compose3) { Rot3_ R3 = R1 * R2; // Check keys - const set expected{3}; + const KeySet expected{3}; EXPECT(expected == R3.keys()) } @@ -298,7 +298,7 @@ TEST(Expression, compose4) { Double_ R3 = R1 * R2; // Check keys - const set expected{1}; + const KeySet expected{1}; EXPECT(expected == R3.keys()) } @@ -322,7 +322,7 @@ TEST(Expression, ternary) { Rot3_ ABC(composeThree, A, B, C); // Check keys - const set expected {1, 2, 3}; + const KeySet expected {1, 2, 3}; EXPECT(expected == ABC.keys()) } @@ -332,7 +332,7 @@ TEST(Expression, ScalarMultiply) { const Key key(67); const Point3_ expr = 23 * Point3_(key); - const set expected_keys{key}; + const KeySet expected_keys{key}; EXPECT(expected_keys == expr.keys()) map actual_dims, expected_dims {{key, 3}}; @@ -363,7 +363,7 @@ TEST(Expression, BinarySum) { const Key key(67); const Point3_ sum_ = Point3_(key) + Point3_(Point3(1, 1, 1)); - const set expected_keys{key}; + const KeySet expected_keys{key}; EXPECT(expected_keys == sum_.keys()) map actual_dims, expected_dims {{key, 3}}; @@ -508,7 +508,7 @@ TEST(Expression, Subtract) { values.insert(0, p); values.insert(1, q); const Vector3_ expression = Vector3_(0) - Vector3_(1); - set expected_keys = {0, 1}; + KeySet expected_keys = {0, 1}; EXPECT(expression.keys() == expected_keys) // Check value + Jacobians diff --git a/gtsam/nonlinear/tests/testLinearContainerFactor.cpp b/gtsam/nonlinear/tests/testLinearContainerFactor.cpp index 77d40758be..db1f6d0582 100644 --- a/gtsam/nonlinear/tests/testLinearContainerFactor.cpp +++ b/gtsam/nonlinear/tests/testLinearContainerFactor.cpp @@ -219,7 +219,8 @@ TEST(TestLinearContainerFactor, hessian_factor_withlinpoints) { // Check linearization with corrections for updated linearization point Vector g1_prime = g_prime.head(3); Vector g2_prime = g_prime.tail(2); - double f_prime = f + dv.transpose() * G.selfadjointView() * dv - 2.0 * dv.transpose() * g; + const auto Gsym = G.selfadjointView(); + double f_prime = f + dv.dot(Gsym * dv) - 2.0 * dv.dot(g); HessianFactor expNewFactor(x1, l1, G11, G12, g1_prime, G22, g2_prime, f_prime); EXPECT(assert_equal(*expNewFactor.clone(), *actFactor.linearize(noisyValues), tol)); } diff --git a/gtsam/nonlinear/tests/testNonlinearMultifrontalSolver.cpp b/gtsam/nonlinear/tests/testNonlinearMultifrontalSolver.cpp new file mode 100644 index 0000000000..a1c47a8b97 --- /dev/null +++ b/gtsam/nonlinear/tests/testNonlinearMultifrontalSolver.cpp @@ -0,0 +1,440 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file testNonlinearMultifrontalSolver.cpp + * @brief Test for NonlinearMultifrontalSolver + * @author Frank Dellaert + * @date January 2026 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace std; +using namespace gtsam; + +using symbol_shorthand::P; +using symbol_shorthand::X; + +namespace { +struct SolverTestProblem { + NonlinearFactorGraph graph; + Values values; + Ordering ordering; +}; + +SolverTestProblem makeTwoPoseProblem(const Point2& between = Point2(2, 0)) { + SolverTestProblem problem; + auto priorModel = noiseModel::Isotropic::Sigma(2, 1.0); + auto model = noiseModel::Isotropic::Sigma(2, 1.0); + + problem.graph.emplace_shared>(X(1), Point2(0, 0), + priorModel); + problem.graph.emplace_shared>(X(1), X(2), between, + model); + + problem.values.insert(X(1), Point2(0, 0)); + problem.values.insert(X(2), Point2(0, 0)); + + problem.ordering.push_back(X(1)); + problem.ordering.push_back(X(2)); + return problem; +} + +// Helper to run solver iterations +void runIterations(const NonlinearFactorGraph& graph, + NonlinearMultifrontalSolver& solver, Values& values, + size_t iterations, double lambda = 0.0, + GaussianFactorGraph::shared_ptr initialLinear = {}) { + for (size_t i = 0; i < iterations; ++i) { + GaussianFactorGraph::shared_ptr linear; + if (i == 0 && initialLinear) { + linear = initialLinear; + } else { + linear = graph.linearize(values); + } + solver.eliminateInPlace(*linear, lambda); + VectorValues delta = solver.updateSolution(); + values = values.retract(delta); + } +} + +} // namespace + +/* ************************************************************************* */ +// One linearization + one elimination + one back-solve on a tiny 2-pose +// problem. Tests the basic happy-path flow: construct -> load -> +// eliminateInPlace -> updateSolution, and verifies the expected single-step +// update. +TEST(NonlinearMultifrontalSolver, OneStep) { + auto problem = makeTwoPoseProblem(Point2(1, 0)); + auto linear = problem.graph.linearize(problem.values); + + NonlinearMultifrontalSolver solver(problem.graph, problem.values, + problem.ordering); + + // 4. Load and eliminate + solver.eliminateInPlace(*linear, 0.0); + + // 5. Solve and Update + VectorValues delta = solver.updateSolution(); + Values result = problem.values.retract(delta); + + // 6. Check results + EXPECT(assert_equal(Point2(0, 0), result.at(X(1)), 1e-9)); + EXPECT(assert_equal(Point2(1, 0), result.at(X(2)), 1e-9)); +} + +/* ************************************************************************* */ +// Precompute the symbolic structure (junction tree, dimensions, fixed keys) +// from a nonlinear graph and initial values. +// Tests that Precompute succeeds and produces consistent sizing information. +TEST(NonlinearMultifrontalSolver, OneStepPrecomputed) { + auto problem = makeTwoPoseProblem(Point2(1, 0)); + + auto data = NonlinearMultifrontalSolver::Precompute( + problem.graph, problem.values, problem.ordering); + EXPECT(data.dims.count(X(1))); + EXPECT(data.dims.count(X(2))); + EXPECT(data.fixedKeys.empty()); + + auto linear = problem.graph.linearize(problem.values); + NonlinearMultifrontalSolver solver(problem.graph, problem.values, + problem.ordering); + solver.eliminateInPlace(*linear, {}); + + VectorValues delta = solver.updateSolution(); + Values result = problem.values.retract(delta); + + EXPECT(assert_equal(Point2(0, 0), result.at(X(1)), 1e-9)); + EXPECT(assert_equal(Point2(1, 0), result.at(X(2)), 1e-9)); +} + +/* ************************************************************************* */ +TEST(NonlinearMultifrontalSolver, PrecomputeHardConstraint) { + NonlinearFactorGraph graph; + Values values; + Ordering ordering; + + graph.emplace_shared>(X(1), Point2(1.0, 2.0)); + values.insert(X(1), Point2(0.0, 0.0)); + ordering.push_back(X(1)); + + auto data = NonlinearMultifrontalSolver::Precompute(graph, values, ordering); + CHECK_EQUAL(1, data.fixedKeys.size()); +} + +/* ************************************************************************* */ +TEST(NonlinearMultifrontalSolver, PrecomputeSoftConstraintThrows) { + NonlinearFactorGraph graph; + Values values; + Ordering ordering; + + graph.emplace_shared>(X(1), Point2(1.0, 2.0), 10.0); + values.insert(X(1), Point2(0.0, 0.0)); + ordering.push_back(X(1)); + + CHECK_EXCEPTION( + NonlinearMultifrontalSolver::Precompute(graph, values, ordering), + std::runtime_error); +} + +/* ************************************************************************* */ +// Run a first elimination to get an updated estimate, then deliberately +// perturb the estimate, re-linearize, reload, and eliminate again. +// Tests that load() correctly overwrites numeric data for subsequent solves. +TEST(NonlinearMultifrontalSolver, ReLinearize) { + auto problem = makeTwoPoseProblem(); + auto linear = problem.graph.linearize(problem.values); + NonlinearMultifrontalSolver solver(problem.graph, problem.values, + problem.ordering); + + // 4. First Step + solver.eliminateInPlace(*linear, {}); + VectorValues delta1 = solver.updateSolution(); + Values currentValues = problem.values.retract(delta1); + + // Expect X(2) to be (2,0) because it's linear P2 problem + EXPECT(assert_equal(Point2(2, 0), currentValues.at(X(2)), 1e-9)); + + // 5. Disturb values to check re-linearization logic + currentValues.update(X(2), Point2(1.0, 0.0)); + + // 6. Re-linearize + auto linear2 = problem.graph.linearize(currentValues); + solver.eliminateInPlace(*linear2, {}); // Re-linearize and eliminate. + VectorValues delta2 = solver.updateSolution(); + Values actual = currentValues.retract(delta2); + + // Expect X(2) to differ by delta = 1.0, so back to 2.0 + EXPECT(assert_equal(Point2(2, 0), actual.at(X(2)), 1e-9)); +} + +/* ************************************************************************* */ +// Repeatedly linearize at the current estimate and run eliminate/solve to +// convergence on a small problem (Gauss-Newton-style iterations). +// Tests that repeated load/eliminate/update cycles behave consistently. +TEST(NonlinearMultifrontalSolver, MultiIteration) { + auto problem = makeTwoPoseProblem(); + auto linear = problem.graph.linearize(problem.values); + NonlinearMultifrontalSolver solver(problem.graph, problem.values, + problem.ordering); + constexpr size_t kIterations = 5; + runIterations(problem.graph, solver, problem.values, kIterations, 0, linear); + + EXPECT(assert_equal(Point2(0, 0), problem.values.at(X(1)), 1e-9)); + EXPECT(assert_equal(Point2(2, 0), problem.values.at(X(2)), 1e-9)); +} + +/* ************************************************************************* */ +// Run multiple iterations with LM-style damping where damping is applied to +// the diagonal of the frontal Hessian blocks. +// Tests damped elimination and the diagonal-damping code path. +TEST(NonlinearMultifrontalSolver, DampedIterationsDiagonal) { + auto problem = makeTwoPoseProblem(); + NonlinearMultifrontalSolver::DampingParams params; + params.diagonalDamping = true; + auto linear = problem.graph.linearize(problem.values); + + MultifrontalSolver::Parameters mfParams; + mfParams.mergeDimCap = 0; + mfParams.qrMode = MultifrontalParameters::QRMode::Off; + NonlinearMultifrontalSolver solver(problem.graph, problem.values, + problem.ordering, mfParams, params); + constexpr size_t kIterations = 10; + runIterations(problem.graph, solver, problem.values, kIterations, 0.1, + linear); + + EXPECT(assert_equal(Point2(0, 0), problem.values.at(X(1)), 1e-6)); + EXPECT(assert_equal(Point2(2, 0), problem.values.at(X(2)), 1e-3)); +} + +/* ************************************************************************* */ +// Run multiple iterations with LM-style damping where damping is applied as +// an identity term on the frontal blocks (full damping). +// Tests damped elimination and the identity-damping code path. +TEST(NonlinearMultifrontalSolver, DampedIterationsFull) { + auto problem = makeTwoPoseProblem(); + NonlinearMultifrontalSolver::DampingParams params; + params.diagonalDamping = false; + auto linear = problem.graph.linearize(problem.values); + + MultifrontalSolver::Parameters mfParams; + mfParams.mergeDimCap = 0; + mfParams.qrMode = MultifrontalParameters::QRMode::Off; + NonlinearMultifrontalSolver solver(problem.graph, problem.values, + problem.ordering, mfParams, params); + constexpr size_t kIterations = 10; + runIterations(problem.graph, solver, problem.values, kIterations, 0.1, + linear); + + EXPECT(assert_equal(Point2(0, 0), problem.values.at(X(1)), 1e-6)); + EXPECT(assert_equal(Point2(2, 0), problem.values.at(X(2)), 1e-3)); +} + +/* ************************************************************************* */ +// Compare QR vs Cholesky on a single-clique elimination with damping. +// This is expected to fail until QR supports LM-style damping. +TEST(NonlinearMultifrontalSolver, DampedSingleCliqueQRVsCholesky) { + auto problem = makeTwoPoseProblem(); + auto linear = problem.graph.linearize(problem.values); + + MultifrontalSolver::Parameters qrParams; + qrParams.mergeDimCap = 0; + qrParams.qrMode = MultifrontalParameters::QRMode::Force; + NonlinearMultifrontalSolver qrSolver(problem.graph, problem.values, + problem.ordering, qrParams); + + MultifrontalSolver::Parameters choleskyParams; + choleskyParams.mergeDimCap = 0; + choleskyParams.qrMode = MultifrontalParameters::QRMode::Off; + NonlinearMultifrontalSolver choleskySolver(problem.graph, problem.values, + problem.ordering, choleskyParams); + + const double lambda = 1e-3; + choleskySolver.eliminateInPlace(*linear, lambda); + const VectorValues choleskyDelta = choleskySolver.updateSolution(); + + qrSolver.eliminateInPlace(*linear, lambda); + const VectorValues qrDelta = qrSolver.updateSolution(); + EXPECT(assert_equal(choleskyDelta, qrDelta, 1e-9)); +} + +/* ************************************************************************* */ +// Forced QR and Cholesky match for a damped smoother linearization across +// identity, diagonal, and exact diagonal damping variants. +TEST(NonlinearMultifrontalSolver, DampedSmootherQRMatchesCholesky) { + const double lambda = 1e-2; + auto [nlfg, poses] = example::createNonlinearSmoother(7); + poses.update(X(1), Point2(1.1, 0.2)); + auto linear = nlfg.linearize(poses); + const Ordering ordering{X(1), X(3), X(5), X(7), X(2), X(6), X(4)}; + + const auto solve = + [](const NonlinearFactorGraph& graph, const Values& values, + const Ordering& ordering, const GaussianFactorGraph& linear, + MultifrontalParameters::QRMode qrMode, + const NonlinearMultifrontalSolver::DampingParams& dampingParams, + double lambda) { + MultifrontalSolver::Parameters params; + params.mergeDimCap = 0; + params.qrMode = qrMode; + NonlinearMultifrontalSolver solver(graph, values, ordering, params, + dampingParams); + solver.eliminateInPlace(linear, lambda); + return solver.updateSolution(); + }; + + NonlinearMultifrontalSolver::DampingParams identity; + identity.diagonalDamping = false; + VectorValues identityQr = + solve(nlfg, poses, ordering, *linear, + MultifrontalParameters::QRMode::Force, identity, lambda); + VectorValues identityCholesky = + solve(nlfg, poses, ordering, *linear, MultifrontalParameters::QRMode::Off, + identity, lambda); + EXPECT(assert_equal(identityCholesky, identityQr, 1e-9)); + + NonlinearMultifrontalSolver::DampingParams diagonal; + diagonal.diagonalDamping = true; + diagonal.exactHessianDiagonal = false; + VectorValues diagonalQr = + solve(nlfg, poses, ordering, *linear, + MultifrontalParameters::QRMode::Force, diagonal, lambda); + VectorValues diagonalCholesky = + solve(nlfg, poses, ordering, *linear, MultifrontalParameters::QRMode::Off, + diagonal, lambda); + EXPECT(assert_equal(diagonalCholesky, diagonalQr, 1e-9)); + + NonlinearMultifrontalSolver::DampingParams exact; + exact.diagonalDamping = true; + exact.exactHessianDiagonal = true; + VectorValues exactQr = + solve(nlfg, poses, ordering, *linear, + MultifrontalParameters::QRMode::Force, exact, lambda); + VectorValues exactCholesky = + solve(nlfg, poses, ordering, *linear, MultifrontalParameters::QRMode::Off, + exact, lambda); + EXPECT(assert_equal(exactCholesky, exactQr, 1e-9)); +} + +/* ************************************************************************* */ +// Load a linearized graph once and then eliminate multiple times with +// different damping values (lambda), without reloading. This models common LM +// behavior where a fixed linearization is probed with several lambdas. +TEST(NonlinearMultifrontalSolver, ProbeMultipleLambdasSameLinearization) { + auto problem = makeTwoPoseProblem(Point2(2, 0)); + auto linear = problem.graph.linearize(problem.values); + + NonlinearMultifrontalSolver::DampingParams dampingParams; + dampingParams.diagonalDamping = false; + + MultifrontalSolver::Parameters mfParams; + mfParams.mergeDimCap = 0; + mfParams.qrMode = MultifrontalParameters::QRMode::Off; + NonlinearMultifrontalSolver solver(problem.graph, problem.values, + problem.ordering, mfParams, dampingParams); + + solver.load(*linear); + + const double lambdaSmall = 1e-3; + solver.eliminateInPlace(lambdaSmall); + const VectorValues deltaSmall = solver.updateSolution(); + + const double lambdaLarge = 1e3; + solver.eliminateInPlace(lambdaLarge); + const VectorValues deltaLarge = solver.updateSolution(); + + EXPECT(deltaLarge.norm() < deltaSmall.norm()); +} + +/* ************************************************************************* */ +// Check the BAL 16-camera dataset error before and after one LM iteration for +// legacy multifrontal Cholesky and the new multifrontal solver (QR off/forced). +# ifdef TEST_BAL16_DATASET +double runBal16OneIteration( + const NonlinearFactorGraph& graph, const Values& initial, + const Ordering& ordering, + NonlinearOptimizerParams::LinearSolverType solverType) { + const double lambda = 1e-5; + GaussianFactorGraph::shared_ptr linear = graph.linearize(initial); + VectorValues delta; + if (solverType == NonlinearOptimizerParams::MULTIFRONTAL_SOLVER) { + MultifrontalSolver::Parameters params; + params.qrMode = MultifrontalParameters::QRMode::Force; + NonlinearMultifrontalSolver solver(graph, initial, ordering, params); + solver.eliminateInPlace(*linear, lambda); + delta = solver.updateSolution(); + } else if (solverType == NonlinearOptimizerParams::MULTIFRONTAL_QR) { + GaussianFactorGraph damped = *linear; + const auto dims = initial.dims(); + const double sigma = 1.0 / std::sqrt(lambda); + for (const auto& [key, dim] : dims) { + damped.emplace_shared( + key, Matrix::Identity(dim, dim), Vector::Zero(dim), + noiseModel::Isotropic::Sigma(dim, sigma)); + } + delta = damped.optimize(ordering, EliminateQR); + } else { + throw std::runtime_error("Unsupported solver type for BAL test."); + } + const Values updated = initial.retract(delta); + return graph.error(updated); +} + +TEST(NonlinearMultifrontalSolver, Bal16ErrorOneIteration) { + const string filename = findExampleDataFile("dubrovnik-16-22106-pre"); + SfmData db = SfmData::FromBalFile(filename); + db.tracks.resize(1000); + NonlinearFactorGraph graph = db.generalSfmFactors(); + const Values initial = initialCamerasAndPointsEstimate(db); + + // Create ordering: first points, then cameras + Ordering ordering; + ordering.reserve(db.numberTracks() + db.numberCameras()); + for (size_t j = 0; j < db.numberTracks(); ++j) { + ordering.push_back(P(j)); + } + for (size_t i = 0; i < db.numberCameras(); ++i) { + ordering.push_back(i); + } + + // Run legacy multifrontal Cholesky and new solver (QR forced) + const double legacyAfterError = runBal16OneIteration( + graph, initial, ordering, NonlinearOptimizerParams::MULTIFRONTAL_QR); + const double solverForceAfterError = runBal16OneIteration( + graph, initial, ordering, NonlinearOptimizerParams::MULTIFRONTAL_SOLVER); + EXPECT_DOUBLES_EQUAL(legacyAfterError, solverForceAfterError, 20.0); +} +#endif + +/* ************************************************************************* */ +int main() { + TestResult tr; + return TestRegistry::runAllTests(tr); +} diff --git a/gtsam/nonlinear/tests/testUtilities.cpp b/gtsam/nonlinear/tests/testUtilities.cpp index 55a7fdb136..8dfcda30fc 100644 --- a/gtsam/nonlinear/tests/testUtilities.cpp +++ b/gtsam/nonlinear/tests/testUtilities.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -28,6 +29,8 @@ using gtsam::symbol_shorthand::L; using gtsam::symbol_shorthand::R; using gtsam::symbol_shorthand::X; +static constexpr double kTol = 1e-9; + /* ************************************************************************* */ TEST(Utilities, ExtractPoint2) { Point2 p0(0, 0), p1(1, 0); @@ -54,6 +57,92 @@ TEST(Utilities, ExtractPoint3) { EXPECT_LONGS_EQUAL(2, all_points.rows()); } +/* ************************************************************************* */ +TEST(Utilities, PerturbPoint2) { + Values base; + base.insert(L(0), Point2(1.0, 2.0)); + base.insert(L(1), (Vector(2) << 3.0, 4.0).finished()); + + Values v1 = base, v2 = base; + utilities::perturbPoint2(v1, /*sigma=*/0.1, /*seed=*/42u); + utilities::perturbPoint2(v2, /*sigma=*/0.1, /*seed=*/42u); + EXPECT(assert_equal(v1, v2, kTol)); + + const Point2 p0 = base.at(L(0)); + const Point2 p1 = v1.at(L(0)); + EXPECT((p1 - p0).norm() > 0.0); + + const Vector w0 = base.at(L(1)); + const Vector w1 = v1.at(L(1)); + EXPECT((w1 - w0).norm() > 0.0); + + Values v3 = base; + utilities::perturbPoint2(v3, /*sigma=*/0.0, /*seed=*/42u); + EXPECT(assert_equal(v3, base, kTol)); +} + +/* ************************************************************************* */ +TEST(Utilities, PerturbPoint3) { + Values base; + base.insert(L(0), Point3(1.0, 2.0, 3.0)); + base.insert(L(1), (Vector(3) << 4.0, 5.0, 6.0).finished()); + + Values v1 = base, v2 = base; + utilities::perturbPoint3(v1, /*sigma=*/0.1, /*seed=*/42u); + utilities::perturbPoint3(v2, /*sigma=*/0.1, /*seed=*/42u); + EXPECT(assert_equal(v1, v2, kTol)); + + const Point3 p0 = base.at(L(0)); + const Point3 p1 = v1.at(L(0)); + EXPECT((p1 - p0).norm() > 0.0); + + const Vector w0 = base.at(L(1)); + const Vector w1 = v1.at(L(1)); + EXPECT((w1 - w0).norm() > 0.0); + + Values v3 = base; + utilities::perturbPoint3(v3, /*sigma=*/0.0, /*seed=*/42u); + EXPECT(assert_equal(v3, base, kTol)); +} + +/* ************************************************************************* */ +TEST(Utilities, PerturbPose2) { + Values base; + const Pose2 pose0(1.0, 2.0, 0.3); + base.insert(X(0), pose0); + + Values v1 = base, v2 = base; + utilities::perturbPose2(v1, /*sigmaT=*/0.1, /*sigmaR=*/0.2, /*seed=*/42u); + utilities::perturbPose2(v2, /*sigmaT=*/0.1, /*sigmaR=*/0.2, /*seed=*/42u); + EXPECT(assert_equal(v1, v2, kTol)); + + const Pose2 pose1 = v1.at(X(0)); + EXPECT(!pose1.equals(pose0, kTol)); + + Values v3 = base; + utilities::perturbPose2(v3, /*sigmaT=*/0.0, /*sigmaR=*/0.0, /*seed=*/42u); + EXPECT(assert_equal(v3, base, kTol)); +} + +/* ************************************************************************* */ +TEST(Utilities, PerturbPose3) { + Values base; + const Pose3 pose0; + base.insert(X(0), pose0); + + Values v1 = base, v2 = base; + utilities::perturbPose3(v1, /*sigmaT=*/0.1, /*sigmaR=*/0.2, /*seed=*/42u); + utilities::perturbPose3(v2, /*sigmaT=*/0.1, /*sigmaR=*/0.2, /*seed=*/42u); + EXPECT(assert_equal(v1, v2, kTol)); + + const Pose3 pose1 = v1.at(X(0)); + EXPECT(!pose1.equals(pose0, kTol)); + + Values v3 = base; + utilities::perturbPose3(v3, /*sigmaT=*/0.0, /*sigmaR=*/0.0, /*seed=*/42u); + EXPECT(assert_equal(v3, base, kTol)); +} + /* ************************************************************************* */ TEST(Utilities, ExtractVector) { // Test normal case with 3 vectors and 1 non-vector (ignore non-vector) diff --git a/gtsam/nonlinear/utilities.h b/gtsam/nonlinear/utilities.h index 0a0ceb849b..2b953bbd0b 100644 --- a/gtsam/nonlinear/utilities.h +++ b/gtsam/nonlinear/utilities.h @@ -196,51 +196,98 @@ Matrix extractVectors(const Values& values, char c) { return result; } -/// Perturb all Point2 values using normally distributed noise +/** + * Perturbs all 2D point values in a Values container using isotropic Gaussian + * noise. + * + * This updates in-place both Point2 entries and any Vector entries of size 2 + * by adding zero-mean Gaussian noise with the given standard deviation. + * + * @param values Values whose Point2/2D Vector entries will be perturbed. + * @param sigma Standard deviation of the isotropic Gaussian noise applied. + * @param seed Random seed used by the Sampler (default 42u). + */ void perturbPoint2(Values& values, double sigma, int32_t seed = 42u) { - noiseModel::Isotropic::shared_ptr model = - noiseModel::Isotropic::Sigma(2, sigma); + auto model = noiseModel::Isotropic::Sigma(2, sigma); Sampler sampler(model, seed); - for (const auto& key_value : values.extract()) { - values.update(key_value.first, - key_value.second + Point2(sampler.sample())); + for (const auto& [key, value] : values.extract()) { + values.update(key, sampler.perturb(value)); } - for (const auto& key_value : values.extract()) { - if (key_value.second.rows() == 2) { - values.update(key_value.first, - key_value.second + Point2(sampler.sample())); + for (const auto& [key, value] : values.extract()) { + if (value.rows() == 2) { + values.update(key, sampler.perturb(value)); } } } -/// Perturb all Pose2 values using normally distributed noise -void perturbPose2(Values& values, double sigmaT, double sigmaR, int32_t seed = - 42u) { - noiseModel::Diagonal::shared_ptr model = noiseModel::Diagonal::Sigmas( - Vector3(sigmaT, sigmaT, sigmaR)); +/** + * Perturbs all 2D pose values (Pose2) in a Values container using diagonal + * Gaussian noise. + * + * The translational components (x, y) are perturbed with sigmaT, and the + * rotational component (theta) is perturbed with sigmaR. + * + * @param values Values container whose Pose2 entries will be perturbed. + * @param sigmaT Standard deviation for translational noise. + * @param sigmaR Standard deviation for rotational noise (applied to theta). + * @param seed Random seed used by the Sampler (default 42u). + */ +void perturbPose2(Values& values, double sigmaT, double sigmaR, + int32_t seed = 42u) { + auto model = noiseModel::Diagonal::Sigmas(Vector3(sigmaT, sigmaT, sigmaR)); Sampler sampler(model, seed); - for(const auto& key_value: values.extract()) { - values.update(key_value.first, key_value.second.retract(sampler.sample())); + for (const auto& [key, value] : values.extract()) { + values.update(key, sampler.perturb(value)); } } -/// Perturb all Point3 values using normally distributed noise +/** + * Perturbs all 3D point values in a Values container using isotropic Gaussian + * noise. + * + * This updates in-place both Point3 entries and any Vector entries of size 3 + * by adding zero-mean Gaussian noise with the given standard deviation. + * + * @param values Values whose Point3 and 3D Vector entries will be perturbed. + * @param sigma Standard deviation of the isotropic Gaussian noise applied. + * @param seed Random seed used by the Sampler (default 42u). + */ void perturbPoint3(Values& values, double sigma, int32_t seed = 42u) { - noiseModel::Isotropic::shared_ptr model = - noiseModel::Isotropic::Sigma(3, sigma); + auto model = noiseModel::Isotropic::Sigma(3, sigma); Sampler sampler(model, seed); - for (const auto& key_value : values.extract()) { - values.update(key_value.first, - key_value.second + Point3(sampler.sample())); + for (const auto& [key, value] : values.extract()) { + values.update(key, sampler.perturb(value)); } - for (const auto& key_value : values.extract()) { - if (key_value.second.rows() == 3) { - values.update(key_value.first, - key_value.second + Point3(sampler.sample())); + for (const auto& [key, value] : values.extract()) { + if (value.rows() == 3) { + values.update(key, sampler.perturb(value)); } } } +/** + * Perturbs all 3D pose values (Pose3) in a Values container using diagonal + * Gaussian noise. + * + * The noise is applied in the tangent space order [rx, ry, rz, tx, ty, tz], + * where rotational components are perturbed with sigmaR and translational + * components with sigmaT. + * + * @param values Values container whose Pose3 entries will be perturbed. + * @param sigmaT Standard deviation for translational noise. + * @param sigmaR Standard deviation for rotational noise. + * @param seed Random seed used by the Sampler (default 42u). + */ +void perturbPose3(Values& values, double sigmaT, double sigmaR, + int32_t seed = 42u) { + auto model = noiseModel::Diagonal::Sigmas( + (Vector6() << sigmaR, sigmaR, sigmaR, sigmaT, sigmaT, sigmaT).finished()); + Sampler sampler(model, seed); + for (const auto& [key, value] : values.extract()) { + values.update(key, sampler.perturb(value)); + } +} + /** * @brief Insert a number of initial point values by backprojecting * @@ -347,4 +394,3 @@ Values localToWorld(const Values& local, const Pose2& base, } // namespace utilities } - diff --git a/gtsam/sam/RangeFactor.h b/gtsam/sam/RangeFactor.h index 0ccc54afdc..90c854fbbe 100644 --- a/gtsam/sam/RangeFactor.h +++ b/gtsam/sam/RangeFactor.h @@ -109,7 +109,7 @@ class RangeFactorWithTransform : public ExpressionFactorN { A1 body_T_sensor_; ///< The pose of the sensor in the body frame public: - //// Default constructor + /// Default constructor RangeFactorWithTransform() {} RangeFactorWithTransform(Key key1, Key key2, T measured, diff --git a/gtsam/sfm/BinaryMeasurement.h b/gtsam/sfm/BinaryMeasurement.h index 07aa2e3a5f..4d15fa158d 100644 --- a/gtsam/sfm/BinaryMeasurement.h +++ b/gtsam/sfm/BinaryMeasurement.h @@ -33,24 +33,25 @@ namespace gtsam { -template class BinaryMeasurement : public Factor { +template +class BinaryMeasurement : public Factor { // Check that T type is testable GTSAM_CONCEPT_ASSERT(IsTestable); -public: + public: // shorthand for a smart pointer to a measurement using shared_ptr = typename std::shared_ptr; -private: - T measured_; ///< The measurement - SharedNoiseModel noiseModel_; ///< Noise model + private: + T measured_; ///< The measurement + SharedNoiseModel noiseModel_; ///< Noise model public: BinaryMeasurement(Key key1, Key key2, const T &measured, const SharedNoiseModel &model = nullptr) : Factor(std::vector({key1, key2})), measured_(measured), - noiseModel_(model) {} + noiseModel_(noiseModel::validOrDefault(measured, model)) {} /// @name Standard Interface /// @{ @@ -81,4 +82,4 @@ template class BinaryMeasurement : public Factor { } /// @} }; -} // namespace gtsam +} // namespace gtsam diff --git a/gtsam/sfm/SfmData.cpp b/gtsam/sfm/SfmData.cpp index 6c6b471e6f..2618fe3b29 100644 --- a/gtsam/sfm/SfmData.cpp +++ b/gtsam/sfm/SfmData.cpp @@ -22,6 +22,7 @@ #include #include +#include namespace gtsam { @@ -106,6 +107,7 @@ SfmData SfmData::FromBundlerFile(const std::string &filename) { throw std::runtime_error( "Error in FromBundlerFile: can not find the file!!"); } + is.imbue(std::locale::classic()); SfmData sfmData; @@ -115,20 +117,30 @@ SfmData SfmData::FromBundlerFile(const std::string &filename) { // Get the number of camera poses and 3D points size_t nrPoses, nrPoints; - is >> nrPoses >> nrPoints; + if (!(is >> nrPoses >> nrPoints)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read header from file"); + } // Get the information for the camera poses for (size_t i = 0; i < nrPoses; i++) { // Get the focal length and the radial distortion parameters - float f, k1, k2; - is >> f >> k1 >> k2; + double f = 0.0, k1 = 0.0, k2 = 0.0; + if (!(is >> f >> k1 >> k2)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read camera calibration"); + } Cal3Bundler K(f, k1, k2); // Get the rotation matrix - float r11, r12, r13; - float r21, r22, r23; - float r31, r32, r33; - is >> r11 >> r12 >> r13 >> r21 >> r22 >> r23 >> r31 >> r32 >> r33; + double r11 = 0.0, r12 = 0.0, r13 = 0.0; + double r21 = 0.0, r22 = 0.0, r23 = 0.0; + double r31 = 0.0, r32 = 0.0, r33 = 0.0; + if (!(is >> r11 >> r12 >> r13 >> r21 >> r22 >> r23 >> r31 >> r32 >> + r33)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read camera rotation"); + } // Bundler-OpenGL rotation matrix Rot3 R(r11, r12, r13, r21, r22, r23, r31, r32, r33); @@ -140,8 +152,11 @@ SfmData SfmData::FromBundlerFile(const std::string &filename) { } // Get the translation vector - float tx, ty, tz; - is >> tx >> ty >> tz; + double tx = 0.0, ty = 0.0, tz = 0.0; + if (!(is >> tx >> ty >> tz)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read camera translation"); + } Pose3 pose = openGL2gtsam(R, tx, ty, tz); @@ -154,27 +169,43 @@ SfmData SfmData::FromBundlerFile(const std::string &filename) { SfmTrack track; // Get the 3D position - float x, y, z; - is >> x >> y >> z; + double x = 0.0, y = 0.0, z = 0.0; + if (!(is >> x >> y >> z)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read point coordinates"); + } track.p = Point3(x, y, z); // Get the color information - float r, g, b; - is >> r >> g >> b; + double r = 0.0, g = 0.0, b = 0.0; + if (!(is >> r >> g >> b)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read point color"); + } track.r = r / 255.f; track.g = g / 255.f; track.b = b / 255.f; // Now get the visibility information size_t nvisible = 0; - is >> nvisible; + if (!(is >> nvisible)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read visibility count"); + } track.measurements.reserve(nvisible); track.siftIndices.reserve(nvisible); for (size_t k = 0; k < nvisible; k++) { size_t cam_idx = 0, point_idx = 0; - float u, v; - is >> cam_idx >> point_idx >> u >> v; + double u = 0.0, v = 0.0; + if (!(is >> cam_idx >> point_idx >> u >> v)) { + throw std::runtime_error( + "Error in FromBundlerFile: failed to read measurement data"); + } + if (cam_idx >= nrPoses) { + throw std::runtime_error( + "Error in FromBundlerFile: measurement camera index out of range"); + } track.measurements.emplace_back(cam_idx, Point2(u, -v)); track.siftIndices.emplace_back(cam_idx, point_idx); } @@ -192,39 +223,59 @@ SfmData SfmData::FromBalFile(const std::string &filename) { if (!is) { throw std::runtime_error("Error in FromBalFile: can not find the file!!"); } + is.imbue(std::locale::classic()); SfmData sfmData; // Get the number of camera poses and 3D points size_t nrPoses, nrPoints, nrObservations; - is >> nrPoses >> nrPoints >> nrObservations; + if (!(is >> nrPoses >> nrPoints >> nrObservations)) { + throw std::runtime_error( + "Error in FromBalFile: failed to read header from file"); + } sfmData.tracks.resize(nrPoints); // Get the information for the observations for (size_t k = 0; k < nrObservations; k++) { size_t i = 0, j = 0; - float u, v; - is >> i >> j >> u >> v; + double u = 0.0, v = 0.0; + if (!(is >> i >> j >> u >> v)) { + throw std::runtime_error( + "Error in FromBalFile: failed to read observation data"); + } + if (i >= nrPoses || j >= nrPoints) { + throw std::runtime_error( + "Error in FromBalFile: observation index out of range"); + } sfmData.tracks[j].measurements.emplace_back(i, Point2(u, -v)); } // Get the information for the camera poses for (size_t i = 0; i < nrPoses; i++) { // Get the Rodrigues vector - float wx, wy, wz; - is >> wx >> wy >> wz; + double wx = 0.0, wy = 0.0, wz = 0.0; + if (!(is >> wx >> wy >> wz)) { + throw std::runtime_error( + "Error in FromBalFile: failed to read camera rotation"); + } Rot3 R = Rot3::Rodrigues(wx, wy, wz); // BAL-OpenGL rotation matrix // Get the translation vector - float tx, ty, tz; - is >> tx >> ty >> tz; + double tx = 0.0, ty = 0.0, tz = 0.0; + if (!(is >> tx >> ty >> tz)) { + throw std::runtime_error( + "Error in FromBalFile: failed to read camera translation"); + } Pose3 pose = openGL2gtsam(R, tx, ty, tz); // Get the focal length and the radial distortion parameters - float f, k1, k2; - is >> f >> k1 >> k2; + double f = 0.0, k1 = 0.0, k2 = 0.0; + if (!(is >> f >> k1 >> k2)) { + throw std::runtime_error( + "Error in FromBalFile: failed to read camera calibration"); + } Cal3Bundler K(f, k1, k2); sfmData.cameras.emplace_back(pose, K); @@ -233,8 +284,11 @@ SfmData SfmData::FromBalFile(const std::string &filename) { // Get the information for the 3D points for (size_t j = 0; j < nrPoints; j++) { // Get the 3D position - float x, y, z; - is >> x >> y >> z; + double x = 0.0, y = 0.0, z = 0.0; + if (!(is >> x >> y >> z)) { + throw std::runtime_error( + "Error in FromBalFile: failed to read point coordinates"); + } SfmTrack &track = sfmData.tracks[j]; track.p = Point3(x, y, z); track.r = 0.4f; diff --git a/gtsam/sfm/ShonanAveraging.cpp b/gtsam/sfm/ShonanAveraging.cpp index b268fda6f6..b381fdeedf 100644 --- a/gtsam/sfm/ShonanAveraging.cpp +++ b/gtsam/sfm/ShonanAveraging.cpp @@ -98,7 +98,7 @@ template static size_t NrUnknowns( const typename ShonanAveraging::Measurements &measurements) { Key maxKey = 0; - std::set keys; + KeySet keys; for (const auto &measurement : measurements) { for (const Key &key : measurement.keys()) { maxKey = std::max(key, maxKey); @@ -827,8 +827,8 @@ Values ShonanAveraging::initializeWithDescent( double alphaMin = 1e-2; double alpha = std::max(1024 * alphaMin, 10 * gradienTolerance / fabs(minEigenValue)); - vector alphas; - vector fvals; + std::vector alphas; + std::vector fvals; // line search while ((alpha >= alphaMin)) { Values Qplus = LiftwithDescent(p, values, alpha * minEigenVector); @@ -937,7 +937,7 @@ ShonanAveraging2::ShonanAveraging2(const Measurements &measurements, : ShonanAveraging<2>(maybeRobust(measurements, parameters.getUseHuber()), parameters) {} -ShonanAveraging2::ShonanAveraging2(string g2oFile, const Parameters ¶meters) +ShonanAveraging2::ShonanAveraging2(std::string g2oFile, const Parameters ¶meters) : ShonanAveraging<2>(maybeRobust(parseMeasurements(g2oFile), parameters.getUseHuber()), parameters) {} @@ -983,7 +983,7 @@ ShonanAveraging3::ShonanAveraging3(const Measurements &measurements, : ShonanAveraging<3>(maybeRobust(measurements, parameters.getUseHuber()), parameters) {} -ShonanAveraging3::ShonanAveraging3(string g2oFile, const Parameters ¶meters) +ShonanAveraging3::ShonanAveraging3(std::string g2oFile, const Parameters ¶meters) : ShonanAveraging<3>(maybeRobust(parseMeasurements(g2oFile), parameters.getUseHuber()), parameters) {} diff --git a/gtsam/sfm/TrajectoryAlignerSim3.cpp b/gtsam/sfm/TrajectoryAlignerSim3.cpp new file mode 100644 index 0000000000..cc4af54e4f --- /dev/null +++ b/gtsam/sfm/TrajectoryAlignerSim3.cpp @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010-2020 + * All Rights Reserved + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +#include + +#include +#include + +#include +#include + +namespace { + +using namespace gtsam; + +struct MeasurementPair { + const UnaryMeasurement &first; + const UnaryMeasurement &second; +}; + +std::vector overlappingMeasurementPairs( + const std::vector> &first, + const std::vector> &second) { + std::unordered_map indexLookup; + indexLookup.reserve(second.size()); + for (size_t i = 0; i < second.size(); ++i) { + indexLookup.emplace(second[i].key(), i); + } + + std::vector pairs; + pairs.reserve(std::min(first.size(), second.size())); + for (const auto &m : first) { + auto it = indexLookup.find(m.key()); + if (it != indexLookup.end()) { + pairs.push_back({m, second[it->second]}); + } + } + return pairs; +} + +Similarity3 estimateInitialSim3(const std::vector &overlapPairs) { + if (overlapPairs.size() < 2) return Similarity3(); + Pose3Pairs pairs; + pairs.reserve(overlapPairs.size()); + for (const auto &[p1, p2] : overlapPairs) { + // Similarity3::Align expects the pairs to be in the form (aTi, bTi) + // to estimate aSb, but we want bSa, so we swap the pairs. + pairs.emplace_back(p2.measured(), p1.measured()); + } + try { + return Similarity3::Align(pairs); + } catch (const std::exception &) { + return Similarity3(); + } +} + +} // namespace + +namespace gtsam { +TrajectoryAlignerSim3::TrajectoryAlignerSim3( + const std::vector> &aTi, + const std::vector>> &bTi_all, + const std::vector &bSa_all) { + const size_t childCount = bTi_all.size(); + if (!bSa_all.empty() && bSa_all.size() != childCount) { + throw std::invalid_argument( + "TrajectoryAlignerSim3: bSa_all and bTi_all sizes differ"); + } + + // Add measurement factors for all parent poses. + for (const auto &meas : aTi) { + initial_.insert(meas.key(), meas.measured()); + graph_.addPrior(meas.key(), meas.measured(), meas.noiseModel()); + } + + // Measurement factors in child frame (only where camera exists in parent). + for (size_t childIdx = 0; childIdx < childCount; ++childIdx) { + const auto &bTi = bTi_all[childIdx]; + + const Key simKey = Symbol('S', childIdx); + + // If initial Sim3 estimates are provided, use them. + if (!bSa_all.empty()) { + initial_.insert(simKey, bSa_all[childIdx]); + } else { + const auto overlap = overlappingMeasurementPairs(aTi, bTi); + initial_.insert(simKey, estimateInitialSim3(overlap)); + } + + const Expression bSa(simKey); + for (const auto &meas : bTi) { + Key cameraKey = meas.key(); + if (!initial_.exists(cameraKey)) continue; + + const Pose3_ aPose(cameraKey); + const Pose3_ expected = Pose3_(bSa, &Similarity3::transformFrom, aPose); + graph_.addExpressionFactor(expected, meas.measured(), meas.noiseModel()); + } + } +} + +Values TrajectoryAlignerSim3::solve() const { + if (graph_.empty() || initial_.empty()) { + return initial_; + } + LevenbergMarquardtOptimizer optimizer(graph_, initial_); + return optimizer.optimize(); +} + +Marginals TrajectoryAlignerSim3::marginalize( + const Values& solution, const Ordering::OrderingType ordering_type) const { + Ordering ordering = Ordering::Create(ordering_type, graph_); + return Marginals(graph_, solution, ordering); +} + +} // namespace gtsam diff --git a/gtsam/sfm/TrajectoryAlignerSim3.h b/gtsam/sfm/TrajectoryAlignerSim3.h new file mode 100644 index 0000000000..0b1d5b3fd6 --- /dev/null +++ b/gtsam/sfm/TrajectoryAlignerSim3.h @@ -0,0 +1,91 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010-2020, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file TrajectoryAlignerSim3.h + * @author Akshay Krishnan + * @date January 2026 + * @brief Aligning a trajectory of poses to a reference trajectory using a similarity transform. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace gtsam { + +/** + * @brief Aligns Pose3 trajectories from multiple child coordinate frames to a + * parent reference frame using Sim3 (similarity) transformations. + * + * This class solves an optimization problem to find the best Sim3 transforms + * (rotation, translation, and scale) that align poses from one or more child + * coordinate frames to a parent reference frame. The optimization jointly + * refines both the parent frame poses and the child-to-parent transformations. + * + * The class takes as input: + * - Parent frame poses (aTi): Pose3 measurements in the parent coordinate frame + * - Child frame poses (bTi_all): Pose3 measurements in one or more child frames + * - (Optional) Initial Sim3 estimates (bSa_all): Initial transforms from parent + * to each child frame + * + * The output is a Values object containing: + * - Optimized parent frame poses (with keys from the input aTi measurements) + * - Optimized Sim3 transforms (with Symbol keys 'S' and index for each child) + */ +class GTSAM_EXPORT TrajectoryAlignerSim3 { + private: + // Data members. + ExpressionFactorGraph graph_; + Values initial_; + + public: + /** + * @brief Constructs a trajectory aligner with the given measurements. + * @param aTi Parent frame pose measurements (key-value pairs with noise) + * @param bTi_all Vector of child frame pose measurements, one vector per child + * @param bSa_all Initial Sim3 estimates transforming from parent to each child. + * If empty, initial estimates are computed automatically. + */ + TrajectoryAlignerSim3( + const std::vector> &aTi, + const std::vector>> &bTi_all, + const std::vector &bSa_all = {}); + + /** + * @brief Optimizes the graph and returns optimized poses and Sim3 transforms. + * @return The optimized poses and transforms. Contains: + * - Parent frame poses (with keys the same as those in input aTi measurements) + * - Sim3 transforms (with keys Symbol('S', i), where i is the child index) + */ + Values solve() const; + + /** + * @brief Computes the marginals of the solution. + * + * @param solution The solution to marginalize. + * Obtained from solve() or should contain the same keys as variables in graph_. + * @param ordering_type The ordering type to use for the marginalization. + * @return The Marginals object. + */ + Marginals marginalize( + const Values& solution, + const Ordering::OrderingType ordering_type = Ordering::COLAMD) const; +}; +} // namespace gtsam diff --git a/gtsam/sfm/TransferFactor.h b/gtsam/sfm/TransferFactor.h index 22fdabe9da..7fef8cacba 100644 --- a/gtsam/sfm/TransferFactor.h +++ b/gtsam/sfm/TransferFactor.h @@ -18,12 +18,14 @@ #include #include #include +#include #include #include #include #include #include +#include namespace gtsam { @@ -36,6 +38,14 @@ class TransferEdges { EdgeKey edge1_, edge2_; ///< The two EdgeKeys. uint32_t c_; ///< The transfer target + // Return appropriate noise model + static SharedNoiseModel defaultNoiseModel(size_t dim, + const SharedNoiseModel& model) { + if (!model) return noiseModel::Unit::Create(dim); + if (model->dim() == dim) return model; + throw std::runtime_error("TransferFactor: noise model dimension mismatch."); + } + public: TransferEdges(EdgeKey edge1, EdgeKey edge2) : edge1_(edge1), edge2_(edge2), c_(ViewC(edge1, edge2)) {} @@ -101,12 +111,13 @@ class TransferFactor : public NoiseModelFactorN, public TransferEdges { * @param edge2 Second EdgeKey specifying F2: (b, c) or (c, b). * @param triplets A vector of triplets containing (pa, pb, pc). * @param model An optional SharedNoiseModel that defines the noise model - * for this factor. Defaults to nullptr. + * for this factor. Defaults to unit noise. */ TransferFactor(EdgeKey edge1, EdgeKey edge2, const std::vector& triplets, const SharedNoiseModel& model = nullptr) - : Base(model, edge1, edge2), + : Base(TransferEdges::defaultNoiseModel(2 * triplets.size(), model), + edge1, edge2), TransferEdges(edge1, edge2), triplets_(triplets) {} @@ -247,7 +258,8 @@ class EssentialTransferFactorK EssentialTransferFactorK(EdgeKey edge1, EdgeKey edge2, const std::vector& triplets, const SharedNoiseModel& model = nullptr) - : Base(model, edge1, edge2, + : Base(TransferEdges::defaultNoiseModel(2 * triplets.size(), model), + edge1, edge2, Symbol('k', ViewA(edge1, edge2)), // calibration key for view a Symbol('k', ViewB(edge1, edge2)), // calibration key for view b Symbol('k', ViewC(edge1, edge2))), // calibration key for target c @@ -268,7 +280,8 @@ class EssentialTransferFactorK EssentialTransferFactorK(EdgeKey edge1, EdgeKey edge2, Key keyK, const std::vector& triplets, const SharedNoiseModel& model = nullptr) - : Base(model, edge1, edge2, keyK, keyK, keyK), + : Base(TransferEdges::defaultNoiseModel(2 * triplets.size(), model), + edge1, edge2, keyK, keyK, keyK), TransferEdges(edge1, edge2), triplets_(triplets) {} @@ -320,4 +333,4 @@ class EssentialTransferFactorK size_t dim() const override { return 2 * triplets_.size(); } }; -} // namespace gtsam \ No newline at end of file +} // namespace gtsam diff --git a/gtsam/sfm/TranslationRecovery.cpp b/gtsam/sfm/TranslationRecovery.cpp index 828aa6880a..d395aded93 100644 --- a/gtsam/sfm/TranslationRecovery.cpp +++ b/gtsam/sfm/TranslationRecovery.cpp @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -38,8 +39,9 @@ using namespace gtsam; using namespace std; +namespace { // In Wrappers we have no access to this so have a default ready. -static std::mt19937 kPRNG(42); +std::mt19937 kPRNG(42); // Some relative translations may be zero. We treat nodes that have a zero // relativeTranslation as a single node. @@ -96,6 +98,27 @@ Values addSameTranslationNodes(const Values &result, return final_result; } +// A hacky noise conversion function because we really should be optimizing for +// Unit3s rather than Point3s, in which case the noise model can be whatever it +// wants. Unfortunately, we are given Unit3 measurements and Point3 unknowns, +// which is a mismatch in this class' setup. +using noiseModel::Isotropic; +SharedNoiseModel convertNoiseModel(const SharedNoiseModel &unit3NoiseModel) { + if (auto isotropic = std::dynamic_pointer_cast(unit3NoiseModel)) { + return noiseModel::Isotropic::Sigma(3, isotropic->sigma()); + } + if (auto robust = + std::dynamic_pointer_cast(unit3NoiseModel)) { + // Preserve the robust kernel while converting the wrapped noise model. + return noiseModel::Robust::Create(robust->robust(), + convertNoiseModel(robust->noise())); + } + throw std::runtime_error( + "TranslationRecovery::convertNoiseModel: only isotropic (optionally " + "robust-wrapped) noise model supported."); +} +} // namespace + NonlinearFactorGraph TranslationRecovery::buildGraph( const std::vector> &relativeTranslations) const { NonlinearFactorGraph graph; @@ -103,13 +126,13 @@ NonlinearFactorGraph TranslationRecovery::buildGraph( // Add translation factors for input translation directions. uint64_t i = 0; for (auto edge : relativeTranslations) { + auto model = convertNoiseModel(edge.noiseModel()); if (use_bilinear_translation_factor_) { graph.emplace_shared( - edge.key1(), edge.key2(), Symbol('S', i), edge.measured(), - edge.noiseModel()); + edge.key1(), edge.key2(), Symbol('S', i), edge.measured(), model); } else { - graph.emplace_shared( - edge.key1(), edge.key2(), edge.measured(), edge.noiseModel()); + graph.emplace_shared(edge.key1(), edge.key2(), + edge.measured(), model); } i++; } @@ -124,13 +147,12 @@ void TranslationRecovery::addPrior( const SharedNoiseModel &priorNoiseModel) const { auto edge = relativeTranslations.begin(); if (edge == relativeTranslations.end()) return; - graph->emplace_shared>(edge->key1(), Point3(0, 0, 0), - priorNoiseModel); + graph->addPrior(edge->key1(), Point3(0, 0, 0), priorNoiseModel); // Add a scale prior only if no other between factors were added. if (betweenTranslations.empty()) { - graph->emplace_shared>( - edge->key2(), scale * edge->measured().point3(), edge->noiseModel()); + auto model = convertNoiseModel(edge->noiseModel()); + graph->addPrior(edge->key2(), scale * edge->measured(), model); return; } @@ -184,8 +206,8 @@ Values TranslationRecovery::initializeRandomly( const std::vector> &relativeTranslations, const std::vector> &betweenTranslations, const Values &initialValues) const { - return initializeRandomly(relativeTranslations, betweenTranslations, - &kPRNG, initialValues); + return initializeRandomly(relativeTranslations, betweenTranslations, &kPRNG, + initialValues); } Values TranslationRecovery::run( @@ -229,11 +251,9 @@ Values TranslationRecovery::run( TranslationRecovery::TranslationEdges TranslationRecovery::SimulateMeasurements( const Values &poses, const vector &edges) { - auto edgeNoiseModel = noiseModel::Isotropic::Sigma(3, 0.01); + auto edgeNoiseModel = noiseModel::Isotropic::Sigma(2, 0.01); TranslationEdges relativeTranslations; - for (auto edge : edges) { - Key a, b; - tie(a, b) = edge; + for (const auto& [a, b] : edges) { const Pose3 wTa = poses.at(a), wTb = poses.at(b); const Point3 Ta = wTa.translation(), Tb = wTb.translation(); const Unit3 w_aZb(Tb - Ta); diff --git a/gtsam/sfm/UnaryMeasurement.h b/gtsam/sfm/UnaryMeasurement.h new file mode 100644 index 0000000000..e013d49bb8 --- /dev/null +++ b/gtsam/sfm/UnaryMeasurement.h @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010-2020, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +#pragma once + +/** + * @file UnaryMeasurement.h + * @author Akshay Krishnan + * @date January 2026 + * @brief Unary measurement represents a measurement on a single key in a graph. + * It mirrors BinaryMeasurement but holds just one key. The measurement value + * and noise model are stored without an accompanying error function. + */ + +#include +#include +#include +#include + +#include +#include +#include + +namespace gtsam { + +/** + * @brief Unary measurement represents a measurement on a single key in a graph. + */ +template +class UnaryMeasurement : public Factor { + // Check that T type is testable + GTSAM_CONCEPT_ASSERT(IsTestable); + + public: + // shorthand for a smart pointer to a measurement + using shared_ptr = std::shared_ptr; + + private: + T measured_; ///< The measurement + SharedNoiseModel noiseModel_; ///< Noise model + + public: + /** + * @brief Constructs a unary measurement with a key, value, and noise model. + * @param key The key of the measurement. + * @param measured The measurement value. + * @param model The noise model (optional). + */ + UnaryMeasurement(Key key, const T &measured, + const SharedNoiseModel &model = nullptr) + : Factor(std::vector({key})), + measured_(measured), + noiseModel_(noiseModel::validOrDefault(measured, model)) {} + + /// @name Standard Interface + /// @{ + + // Returns the key of the measurement. + Key key() const { return keys_[0]; } + // Returns the measurement value. + const T &measured() const { return measured_; } + // Returns the noise model. + const SharedNoiseModel &noiseModel() const { return noiseModel_; } + + /// @} + /// @name Testable + /// @{ + + // Prints the measurement. + void print(const std::string &s, const KeyFormatter &keyFormatter = + DefaultKeyFormatter) const override { + std::cout << s << "UnaryMeasurement(" << keyFormatter(this->key()) << ")\n"; + traits::Print(measured_, " measured: "); + if (noiseModel_) + noiseModel_->print(" noise model: "); + else + std::cout << " noise model: (null)\n"; + } + + // Checks if the measurement is equal to another measurement. + bool equals(const UnaryMeasurement &expected, double tol = 1e-9) const { + const UnaryMeasurement *e = + dynamic_cast *>(&expected); + return e != nullptr && Factor::equals(*e) && + traits::Equals(this->measured_, e->measured_, tol) && + ((!noiseModel_ && !expected.noiseModel_) || + (noiseModel_ && noiseModel_->equals(*expected.noiseModel()))); + } + /// @} +}; +} // namespace gtsam diff --git a/gtsam/sfm/sfm.i b/gtsam/sfm/sfm.i index d7b7afbebc..1084b10d5e 100644 --- a/gtsam/sfm/sfm.i +++ b/gtsam/sfm/sfm.i @@ -22,6 +22,7 @@ class SfmTrack2d { virtual class SfmTrack : gtsam::SfmTrack2d { SfmTrack(); SfmTrack(const gtsam::Point3& pt); + SfmTrack(const gtsam::Point3& pt, float r, float g, float b); const Point3& point3() const; Point3 p; @@ -114,6 +115,20 @@ virtual class ShonanFactor3 : gtsam::NoiseModelFactor { gtsam::Vector evaluateError(const gtsam::SOn& Q1, const gtsam::SOn& Q2); }; +#include +template +class UnaryMeasurement { + UnaryMeasurement(gtsam::Key key, const T& measured, + const gtsam::noiseModel::Base* model); + gtsam::Key key() const; + T measured() const; + gtsam::noiseModel::Base* noiseModel() const; +}; + +typedef gtsam::UnaryMeasurement UnaryMeasurementPose3; +typedef gtsam::UnaryMeasurement UnaryMeasurementRot3; +typedef gtsam::UnaryMeasurement UnaryMeasurementPoint3; + #include template class BinaryMeasurement { @@ -153,6 +168,23 @@ class BinaryMeasurementsRot3 { void push_back(const gtsam::BinaryMeasurement& measurement); }; +#include +class TrajectoryAlignerSim3 { + TrajectoryAlignerSim3( + const std::vector>& aTi, + const std::vector>>& bTi_all); + + TrajectoryAlignerSim3( + const std::vector>& aTi, + const std::vector>>& bTi_all, + const std::vector& bSa_all); + + gtsam::Values solve() const; + gtsam::Marginals marginalize( + const gtsam::Values& solution, + const gtsam::Ordering::OrderingType ordering_type = gtsam::Ordering::COLAMD) const; +}; + #include #include diff --git a/gtsam/sfm/tests/testTrajectoryAlignerSim3.cpp b/gtsam/sfm/tests/testTrajectoryAlignerSim3.cpp new file mode 100644 index 0000000000..a1cfefa2b2 --- /dev/null +++ b/gtsam/sfm/tests/testTrajectoryAlignerSim3.cpp @@ -0,0 +1,243 @@ +/* ---------------------------------------------------------------------------- + * GTSAM Copyright 2010-2020, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * See LICENSE for the license information + * -------------------------------------------------------------------------- */ + +/** + * @file testTrajectoryAlignerSim3.cpp + * @author Akshay Krishnan + * @date January 2026 + * @brief Unit tests for the TrajectoryAlignerSim3 class. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace gtsam; +using PoseMeasurements = std::vector>; +using ChildrenPoses = std::vector>>; + +namespace { + +Values makeParentValues() { + Values values; + values.insert(0, Pose3::Identity()); + values.insert(1, Pose3(Rot3::RzRyRx(0.15, -0.2, 0.1), Point3(1.0, 0.1, 0.0))); + values.insert(2, Pose3(Rot3::RzRyRx(0.1, 0.05, -0.03), Point3(2.0, 0.4, 0.1))); + return values; +} + +// Makes a vector of unary measurements from a Values of poses. +PoseMeasurements makeMeasurements(const Values& poses, double noiseSigma = 1e-3) { + PoseMeasurements m; + auto noise = noiseModel::Isotropic::Sigma(6, noiseSigma); + for (const auto& key_value : poses) { + const Key key = key_value.key; + m.emplace_back(key, poses.at(key), noise); + } + return m; +} + +// Transforms values of poses by a similarity transform. +Values transformValues(const Similarity3& sim, const Values& poses) { + Values out; + for (const auto& key_value : poses) { + const Key key = key_value.key; + out.insert(key, sim.transformFrom(poses.at(key))); + } + return out; +} + +// Perturbs a Values of poses by a small noise. +Values perturbPoses(const Values& poses) { + Values perturbed = poses; + utilities::perturbPose3(perturbed, /*sigmaT=*/0.01, /*sigmaR=*/0.01); + return perturbed; +} + +// Perturbs a similarity transform by a large value. +// The initial similarity estimate can be very inaccurate. +Similarity3 perturbSim3(const Similarity3& sim) { + Similarity3 delta(Rot3::RzRyRx(0.2, -0.25, 0.1), Point3(2, 3, -1), + 2.3); + return sim * delta; +} + +// Ground truth similarity transforms for the tests. +const Similarity3 gtSim1(Rot3::RzRyRx(0.2, 0.1, -0.05), Point3(0.3, -0.1, 0.2), + 1.5); +const Similarity3 gtSim2(Rot3::RzRyRx(-0.15, 0.05, 0.08), + Point3(-0.2, 0.15, 0.25), 1.3); +const Similarity3 gtSim3(Rot3::RzRyRx(0.05, -0.08, 0.12), + Point3(0.15, 0.05, -0.1), 1.1); + +// Helper function to check if two similarity transforms are close. +bool simClose(const Similarity3& expected, const Similarity3& actual, + double tol) { + return assert_equal(expected, actual, tol); +} + +} // namespace + +/* ************************************************************************* */ +TEST(TrajectoryAlignerSim3, PerfectSingleChild) { + const auto parent = makeParentValues(); + const auto child = transformValues(gtSim1, parent); + + PoseMeasurements aTi = makeMeasurements(parent); + ChildrenPoses bTi_all{makeMeasurements(child)}; + std::vector sims{gtSim1}; + + TrajectoryAlignerSim3 aligner(aTi, bTi_all, sims); + Values result = aligner.solve(); + + const auto recoveredSim = result.at(Symbol('S', 0)); + EXPECT(simClose(gtSim1, recoveredSim, 1e-6)); + + for (const auto& kv : parent) { + const Key key = kv.key; + EXPECT(assert_equal(parent.at(key), result.at(key), 1e-6)); + } +} + +/* ************************************************************************* */ +TEST(TrajectoryAlignerSim3, PerfectSingleChildNoInitialSim) { + const auto parent = makeParentValues(); + const Similarity3 gtSim(Rot3::RzRyRx(0.25, -0.05, 0.12), + Point3(-0.3, 0.2, -0.15), 1.4); + const auto child = transformValues(gtSim, parent); + + PoseMeasurements aTi = makeMeasurements(parent); + ChildrenPoses bTi_all{makeMeasurements(child)}; + + TrajectoryAlignerSim3 aligner(aTi, bTi_all); + Values result = aligner.solve(); + + const auto recoveredSim = result.at(Symbol('S', 0)); + EXPECT(simClose(gtSim, recoveredSim, 1e-6)); +} + +/* ************************************************************************* */ +TEST(TrajectoryAlignerSim3, NoisySingleChild) { + const auto parent = makeParentValues(); + const auto child = transformValues(gtSim1, parent); + const auto perturbedChild = perturbPoses(child); + + PoseMeasurements aTi = makeMeasurements(parent, /*noiseSigma=*/1e-2); + PoseMeasurements bTi = makeMeasurements(perturbedChild, 1e-1); + ChildrenPoses bTi_all{bTi}; + std::vector sims{perturbSim3(gtSim1)}; + + TrajectoryAlignerSim3 aligner(aTi, bTi_all, sims); + Values result = aligner.solve(); + + const auto recoveredSim = result.at(Symbol('S', 0)); + EXPECT(simClose(gtSim1, recoveredSim, 2e-2)); + + for (const auto& kv : parent) { + const Key key = kv.key; + EXPECT(assert_equal(parent.at(key), result.at(key), 1e-2)); + } +} + +/* ************************************************************************* */ +TEST(TrajectoryAlignerSim3, SingleChildWithExtraNonOverlap) { + const auto parent = makeParentValues(); + auto child = transformValues(gtSim1, parent); + const auto perturbedChild = perturbPoses(child); + + PoseMeasurements aTi = makeMeasurements(parent, /*noiseSigma=*/1e-2); + PoseMeasurements bTi = makeMeasurements(perturbedChild, 1e-1); + // Add a non-overlapping camera in the child frame. + bTi.emplace_back(10, + gtSim1.transformFrom(Pose3(Rot3(), Point3(4.0, -1.0, 0.5))), + noiseModel::Isotropic::Sigma(6, 1e-2)); + + ChildrenPoses bTi_all{bTi}; + std::vector sims{perturbSim3(gtSim1)}; + + TrajectoryAlignerSim3 aligner(aTi, bTi_all, sims); + Values result = aligner.solve(); + + const auto recoveredSim = result.at(Symbol('S', 0)); + EXPECT(simClose(gtSim1, recoveredSim, 2e-2)); + + for (const auto& kv : parent) { + const Key key = kv.key; + EXPECT(assert_equal(parent.at(key), result.at(key), 1e-2)); + } +} + +/* ************************************************************************* */ +TEST(TrajectoryAlignerSim3, TwoChildrenNoisy) { + const auto parent = makeParentValues(); + + PoseMeasurements aTi = makeMeasurements(parent, 1e-2); + PoseMeasurements b1 = + makeMeasurements(perturbPoses(transformValues(gtSim1, parent)), 5e-2); + PoseMeasurements b2 = + makeMeasurements(perturbPoses(transformValues(gtSim2, parent)), 5e-2); + + ChildrenPoses bTi_all{b1, b2}; + std::vector sims{perturbSim3(gtSim1), perturbSim3(gtSim2)}; + + TrajectoryAlignerSim3 aligner(aTi, bTi_all, sims); + Values result = aligner.solve(); + + EXPECT(simClose(gtSim1, result.at(Symbol('S', 0)), 5e-2)); + EXPECT(simClose(gtSim2, result.at(Symbol('S', 1)), 5e-2)); + + for (const auto& kv : parent) { + const Key key = kv.key; + EXPECT(assert_equal(parent.at(key), result.at(key), 1e-2)); + } +} + +/* ************************************************************************* */ +TEST(TrajectoryAlignerSim3, ThreeChildrenNoisy) { + const auto parent = makeParentValues(); + + PoseMeasurements aTi = makeMeasurements(parent, 1e-2); + PoseMeasurements b1 = + makeMeasurements(perturbPoses(transformValues(gtSim1, parent)), 2e-2); + PoseMeasurements b2 = + makeMeasurements(perturbPoses(transformValues(gtSim2, parent)), 2e-2); + PoseMeasurements b3 = + makeMeasurements(perturbPoses(transformValues(gtSim3, parent)), 2e-2); + + ChildrenPoses bTi_all{b1, b2, b3}; + std::vector sims{perturbSim3(gtSim1), perturbSim3(gtSim2), + perturbSim3(gtSim3)}; + + TrajectoryAlignerSim3 aligner(aTi, bTi_all, sims); + Values result = aligner.solve(); + + EXPECT(simClose(gtSim1, result.at(Symbol('S', 0)), 1e-1)); + EXPECT(simClose(gtSim2, result.at(Symbol('S', 1)), 1e-1)); + EXPECT(simClose(gtSim3, result.at(Symbol('S', 2)), 1e-1)); + + for (const auto& kv : parent) { + const Key key = kv.key; + EXPECT(assert_equal(parent.at(key), result.at(key), 1e-2)); + } +} + +/* ************************************************************************* */ +int main() { + TestResult tr; + return TestRegistry::runAllTests(tr); +} diff --git a/gtsam/slam/BetweenFactor.h b/gtsam/slam/BetweenFactor.h index d309bf61e1..aceb4cfb71 100644 --- a/gtsam/slam/BetweenFactor.h +++ b/gtsam/slam/BetweenFactor.h @@ -72,7 +72,8 @@ namespace gtsam { /** Constructor */ BetweenFactor(Key key1, Key key2, const VALUE& measured, const SharedNoiseModel& model = nullptr) : - Base(model, key1, key2), measured_(measured) { + Base(noiseModel::validOrDefault(measured, model), key1, key2), + measured_(measured) { } /// @} diff --git a/gtsam/slam/EssentialMatrixFactor.h b/gtsam/slam/EssentialMatrixFactor.h index b6671d9869..78304639f3 100644 --- a/gtsam/slam/EssentialMatrixFactor.h +++ b/gtsam/slam/EssentialMatrixFactor.h @@ -357,7 +357,8 @@ class EssentialMatrixFactor4 */ EssentialMatrixFactor4(Key keyE, Key keyK, const Point2& pA, const Point2& pB, const SharedNoiseModel& model = nullptr) - : Base(model, keyE, keyK), pA_(pA), pB_(pB) {} + : Base(noiseModel::validOrDefault(0.0, model), keyE, keyK), + pA_(pA), pB_(pB) {} /// @return a deep copy of this factor gtsam::NonlinearFactor::shared_ptr clone() const override { @@ -460,7 +461,8 @@ class EssentialMatrixFactor5 EssentialMatrixFactor5(Key keyE, Key keyKa, Key keyKb, const Point2& pA, const Point2& pB, const SharedNoiseModel& model = nullptr) - : Base(model, keyE, keyKa, keyKb), pA_(pA), pB_(pB) {} + : Base(noiseModel::validOrDefault(0.0, model), keyE, keyKa, keyKb), + pA_(pA), pB_(pB) {} /// @return a deep copy of this factor gtsam::NonlinearFactor::shared_ptr clone() const override { diff --git a/gtsam/slam/FrobeniusFactor.h b/gtsam/slam/FrobeniusFactor.h index dcd168aca1..b28a3a0681 100644 --- a/gtsam/slam/FrobeniusFactor.h +++ b/gtsam/slam/FrobeniusFactor.h @@ -63,7 +63,10 @@ GTSAM_EXPORT SharedNoiseModel ConvertNoiseModel(const SharedNoiseModel& model, */ template inline SharedNoiseModel ConvertModel(const SharedNoiseModel& model) { - if (!model || model->dim() == Dim) { + if (!model) { + return ConvertNoiseModel(noiseModel::Unit::Create(T()), Dim); + } + if (model->dim() == Dim) { return model; } if (model->dim() != T::dimension) { @@ -260,4 +263,4 @@ class FrobeniusBetweenFactor : public FrobeniusBetweenFactorNL { } }; -} // namespace gtsam \ No newline at end of file +} // namespace gtsam diff --git a/gtsam/slam/GeneralSFMFactor.h b/gtsam/slam/GeneralSFMFactor.h index 3ab5cd1c7b..71ddac8887 100644 --- a/gtsam/slam/GeneralSFMFactor.h +++ b/gtsam/slam/GeneralSFMFactor.h @@ -148,8 +148,8 @@ class GeneralSFMFactor: public NoiseModelFactorN { JacobianL H2; Vector2 b; try { - const CAMERA& camera = values.at(key1); - const LANDMARK& point = values.at(key2); + const CAMERA& camera = values.atRef(key1); + const LANDMARK& point = values.atRef(key2); b = measured() - camera.project2(point, H1, H2); } catch (CheiralityException& e [[maybe_unused]]) { H1.setZero(); diff --git a/gtsam/slam/InitializePose.h b/gtsam/slam/InitializePose.h index bafdd6ed43..a1ae89cdb3 100644 --- a/gtsam/slam/InitializePose.h +++ b/gtsam/slam/InitializePose.h @@ -70,7 +70,8 @@ static Values computePoses(const Values& initialRot, } // add prior on dummy node - auto priorModel = noiseModel::Unit::Create(Pose::dimension); + auto priorModel = + noiseModel::Unit::Create(static_cast(Pose::dimension)); initialPose.insert(kAnchorKey, Pose()); posegraph->emplace_shared >(kAnchorKey, Pose(), priorModel); diff --git a/gtsam/slam/KarcherMeanFactor-inl.h b/gtsam/slam/KarcherMeanFactor-inl.h index 61af6ea89f..543943f44a 100644 --- a/gtsam/slam/KarcherMeanFactor-inl.h +++ b/gtsam/slam/KarcherMeanFactor-inl.h @@ -22,18 +22,18 @@ #include #include -using namespace std; - namespace gtsam { template -T FindKarcherMeanImpl(const vector& rotations) { +T FindKarcherMeanImpl(const std::vector& rotations) { + static_assert(T::dimension != Eigen::Dynamic, + "FindKarcherMean requires fixed-size manifolds."); // Cost function C(R) = \sum PriorFactor(R_i)::error(R) // No closed form solution. NonlinearFactorGraph graph; static const Key kKey(0); for (const auto& R : rotations) { - graph.addPrior(kKey, R); + graph.addPrior(kKey, R, noiseModel::Unit::Create(R)); } Values initial; initial.insert(kKey, T()); diff --git a/gtsam/slam/RegularImplicitSchurFactor.h b/gtsam/slam/RegularImplicitSchurFactor.h index 924aaa1cf6..274347887e 100644 --- a/gtsam/slam/RegularImplicitSchurFactor.h +++ b/gtsam/slam/RegularImplicitSchurFactor.h @@ -138,16 +138,24 @@ class RegularImplicitSchurFactor: public GaussianFactor { void updateHessian(const KeyVector& keys, SymmetricBlockMatrix* info) const override { throw std::runtime_error( - "RegularImplicitSchurFactor::updateHessian non implemented"); + "RegularImplicitSchurFactor::updateHessian not implemented"); } + + void updateHessian(const KeyVector& keys, + SymmetricBlockMatrix* info, + DenseIndex beginCol, DenseIndex endCol) const override { + throw std::runtime_error( + "RegularImplicitSchurFactor::updateHessian not implemented"); + } + Matrix augmentedJacobian() const override { throw std::runtime_error( - "RegularImplicitSchurFactor::augmentedJacobian non implemented"); + "RegularImplicitSchurFactor::augmentedJacobian not implemented"); return Matrix(); } std::pair jacobian() const override { throw std::runtime_error( - "RegularImplicitSchurFactor::jacobian non implemented"); + "RegularImplicitSchurFactor::jacobian not implemented"); return {Matrix(), Vector()}; } @@ -257,14 +265,14 @@ class RegularImplicitSchurFactor: public GaussianFactor { return std::make_shared >(keys_, FBlocks_, PointCovariance_, E_, b_); throw std::runtime_error( - "RegularImplicitSchurFactor::clone non implemented"); + "RegularImplicitSchurFactor::clone not implemented"); } GaussianFactor::shared_ptr negate() const override { return std::make_shared >(keys_, FBlocks_, PointCovariance_, E_, b_); throw std::runtime_error( - "RegularImplicitSchurFactor::negate non implemented"); + "RegularImplicitSchurFactor::negate not implemented"); } // Raw Vector version of y += F'*alpha*(I - E*P*E')*F*x, for testing diff --git a/gtsam/slam/TriangulationFactor.h b/gtsam/slam/TriangulationFactor.h index c25afa8aae..a1fa9dfae9 100644 --- a/gtsam/slam/TriangulationFactor.h +++ b/gtsam/slam/TriangulationFactor.h @@ -81,7 +81,7 @@ class TriangulationFactor: public NoiseModelFactorN { bool verboseCheirality = false) : Base(model, pointKey), camera_(camera), measured_(measured), throwCheirality_( throwCheirality), verboseCheirality_(verboseCheirality) { - if (model && model->dim() != traits::dimension) + if (model && !noiseModel::matchesDimension(*model, measured_)) throw std::invalid_argument( "TriangulationFactor must be created with " + std::to_string((int) traits::dimension) @@ -201,4 +201,3 @@ class TriangulationFactor: public NoiseModelFactorN { #endif }; } // \ namespace gtsam - diff --git a/gtsam/slam/dataset.cpp b/gtsam/slam/dataset.cpp index 91317bad1e..b196d9ba9d 100644 --- a/gtsam/slam/dataset.cpp +++ b/gtsam/slam/dataset.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -131,6 +132,7 @@ static void parseLines(const std::string &filename, Parser parse) { std::ifstream is(filename.c_str()); if (!is) throw std::invalid_argument("parse: can not find file " + filename); + is.imbue(std::locale::classic()); std::string tag; while (is >> tag) { parse(is, tag); // ignore return value @@ -368,7 +370,7 @@ template <> struct ParseMeasurement { // Get pose and optionally add noise Pose2 &pose = edge->second; if (sampler) - pose = pose.retract(sampler->sample()); + pose = sampler->perturb(pose); // emplace measurement auto modelFromFile = @@ -833,7 +835,7 @@ template <> struct ParseMeasurement { Pose3 T12(R, {x, y, z}); // optionally add noise if (sampler) - T12 = T12.retract(sampler->sample()); + T12 = sampler->perturb(T12); return BinaryMeasurement(id1, id2, T12, noiseModel::Gaussian::Information(m)); @@ -845,7 +847,7 @@ template <> struct ParseMeasurement { Pose3 T12(q, {x, y, z}); // optionally add noise if (sampler) - T12 = T12.retract(sampler->sample()); + T12 = sampler->perturb(T12); // g2o's EDGE_SE3:QUAT stores information/precision of Pose3 in t,R order, unlike GTSAM: Matrix6 mgtsam; diff --git a/gtsam/slam/slam.i b/gtsam/slam/slam.i index 0514b1f4be..745589c251 100644 --- a/gtsam/slam/slam.i +++ b/gtsam/slam/slam.i @@ -21,7 +21,7 @@ template virtual class BetweenFactor : gtsam::NoiseModelFactor { BetweenFactor(gtsam::Key key1, gtsam::Key key2, const T& relativePose, - const gtsam::noiseModel::Base* noiseModel); + const gtsam::noiseModel::Base* noiseModel = nullptr); T measured() const; // enabling serialization functionality @@ -582,30 +582,36 @@ class InitializePose3 { }; #include -template +template virtual class KarcherMeanFactor : gtsam::NonlinearFactor { KarcherMeanFactor(const gtsam::KeyVector& keys); KarcherMeanFactor(const gtsam::KeyVector& keys, int d, double beta); }; -template +template T FindKarcherMean(const std::vector& elements); #include gtsam::noiseModel::Isotropic* ConvertNoiseModel(gtsam::noiseModel::Base* model, size_t d); -template +template class FrobeniusPrior : gtsam::NoiseModelFactor { FrobeniusPrior(gtsam::Key j, const gtsam::Matrix& M, - const gtsam::noiseModel::Base* model); + const gtsam::noiseModel::Base* model = nullptr); gtsam::Vector evaluateError(const T& g) const; }; -template +template virtual class FrobeniusFactor : gtsam::NoiseModelFactor { FrobeniusFactor(gtsam::Key key1, gtsam::Key key2); FrobeniusFactor(gtsam::Key j1, gtsam::Key j2, gtsam::noiseModel::Base* model); @@ -614,7 +620,9 @@ virtual class FrobeniusFactor : gtsam::NoiseModelFactor { }; // Available for all Matrix Lie groups -template +template virtual class FrobeniusBetweenFactorNL : gtsam::NoiseModelFactor { FrobeniusBetweenFactorNL(gtsam::Key j1, gtsam::Key j2, const T& T12); FrobeniusBetweenFactorNL(gtsam::Key key1, gtsam::Key key2, const T& T12, diff --git a/gtsam/slam/tests/testLago.cpp b/gtsam/slam/tests/testLago.cpp index 7776862846..27bc725eca 100644 --- a/gtsam/slam/tests/testLago.cpp +++ b/gtsam/slam/tests/testLago.cpp @@ -35,6 +35,7 @@ using namespace gtsam; static Symbol x0('x', 0), x1('x', 1), x2('x', 2), x3('x', 3); static SharedNoiseModel model(noiseModel::Isotropic::Sigma(3, 0.1)); +static SharedNoiseModel rotModel(noiseModel::Isotropic::Sigma(1, 0.1)); namespace simpleLago { // We consider a small graph: @@ -224,7 +225,7 @@ TEST( Lago, multiplePosePriorsSP ) { TEST( Lago, multiplePoseAndRotPriors ) { bool useOdometricPath = false; NonlinearFactorGraph g = simpleLago::graph(); - g.addPrior(x1, simpleLago::pose1.theta(), model); + g.addPrior(x1, simpleLago::pose1.theta(), rotModel); VectorValues initial = lago::initializeOrientations(g, useOdometricPath); // comparison is up to M_PI, that's why we add some multiples of 2*M_PI @@ -237,7 +238,7 @@ TEST( Lago, multiplePoseAndRotPriors ) { /* *************************************************************************** */ TEST( Lago, multiplePoseAndRotPriorsSP ) { NonlinearFactorGraph g = simpleLago::graph(); - g.addPrior(x1, simpleLago::pose1.theta(), model); + g.addPrior(x1, simpleLago::pose1.theta(), rotModel); VectorValues initial = lago::initializeOrientations(g); // comparison is up to M_PI, that's why we add some multiples of 2*M_PI @@ -348,4 +349,3 @@ int main() { return TestRegistry::runAllTests(tr); } /* ************************************************************************* */ - diff --git a/gtsam/slam/tests/testReferenceFrameFactor.cpp b/gtsam/slam/tests/testReferenceFrameFactor.cpp index b5800a414b..ac883a78ae 100644 --- a/gtsam/slam/tests/testReferenceFrameFactor.cpp +++ b/gtsam/slam/tests/testReferenceFrameFactor.cpp @@ -36,9 +36,18 @@ using namespace gtsam; typedef gtsam::ReferenceFrameFactor PointReferenceFrameFactor; typedef gtsam::ReferenceFrameFactor PoseReferenceFrameFactor; -Key lA1 = symbol_shorthand::L(1), lA2 = symbol_shorthand::L(2), lB1 = symbol_shorthand::L(11), lB2 = symbol_shorthand::L(12); +namespace { +Key lA1 = symbol_shorthand::L(1), lA2 = symbol_shorthand::L(2), + lB1 = symbol_shorthand::L(11), lB2 = symbol_shorthand::L(12); Key tA1 = symbol_shorthand::T(1), tB1 = symbol_shorthand::T(2); +LevenbergMarquardtParams getLMParams() { + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} +} // namespace + /* ************************************************************************* */ TEST( ReferenceFrameFactor, equals ) { PointReferenceFrameFactor @@ -154,7 +163,7 @@ TEST( ReferenceFrameFactor, converge_trans ) { init.insert(tA1, trans); // optimize - LevenbergMarquardtOptimizer solver(graph, init); + LevenbergMarquardtOptimizer solver(graph, init, getLMParams()); Values actual = solver.optimize(); Values expected; @@ -196,7 +205,7 @@ TEST( ReferenceFrameFactor, converge_local ) { init.insert(tA1, trans); // optimize - LevenbergMarquardtOptimizer solver(graph, init); + LevenbergMarquardtOptimizer solver(graph, init, getLMParams()); Values actual = solver.optimize(); CHECK(actual.exists(lA1)); @@ -232,7 +241,7 @@ TEST( ReferenceFrameFactor, converge_global ) { init.insert(tA1, trans); // optimize - LevenbergMarquardtOptimizer solver(graph, init); + LevenbergMarquardtOptimizer solver(graph, init, getLMParams()); Values actual = solver.optimize(); // verify diff --git a/gtsam/slam/tests/testSmartProjectionFactor.cpp b/gtsam/slam/tests/testSmartProjectionFactor.cpp index 564b7f6403..ac5b0ceb53 100644 --- a/gtsam/slam/tests/testSmartProjectionFactor.cpp +++ b/gtsam/slam/tests/testSmartProjectionFactor.cpp @@ -31,13 +31,22 @@ static const Symbol l1('l', 1), l2('l', 2), l3('l', 3); static const Key c1 = 1, c2 = 2, c3 = 3; static const Point2 measurement1(323.0, 240.0); static const double rankTol = 1.0; + +LevenbergMarquardtParams makeLMParams(bool debug = false) { + LevenbergMarquardtParams p; + p.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + if (debug) { + p.verbosityLM = LevenbergMarquardtParams::TRYLAMBDA; + p.verbosity = NonlinearOptimizerParams::ERROR; + } + return p; } -template +template PinholeCamera perturbCameraPoseAndCalibration( const PinholeCamera& camera) { - Pose3 noise_pose = Pose3(Rot3::Ypr(-M_PI / 10, 0., -M_PI / 10), - Point3(0.5, 0.1, 0.3)); + Pose3 noise_pose = + Pose3(Rot3::Ypr(-M_PI / 10, 0., -M_PI / 10), Point3(0.5, 0.1, 0.3)); Pose3 cameraPose = camera.pose(); Pose3 perturbedCameraPose = cameraPose.compose(noise_pose); typename gtsam::traits::TangentVector d; @@ -46,6 +55,7 @@ PinholeCamera perturbCameraPoseAndCalibration( CALIBRATION perturbedCalibration = camera.calibration().retract(d); return PinholeCamera(perturbedCameraPose, perturbedCalibration); } +} // namespace /* ************************************************************************* */ TEST(SmartProjectionFactor, perturbCameraPose) { @@ -242,12 +252,7 @@ TEST(SmartProjectionFactor, perturbPoseAndOptimize ) { EXPECT(assert_equal(expected, actual, 1)); // Optimize - LevenbergMarquardtParams lmParams; - if (isDebugTest) { - lmParams.verbosityLM = LevenbergMarquardtParams::TRYLAMBDA; - lmParams.verbosity = NonlinearOptimizerParams::ERROR; - } - LevenbergMarquardtOptimizer optimizer(graph, initial, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, initial, makeLMParams(isDebugTest)); Values result = optimizer.optimize(); EXPECT(assert_equal(landmark1, *smartFactor1->point(), 1e-5)); @@ -314,14 +319,8 @@ TEST(SmartProjectionFactor, perturbPoseAndOptimizeFromSfM_tracks ) { if (isDebugTest) values.at(c3).print("Smart: Pose3 before optimization: "); - LevenbergMarquardtParams lmParams; - if (isDebugTest) - lmParams.verbosityLM = LevenbergMarquardtParams::TRYLAMBDA; - if (isDebugTest) - lmParams.verbosity = NonlinearOptimizerParams::ERROR; - Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams(isDebugTest)); result = optimizer.optimize(); // GaussianFactorGraph::shared_ptr GFG = graph.linearize(values); @@ -388,15 +387,11 @@ TEST(SmartProjectionFactor, perturbCamerasAndOptimize ) { if (isDebugTest) values.at(c3).print("Smart: Pose3 before optimization: "); - LevenbergMarquardtParams lmParams; + LevenbergMarquardtParams lmParams = makeLMParams(isDebugTest); lmParams.relativeErrorTol = 1e-8; lmParams.absoluteErrorTol = 0; lmParams.maxIterations = 20; - if (isDebugTest) - lmParams.verbosityLM = LevenbergMarquardtParams::TRYLAMBDA; - if (isDebugTest) - lmParams.verbosity = NonlinearOptimizerParams::ERROR; - + Values result; LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); @@ -464,14 +459,10 @@ TEST(SmartProjectionFactor, Cal3Bundler ) { if (isDebugTest) values.at(c3).print("Smart: Pose3 before optimization: "); - LevenbergMarquardtParams lmParams; + LevenbergMarquardtParams lmParams = makeLMParams(isDebugTest); lmParams.relativeErrorTol = 1e-8; lmParams.absoluteErrorTol = 0; lmParams.maxIterations = 20; - if (isDebugTest) - lmParams.verbosityLM = LevenbergMarquardtParams::TRYLAMBDA; - if (isDebugTest) - lmParams.verbosity = NonlinearOptimizerParams::ERROR; Values result; LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); @@ -537,14 +528,10 @@ TEST(SmartProjectionFactor, Cal3Bundler2 ) { if (isDebugTest) values.at(c3).print("Smart: Pose3 before optimization: "); - LevenbergMarquardtParams lmParams; + LevenbergMarquardtParams lmParams = makeLMParams(isDebugTest); lmParams.relativeErrorTol = 1e-8; lmParams.absoluteErrorTol = 0; lmParams.maxIterations = 20; - if (isDebugTest) - lmParams.verbosityLM = LevenbergMarquardtParams::TRYLAMBDA; - if (isDebugTest) - lmParams.verbosity = NonlinearOptimizerParams::ERROR; Values result; LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); diff --git a/gtsam/slam/tests/testSmartProjectionPoseFactor.cpp b/gtsam/slam/tests/testSmartProjectionPoseFactor.cpp index 807f485c72..cc5760970d 100644 --- a/gtsam/slam/tests/testSmartProjectionPoseFactor.cpp +++ b/gtsam/slam/tests/testSmartProjectionPoseFactor.cpp @@ -46,9 +46,13 @@ static Symbol x3('X', 3); static Point2 measurement1(323.0, 240.0); -LevenbergMarquardtParams lmParams; -// Make more verbose like so (in tests): -// lmParams.verbosityLM = LevenbergMarquardtParams::SUMMARY; +LevenbergMarquardtParams makeLMParams(bool verbose = false) { + LevenbergMarquardtParams p; + p.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + if (verbose) p.verbosityLM = LevenbergMarquardtParams::SUMMARY; + return p; +} + } /* ************************************************************************* */ @@ -264,9 +268,8 @@ TEST(SmartProjectionPoseFactor, smartFactorWithSensorBodyTransform) { // original pose3 values.insert(x3, wTb3 * noise_pose); - LevenbergMarquardtParams lmParams; Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(wTb3, result.at(x3))); } @@ -327,7 +330,7 @@ TEST( SmartProjectionPoseFactor, 3poses_smart_projection_factor ) { Point3(0.1, -0.1, 1.9)), values.at(x3))); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(pose_above, result.at(x3), 1e-6)); } @@ -545,7 +548,7 @@ TEST( SmartProjectionPoseFactor, 3poses_iterative_smart_projection_factor ) { values.at(x3))); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(pose_above, result.at(x3), 1e-7)); } @@ -601,7 +604,7 @@ TEST( SmartProjectionPoseFactor, jacobianSVD ) { values.insert(x3, pose_above * noise_pose); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(pose_above, result.at(x3), 1e-6)); } @@ -660,7 +663,7 @@ TEST( SmartProjectionPoseFactor, landmarkDistance ) { // All factors are disabled and pose should remain where it is Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(values.at(x3), result.at(x3))); } @@ -726,7 +729,7 @@ TEST( SmartProjectionPoseFactor, dynamicOutlierRejection ) { // All factors are disabled and pose should remain where it is Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(cam3.pose(), result.at(x3))); } @@ -777,7 +780,7 @@ TEST( SmartProjectionPoseFactor, jacobianQ ) { values.insert(x3, pose_above * noise_pose); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(pose_above, result.at(x3), 1e-6)); } @@ -821,7 +824,7 @@ TEST( SmartProjectionPoseFactor, 3poses_projection_factor ) { DOUBLES_EQUAL(48406055, graph.error(values), 1); - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); Values result = optimizer.optimize(); DOUBLES_EQUAL(0, graph.error(result), 1e-9); @@ -960,7 +963,7 @@ TEST( SmartProjectionPoseFactor, 3poses_2land_rotation_only_smart_projection_fac values.insert(x3, pose3 * noise_pose); // params.verbosityLM = LevenbergMarquardtParams::SUMMARY; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); Values result = optimizer.optimize(); EXPECT(assert_equal(pose3, result.at(x3))); } @@ -1033,7 +1036,7 @@ TEST( SmartProjectionPoseFactor, 3poses_rotation_only_smart_projection_factor ) values.at(x3))); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); // Since we do not do anything on degenerate instances (ZERO_ON_DEGENERACY) @@ -1242,7 +1245,7 @@ TEST( SmartProjectionPoseFactor, Cal3Bundler ) { Point3(0.1, -0.1, 1.9)), values.at(x3))); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT(assert_equal(cam3.pose(), result.at(x3), 1e-6)); } @@ -1318,7 +1321,7 @@ TEST( SmartProjectionPoseFactor, Cal3BundlerRotationOnly ) { values.at(x3))); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); + LevenbergMarquardtOptimizer optimizer(graph, values, makeLMParams()); result = optimizer.optimize(); EXPECT( diff --git a/gtsam/slam/tests/testSmartProjectionRigFactor.cpp b/gtsam/slam/tests/testSmartProjectionRigFactor.cpp index 67bbfa3ba7..2bcdcc207b 100644 --- a/gtsam/slam/tests/testSmartProjectionRigFactor.cpp +++ b/gtsam/slam/tests/testSmartProjectionRigFactor.cpp @@ -32,27 +32,34 @@ using namespace std::placeholders; -static const double rankTol = 1.0; +namespace { +const double rankTol = 1.0; // Create a noise model for the pixel error -static const double sigma = 0.1; -static SharedIsotropic model(noiseModel::Isotropic::Sigma(2, sigma)); +const double sigma = 0.1; +SharedIsotropic model(noiseModel::Isotropic::Sigma(2, sigma)); // Convenience for named keys using symbol_shorthand::L; using symbol_shorthand::X; // tests data -static Symbol x1('X', 1); -static Symbol x2('X', 2); -static Symbol x3('X', 3); +Symbol x1('X', 1); +Symbol x2('X', 2); +Symbol x3('X', 3); Key cameraId1 = 0; // first camera -Key cameraId2 = 1; -Key cameraId3 = 2; -static Point2 measurement1(323.0, 240.0); +Point2 measurement1(323.0, 240.0); -LevenbergMarquardtParams lmParams; +LevenbergMarquardtParams makeLMParams() { + LevenbergMarquardtParams p; + p.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return p; +} + +LevenbergMarquardtParams lmParams = makeLMParams(); + +} // namespace /* ************************************************************************* */ // default Cal3_S2 poses with rolling shutter effect @@ -305,7 +312,6 @@ TEST(SmartProjectionRigFactor, smartFactorWithSensorBodyTransform) { // original pose3 values.insert(x3, wTb3 * noise_pose); - LevenbergMarquardtParams lmParams; Values result; LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); @@ -392,7 +398,6 @@ TEST(SmartProjectionRigFactor, smartFactorWithMultipleCameras) { // original pose3 values.insert(x3, wTb3 * noise_pose); - LevenbergMarquardtParams lmParams; Values result; LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); diff --git a/gtsam/symbolic/IndexedJunctionTree.h b/gtsam/symbolic/IndexedJunctionTree.h new file mode 100644 index 0000000000..201b26f7f3 --- /dev/null +++ b/gtsam/symbolic/IndexedJunctionTree.h @@ -0,0 +1,106 @@ +/* ---------------------------------------------------------------------------- + * + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + * + * See LICENSE for the license information + * + * -------------------------------------------------------------------------- */ + +/** + * @file IndexedJunctionTree.h + * @brief Build a symbolic junction tree that stores original factor indices. + * @author Tzvi Strauss + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace gtsam { + +namespace internal { +/// A SymbolicFactor that stores the index of the originating factor. +class IndexedSymbolicFactor : public SymbolicFactor { + public: + size_t index_; + IndexedSymbolicFactor(const KeyVector& keys, size_t index) + : SymbolicFactor(), index_(index) { + keys_ = keys; + } +}; +} // namespace internal + +/** + * A symbolic junction tree whose factors record the original factor indices from + * a corresponding (non-symbolic) factor graph. This allows the junction tree + * structure to be cached and reused for repeated eliminations when the factor + * graph structure and ordering remain unchanged, avoiding the cost of rebuilding + * the symbolic structure. + * + * The underlying implementation uses a `SymbolicJunctionTree` where each factor + * is an `IndexedSymbolicFactor` that stores the original factor index. + * During elimination, these indices are used to retrieve the actual numerical + * factors from the original factor graph. + * + */ +class GTSAM_EXPORT IndexedJunctionTree : public SymbolicJunctionTree { + public: + using SymbolicJunctionTree::SymbolicJunctionTree; + + /** + * Construct an IndexedJunctionTree from any factor graph, ordering, and + * optional set of fixed keys to filter out. + * + * @tparam GRAPH Factor graph type (e.g. GaussianFactorGraph, NonlinearFactorGraph) + * @param graph The input factor graph + * @param ordering The elimination ordering + * @param fixedKeys Keys to filter out (e.g., from hard constraints) + */ + template + IndexedJunctionTree(const GRAPH& graph, const Ordering& ordering, + const std::unordered_set& fixedKeys = {}) + : SymbolicJunctionTree(makeIndexedEliminationTree(graph, ordering, fixedKeys)) {} + + private: + template + static SymbolicFactorGraph buildIndexedSymbolicFactorGraph( + const GRAPH& graph, const std::unordered_set& fixedKeys) { + SymbolicFactorGraph symbolicGraph; + symbolicGraph.reserve(graph.size()); + for (size_t i = 0; i < graph.size(); ++i) { + if (!graph.at(i)) continue; + KeyVector keys; + keys.reserve(graph[i]->size()); + for (Key key : graph[i]->keys()) { + if (!fixedKeys.count(key)) keys.push_back(key); + } + // Skip factors that are fully constrained away. + if (keys.empty()) continue; + symbolicGraph.emplace_shared(keys, i); + } + return symbolicGraph; + } + + template + static SymbolicEliminationTree makeIndexedEliminationTree( + const GRAPH& graph, const Ordering& ordering, + const std::unordered_set& fixedKeys) { + SymbolicFactorGraph symbolicGraph = + buildIndexedSymbolicFactorGraph(graph, fixedKeys); + return SymbolicEliminationTree(std::move(symbolicGraph), ordering); + } +}; +} // namespace gtsam + diff --git a/gtsam/symbolic/tests/testSymbolicBayesTree.cpp b/gtsam/symbolic/tests/testSymbolicBayesTree.cpp index 04fe0434be..b5df33ae42 100644 --- a/gtsam/symbolic/tests/testSymbolicBayesTree.cpp +++ b/gtsam/symbolic/tests/testSymbolicBayesTree.cpp @@ -20,11 +20,11 @@ #include #include #include +#include #include #include #include -#include #include using namespace std; @@ -96,6 +96,17 @@ TEST(SymbolicBayesTree, clique_structure) { SymbolicBayesTree actual = *graph.eliminateMultifrontal(order); EXPECT(assert_equal(expected, actual)); + + // Reuse an indexed junction tree built from the same graph and ordering. + IndexedJunctionTree indexedJunctionTree = graph.buildIndexedJunctionTree(order); + + SymbolicBayesTree actualReuse1 = + *graph.eliminateMultifrontal(indexedJunctionTree); + SymbolicBayesTree actualReuse2 = + *graph.eliminateMultifrontal(indexedJunctionTree); + + EXPECT(assert_equal(expected, actualReuse1)); + EXPECT(assert_equal(expected, actualReuse2)); } /* ************************************************************************* * diff --git a/gtsam/symbolic/tests/testSymbolicClusterTree.cpp b/gtsam/symbolic/tests/testSymbolicClusterTree.cpp index 202f198124..7705bc4bfd 100644 --- a/gtsam/symbolic/tests/testSymbolicClusterTree.cpp +++ b/gtsam/symbolic/tests/testSymbolicClusterTree.cpp @@ -46,6 +46,125 @@ TEST(ClusterTree, SeparatorKeys) { assert_container_equality(expectedChild, child->separatorKeys(&cache))); } +/* ************************************************************************* */ +TEST(ClusterTree, MergeChildren) { + using Cluster = SymbolicJunctionTree::Cluster; + auto parent = std::make_shared(); + auto child1 = std::make_shared(); + auto child2 = std::make_shared(); + auto child3 = std::make_shared(); + + child1->orderedFrontalKeys.push_back(1); + child2->orderedFrontalKeys.push_back(2); + child3->orderedFrontalKeys.push_back(3); + + parent->addChild(child1); + parent->addChild(child2); + parent->addChild(child3); + + parent->mergeChildren({true, false, true}); + + EXPECT_LONGS_EQUAL(1, parent->children.size()); + EXPECT(parent->children.front() == child2); + const KeySet expected{1, 3}; + const KeySet actual(parent->orderedFrontalKeys.begin(), + parent->orderedFrontalKeys.end()); + EXPECT(assert_container_equality(expected, actual)); +} + +/* ************************************************************************* */ +TEST(ClusterTree, MergeChildrenSiblings) { + using Cluster = SymbolicJunctionTree::Cluster; + auto parent = std::make_shared(); + auto child1 = std::make_shared(); + auto child2 = std::make_shared(); + auto child3 = std::make_shared(); + + child1->orderedFrontalKeys.push_back(1); + child2->orderedFrontalKeys.push_back(2); + child3->orderedFrontalKeys.push_back(3); + + parent->addChild(child1); + parent->addChild(child2); + parent->addChild(child3); + + parent->mergeChildrenSiblings({true, false, true}); + + EXPECT_LONGS_EQUAL(2, parent->children.size()); + EXPECT(parent->children[1] == child2); + const KeySet expected{1, 3}; + const KeySet actual(parent->children[0]->orderedFrontalKeys.begin(), + parent->children[0]->orderedFrontalKeys.end()); + EXPECT(assert_container_equality(expected, actual)); +} + +/* ************************************************************************* */ +TEST(ClusterTree, MergeChildrenWithGrandchildren) { + using Cluster = SymbolicJunctionTree::Cluster; + auto parent = std::make_shared(); + auto child1 = std::make_shared(); + auto child2 = std::make_shared(); + auto child3 = std::make_shared(); + auto grandchild1 = std::make_shared(); + auto grandchild2 = std::make_shared(); + + child1->orderedFrontalKeys.push_back(1); + child2->orderedFrontalKeys.push_back(2); + child3->orderedFrontalKeys.push_back(3); + grandchild1->orderedFrontalKeys.push_back(10); + grandchild2->orderedFrontalKeys.push_back(20); + + child1->addChild(grandchild1); + child2->addChild(grandchild2); + parent->addChild(child1); + parent->addChild(child2); + parent->addChild(child3); + + parent->mergeChildren({child1, child2}); + + EXPECT_LONGS_EQUAL(3, parent->children.size()); + EXPECT(parent->children[2] == child3); + EXPECT(parent->children[0] == grandchild1); + EXPECT(parent->children[1] == grandchild2); + const KeySet expected{1, 2}; + const KeySet actual(parent->orderedFrontalKeys.begin(), + parent->orderedFrontalKeys.end()); + EXPECT(assert_container_equality(expected, actual)); +} + +/* ************************************************************************* */ +TEST(ClusterTree, MergeChildrenSiblingsWithGrandchildren) { + using Cluster = SymbolicJunctionTree::Cluster; + auto parent = std::make_shared(); + auto child1 = std::make_shared(); + auto child2 = std::make_shared(); + auto child3 = std::make_shared(); + auto grandchild1 = std::make_shared(); + auto grandchild2 = std::make_shared(); + + child1->orderedFrontalKeys.push_back(1); + child2->orderedFrontalKeys.push_back(2); + child3->orderedFrontalKeys.push_back(3); + grandchild1->orderedFrontalKeys.push_back(10); + grandchild2->orderedFrontalKeys.push_back(20); + + child1->addChild(grandchild1); + child2->addChild(grandchild2); + parent->addChild(child1); + parent->addChild(child2); + parent->addChild(child3); + + parent->mergeChildrenSiblings({child1, child2}); + + EXPECT_LONGS_EQUAL(2, parent->children.size()); + EXPECT(parent->children[1] == child3); + EXPECT_LONGS_EQUAL(2, parent->children[0]->children.size()); + const KeySet expected{1, 2}; + const KeySet actual(parent->children[0]->orderedFrontalKeys.begin(), + parent->children[0]->orderedFrontalKeys.end()); + EXPECT(assert_container_equality(expected, actual)); +} + /* ************************************************************************* */ int main() { TestResult tr; diff --git a/gtsam_unstable/geometry/ABCEquivariantFilter.h b/gtsam_unstable/geometry/ABCEquivariantFilter.h new file mode 100644 index 0000000000..fb6a7695e0 --- /dev/null +++ b/gtsam_unstable/geometry/ABCEquivariantFilter.h @@ -0,0 +1,136 @@ +/** + * @file ABCEquivariantFilter.h + * @brief Attitude-Bias-Calibration Equivariant Filter for state estimation + * @author Rohan Bansal + * @date 2026 + * + * This file extends the EquivariantFilter class to provide a more user-friendly + * interface for the ABC Equivariant Filter. This class templates on the number + * of calibrated sensors N, abstracting away the details of the ABC system. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace gtsam { +namespace abc { + +/** + * @class AbcEquivariantFilter + * @brief Equivariant Filter for Attitude-Bias-Calibration (ABC) estimation + * + * This class implements an equivariant filter for estimating: + * - Attitude (rotation): The orientation of the body frame relative to a + * reference frame + * - Bias: Gyroscope bias correction vector (3D) + * - Calibration: N sensor calibration rotation matrices + * + * The filter uses the ABC Lie group structure and equivariant dynamics to + * provide consistent state estimation. It inherits from EquivariantFilter + * and provides a simplified interface for ABC-specific operations. + * + * @tparam N Number of calibrated sensors (typically 1 or more) + */ +template +class AbcEquivariantFilter + : public gtsam::EquivariantFilter, Symmetry> { + public: + using gtsam::EquivariantFilter, Symmetry>::update; + + /** + * @brief Default constructor with identity initial covariance + * + * Initializes the filter with an identity state and identity covariance + * matrix of dimension (6 + 3*N) x (6 + 3*N), where 6 accounts for the + * attitude and bias parameters, and 3*N for N calibration parameters. + */ + AbcEquivariantFilter() + : AbcEquivariantFilter(Matrix::Identity(6 + 3 * N, 6 + 3 * N)) {} + + /** + * @brief Construct filter with custom initial covariance + * + * Initializes the filter at the identity state with a specified initial + * covariance matrix on the manifold tangent space. + * + * @param Sigma0 Initial covariance matrix (6+3*N) x (6+3*N) + */ + explicit AbcEquivariantFilter(const Matrix& Sigma0) + : gtsam::EquivariantFilter, Symmetry>(State::identity(), + Sigma0) {} + + /** + * @brief Prediction step using gyroscope measurements + * + * Propagates the filter state forward in time using angular velocity + * measurements and process noise. This method uses the explicit Jacobian + * matrices (A and B) computed from the ABC dynamics. + * + * @param omega Angular velocity measurement (body frame, rad/s) + * @param inputCovariance Process noise covariance (6x6) for the input + * @param dt Time step (seconds) + */ + void predict(const Vector3& omega, const Matrix6& inputCovariance, + double dt) { + const Matrix Q = inputProcessNoise(inputCovariance); + const Vector6 u = toInputVector(omega); + const Lift lift_u(u); + const typename InputAction::Orbit psi_u(u); + + const Group X_hat = this->groupEstimate(); + const Matrix A = stateMatrixA(psi_u, X_hat); + const Matrix B = inputMatrixB(X_hat); + const Matrix Qc = B * Q * B.transpose(); + + this->template predictWithJacobian<2>(lift_u, A, Qc, dt); + } + + /** + * @brief Measurement update using a direction observation + * + * Corrects the filter estimate using a direction measurement from a + * calibrated sensor. The measurement model assumes the sensor observes + * a known reference direction in the body frame. + * + * @param y Measured direction (unit vector in body frame) + * @param d Reference direction (unit vector in reference frame) + * @param R Measurement noise covariance (3x3) + * @param cal_idx Index of the calibrated sensor (0 to N-1), or -1 for + * uncalibrated measurements + */ + void update(const Unit3& y, const Unit3& d, const Matrix3& R, int cal_idx) { + const Innovation innovation(y, d, cal_idx); + const Group X_hat = this->groupEstimate(); + const Matrix3 D = outputMatrixD(X_hat, cal_idx); + const Matrix3 R_adjusted = D * R * D.transpose(); + this->template update(innovation, Z_3x1, R_adjusted); + } + + /** + * @brief Get current attitude estimate + * @return Current rotation estimate (body frame to reference frame) + */ + Rot3 attitude() const { return this->state().R; } + + /** + * @brief Get current gyroscope bias estimate + * @return Current bias vector (rad/s) + */ + Vector3 bias() const { return this->state().b; } + + /** + * @brief Get calibration estimate for a specific sensor + * @param i Sensor index (0 to N-1) + * @return Calibration rotation for sensor i + */ + Rot3 calibration(size_t i) const { return this->state().S[i]; } +}; + +} // namespace abc +} // namespace gtsam diff --git a/gtsam_unstable/geometry/SimWall2D.cpp b/gtsam_unstable/geometry/SimWall2D.cpp index cd52b9696a..e9e1c583b4 100644 --- a/gtsam_unstable/geometry/SimWall2D.cpp +++ b/gtsam_unstable/geometry/SimWall2D.cpp @@ -163,7 +163,7 @@ std::pair moveWithBounce(const Pose2& cur_pose, double step_size, pose = Pose2(closest_wall.reflection(cur_pose.t(), intersection), intersection + inside_bias * norm); // perturb the rotation for better exploration - pose = pose.retract(reflect_noise.sample()); + pose = reflect_noise.perturb(pose); } return make_pair(pose, collision); diff --git a/gtsam_unstable/linear/QPSParser.cpp b/gtsam_unstable/linear/QPSParser.cpp index fd0782b39a..04a573a7f4 100644 --- a/gtsam_unstable/linear/QPSParser.cpp +++ b/gtsam_unstable/linear/QPSParser.cpp @@ -32,7 +32,6 @@ #include #include -#include #include #include #include diff --git a/gtsam_unstable/nonlinear/ConcurrentBatchFilter.cpp b/gtsam_unstable/nonlinear/ConcurrentBatchFilter.cpp index 8dfb15aa25..f5eb4bc2be 100644 --- a/gtsam_unstable/nonlinear/ConcurrentBatchFilter.cpp +++ b/gtsam_unstable/nonlinear/ConcurrentBatchFilter.cpp @@ -211,8 +211,8 @@ void ConcurrentBatchFilter::synchronize(const NonlinearFactorGraph& smootherSumm if(debug) { PrintNonlinearFactorGraph(smootherSummarization_, "ConcurrentBatchFilter::synchronize ", "Previous Smoother Summarization:", DefaultKeyFormatter); } #ifndef NDEBUG - std::set oldKeys = smootherSummarization_.keys(); - std::set newKeys = smootherSummarization.keys(); + KeySet oldKeys = smootherSummarization_.keys(); + KeySet newKeys = smootherSummarization.keys(); assert(oldKeys.size() == newKeys.size()); assert(std::equal(oldKeys.begin(), oldKeys.end(), newKeys.begin())); #endif diff --git a/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.cpp b/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.cpp index 35d2c55511..7ae5a26aa1 100644 --- a/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.cpp +++ b/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.cpp @@ -91,7 +91,7 @@ ConcurrentIncrementalFilter::Result ConcurrentIncrementalFilter::update(const No // Mark additional keys between the 'keys to move' and the leaves std::optional > additionalKeys = {}; if(keysToMove && keysToMove->size() > 0) { - std::set markedKeys; + KeySet markedKeys; for(Key key: *keysToMove) { if(isam2_.getLinearizationPoint().exists(key)) { ISAM2Clique::shared_ptr clique = isam2_[key]; @@ -265,7 +265,7 @@ void ConcurrentIncrementalFilter::postsync() { /* ************************************************************************* */ -void ConcurrentIncrementalFilter::RecursiveMarkAffectedKeys(const Key& key, const ISAM2Clique::shared_ptr& clique, std::set& additionalKeys) { +void ConcurrentIncrementalFilter::RecursiveMarkAffectedKeys(const Key& key, const ISAM2Clique::shared_ptr& clique, KeySet& additionalKeys) { // Check if the separator keys of the current clique contain the specified key if(std::find(clique->conditional()->beginParents(), clique->conditional()->endParents(), key) != clique->conditional()->endParents()) { @@ -367,7 +367,7 @@ NonlinearFactorGraph ConcurrentIncrementalFilter::calculateFilterSummarization() for(size_t slot: isam2_.getVariableIndex()[key]) { const NonlinearFactor::shared_ptr& factor = isam2_.getFactorsUnsafe().at(slot); if(factor) { - std::set factorKeys(factor->begin(), factor->end()); + KeySet factorKeys(factor->begin(), factor->end()); if(std::includes(cliqueKeys.begin(), cliqueKeys.end(), factorKeys.begin(), factorKeys.end())) { cliqueFactorSlots.insert(slot); } diff --git a/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.h b/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.h index 9408b1b77c..6c3cb39bd4 100644 --- a/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.h +++ b/gtsam_unstable/nonlinear/ConcurrentIncrementalFilter.h @@ -180,7 +180,7 @@ class GTSAM_UNSTABLE_EXPORT ConcurrentIncrementalFilter : public virtual Concurr private: /** Traverse the iSAM2 Bayes Tree, inserting all descendants of the provided index/key into 'additionalKeys' */ - static void RecursiveMarkAffectedKeys(const Key& key, const ISAM2Clique::shared_ptr& clique, std::set& additionalKeys); + static void RecursiveMarkAffectedKeys(const Key& key, const ISAM2Clique::shared_ptr& clique, KeySet& additionalKeys); /** Find the set of iSAM2 factors adjacent to 'keys' */ static FactorIndices FindAdjacentFactors(const ISAM2& isam2, const FastList& keys, const FactorIndices& factorsToIgnore); diff --git a/gtsam_unstable/nonlinear/ConcurrentIncrementalSmoother.cpp b/gtsam_unstable/nonlinear/ConcurrentIncrementalSmoother.cpp index 642a8f7689..a7e3dae7e7 100644 --- a/gtsam_unstable/nonlinear/ConcurrentIncrementalSmoother.cpp +++ b/gtsam_unstable/nonlinear/ConcurrentIncrementalSmoother.cpp @@ -208,7 +208,7 @@ void ConcurrentIncrementalSmoother::updateSmootherSummarization() { for(size_t slot: isam2_.getVariableIndex()[key]) { const NonlinearFactor::shared_ptr& factor = isam2_.getFactorsUnsafe().at(slot); if(factor) { - std::set factorKeys(factor->begin(), factor->end()); + KeySet factorKeys(factor->begin(), factor->end()); if(std::includes(cliqueKeys.begin(), cliqueKeys.end(), factorKeys.begin(), factorKeys.end())) { cliqueFactorSlots.insert(slot); } diff --git a/gtsam_unstable/nonlinear/LinearizedFactor.cpp b/gtsam_unstable/nonlinear/LinearizedFactor.cpp index 375c49341a..9f24f84274 100644 --- a/gtsam_unstable/nonlinear/LinearizedFactor.cpp +++ b/gtsam_unstable/nonlinear/LinearizedFactor.cpp @@ -194,7 +194,7 @@ double LinearizedHessianFactor::error(const Values& c) const { // error 0.5*(f - 2*x'*g + x'*G*x) double f = constantTerm(); double xtg = dx.dot(linearTerm()); - double xGx = dx.transpose() * squaredTerm() * dx; + double xGx = dx.dot(squaredTerm() * dx); return 0.5 * (f - 2.0 * xtg + xGx); } @@ -216,7 +216,7 @@ LinearizedHessianFactor::linearize(const Values& c) const { // f2 = f1 - 2*dx'*g1 + dx'*G1*dx //newInfo(this->size(), this->size())(0,0) += -2*dx.dot(linearTerm()) + dx.transpose() * squaredTerm().selfadjointView() * dx; - double f = constantTerm() - 2*dx.dot(linearTerm()) + dx.transpose() * squaredTerm() * dx; + double f = constantTerm() - 2*dx.dot(linearTerm()) + dx.dot(squaredTerm() * dx); // g2 = g1 - G1*dx //newInfo.rangeColumn(0, this->size(), this->size(), 0) -= squaredTerm().selfadjointView() * dx; diff --git a/gtsam_unstable/nonlinear/tests/testConcurrentBatchFilter.cpp b/gtsam_unstable/nonlinear/tests/testConcurrentBatchFilter.cpp index 86fee17378..956a6d7aaf 100644 --- a/gtsam_unstable/nonlinear/tests/testConcurrentBatchFilter.cpp +++ b/gtsam_unstable/nonlinear/tests/testConcurrentBatchFilter.cpp @@ -46,11 +46,17 @@ const SharedDiagonal noisePrior = noiseModel::Isotropic::Sigma(6, 0.10); const SharedDiagonal noiseOdometery = noiseModel::Diagonal::Sigmas((Vector(6) << 0.1, 0.1, 0.1, 0.5, 0.5, 0.5).finished()); const SharedDiagonal noiseLoop = noiseModel::Diagonal::Sigmas((Vector(6) << 0.25, 0.25, 0.25, 1.0, 1.0, 1.0).finished()); +LevenbergMarquardtParams makeLmParams() { + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} + /* ************************************************************************* */ Values BatchOptimize(const NonlinearFactorGraph& graph, const Values& theta, int maxIter = 100) { // Create an L-M optimizer - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = maxIter; LevenbergMarquardtOptimizer optimizer(graph, theta, parameters); @@ -62,7 +68,7 @@ Values BatchOptimize(const NonlinearFactorGraph& graph, const Values& theta, int NonlinearFactorGraph CalculateMarginals(const NonlinearFactorGraph& factorGraph, const Values& linPoint, const FastList& keysToMarginalize){ - std::set KeysToKeep; + KeySet KeysToKeep; for(const auto key: linPoint.keys()) { // we cycle over all the keys of factorGraph KeysToKeep.insert(key); } // so far we are keeping all keys, but we want to delete the ones that we are going to marginalize @@ -100,15 +106,15 @@ TEST( ConcurrentBatchFilter, equals ) // TODO: Test 'equals' more vigorously // Create a Concurrent Batch Filter - LevenbergMarquardtParams parameters1; + LevenbergMarquardtParams parameters1 = makeLmParams(); ConcurrentBatchFilter filter1(parameters1); // Create an identical Concurrent Batch Filter - LevenbergMarquardtParams parameters2; + LevenbergMarquardtParams parameters2 = makeLmParams(); ConcurrentBatchFilter filter2(parameters2); // Create a different Concurrent Batch Filter - LevenbergMarquardtParams parameters3; + LevenbergMarquardtParams parameters3 = makeLmParams(); parameters3.maxIterations = 1; ConcurrentBatchFilter filter3(parameters3); @@ -121,7 +127,7 @@ TEST( ConcurrentBatchFilter, equals ) TEST( ConcurrentBatchFilter, getFactors ) { // Create a Concurrent Batch Filter - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Expected graph is empty @@ -171,7 +177,7 @@ TEST( ConcurrentBatchFilter, getFactors ) TEST( ConcurrentBatchFilter, getLinearizationPoint ) { // Create a Concurrent Batch Filter - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Expected values is empty @@ -233,7 +239,7 @@ TEST( ConcurrentBatchFilter, getDelta ) TEST( ConcurrentBatchFilter, calculateEstimate ) { // Create a Concurrent Batch Filter - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Expected values is empty @@ -306,7 +312,7 @@ TEST( ConcurrentBatchFilter, calculateEstimate ) TEST( ConcurrentBatchFilter, update_empty ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Call update @@ -317,7 +323,7 @@ TEST( ConcurrentBatchFilter, update_empty ) TEST( ConcurrentBatchFilter, update_multiple ) { // Create a Concurrent Batch Filter - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Expected values is empty @@ -374,7 +380,7 @@ TEST( ConcurrentBatchFilter, update_multiple ) TEST( ConcurrentBatchFilter, update_and_marginalize ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Add some factors to the filter @@ -461,7 +467,7 @@ TEST( ConcurrentBatchFilter, update_and_marginalize ) TEST( ConcurrentBatchFilter, synchronize_0 ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); // Create a Concurrent Batch Filter ConcurrentBatchFilter filter(parameters); @@ -494,7 +500,7 @@ TEST( ConcurrentBatchFilter, synchronize_0 ) TEST( ConcurrentBatchFilter, synchronize_1 ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = 1; // Create a Concurrent Batch Filter @@ -539,7 +545,7 @@ TEST( ConcurrentBatchFilter, synchronize_2 ) { std::cout << "*********************** synchronize_2 ************************" << std::endl; // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); //parameters.maxIterations = 1; // Create a Concurrent Batch Filter @@ -607,7 +613,7 @@ TEST( ConcurrentBatchFilter, synchronize_3 ) { std::cout << "*********************** synchronize_3 ************************" << std::endl; // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); //parameters.maxIterations = 1; // Create a Concurrent Batch Filter @@ -691,7 +697,7 @@ TEST( ConcurrentBatchFilter, synchronize_3 ) TEST( ConcurrentBatchFilter, synchronize_4 ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = 1; // Create a Concurrent Batch Filter @@ -785,7 +791,7 @@ TEST( ConcurrentBatchFilter, synchronize_5 ) { std::cout << "*********************** synchronize_5 ************************" << std::endl; // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = 1; // Create a Concurrent Batch Filter @@ -1084,7 +1090,7 @@ TEST( ConcurrentBatchFilter, removeFactors_topology_1 ) std::cout << "*********************** removeFactors_topology_1 ************************" << std::endl; // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Add some factors to the filter @@ -1139,7 +1145,7 @@ TEST( ConcurrentBatchFilter, removeFactors_topology_2 ) // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Add some factors to the filter @@ -1194,7 +1200,7 @@ TEST( ConcurrentBatchFilter, removeFactors_topology_3 ) // we try removing the first factor // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Add some factors to the filter @@ -1247,7 +1253,7 @@ TEST( ConcurrentBatchFilter, removeFactors_values ) // we try removing the last factor // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchFilter filter(parameters); // Add some factors to the filter @@ -1304,7 +1310,7 @@ TEST( ConcurrentBatchFilter, removeFactors_values ) //TEST( ConcurrentBatchFilter, synchronize_10 ) //{ // // Create a set of optimizer parameters -// LevenbergMarquardtParams parameters; +// LevenbergMarquardtParams parameters = makeLmParams(); // parameters.maxIterations = 1; // // // Create a Concurrent Batch Filter @@ -1319,7 +1325,7 @@ TEST( ConcurrentBatchFilter, removeFactors_values ) //TEST( ConcurrentBatchFilter, synchronize_11 ) //{ // // Create a set of optimizer parameters -// LevenbergMarquardtParams parameters; +// LevenbergMarquardtParams parameters = makeLmParams(); // parameters.maxIterations = 1; // // // Create a Concurrent Batch Filter diff --git a/gtsam_unstable/nonlinear/tests/testConcurrentBatchSmoother.cpp b/gtsam_unstable/nonlinear/tests/testConcurrentBatchSmoother.cpp index 514382ef78..cf6c8374ef 100644 --- a/gtsam_unstable/nonlinear/tests/testConcurrentBatchSmoother.cpp +++ b/gtsam_unstable/nonlinear/tests/testConcurrentBatchSmoother.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -46,11 +47,17 @@ const SharedDiagonal noisePrior = noiseModel::Isotropic::Sigma(6, 0.10); const SharedDiagonal noiseOdometery = noiseModel::Diagonal::Sigmas((Vector(6) << 0.1, 0.1, 0.1, 0.5, 0.5, 0.5).finished()); const SharedDiagonal noiseLoop = noiseModel::Diagonal::Sigmas((Vector(6) << 0.25, 0.25, 0.25, 1.0, 1.0, 1.0).finished()); +LevenbergMarquardtParams makeLmParams() { + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} + /* ************************************************************************* */ Values BatchOptimize(const NonlinearFactorGraph& graph, const Values& theta, int maxIter = 100) { // Create an L-M optimizer - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = maxIter; LevenbergMarquardtOptimizer optimizer(graph, theta, parameters); @@ -70,15 +77,15 @@ TEST( ConcurrentBatchSmoother, equals ) // TODO: Test 'equals' more vigorously // Create a Concurrent Batch Smoother - LevenbergMarquardtParams parameters1; + LevenbergMarquardtParams parameters1 = makeLmParams(); ConcurrentBatchSmoother smoother1(parameters1); // Create an identical Concurrent Batch Smoother - LevenbergMarquardtParams parameters2; + LevenbergMarquardtParams parameters2 = makeLmParams(); ConcurrentBatchSmoother smoother2(parameters2); // Create a different Concurrent Batch Smoother - LevenbergMarquardtParams parameters3; + LevenbergMarquardtParams parameters3 = makeLmParams(); parameters3.maxIterations = 1; ConcurrentBatchSmoother smoother3(parameters3); @@ -91,7 +98,7 @@ TEST( ConcurrentBatchSmoother, equals ) TEST( ConcurrentBatchSmoother, getFactors ) { // Create a Concurrent Batch Smoother - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchSmoother smoother(parameters); // Expected graph is empty @@ -141,7 +148,7 @@ TEST( ConcurrentBatchSmoother, getFactors ) TEST( ConcurrentBatchSmoother, getLinearizationPoint ) { // Create a Concurrent Batch Smoother - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchSmoother smoother(parameters); // Expected values is empty @@ -203,7 +210,7 @@ TEST( ConcurrentBatchSmoother, getDelta ) TEST( ConcurrentBatchSmoother, calculateEstimate ) { // Create a Concurrent Batch Smoother - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchSmoother smoother(parameters); // Expected values is empty @@ -276,7 +283,7 @@ TEST( ConcurrentBatchSmoother, calculateEstimate ) TEST( ConcurrentBatchSmoother, update_empty ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); // Create a Concurrent Batch Smoother ConcurrentBatchSmoother smoother(parameters); @@ -289,7 +296,7 @@ TEST( ConcurrentBatchSmoother, update_empty ) TEST( ConcurrentBatchSmoother, update_multiple ) { // Create a Concurrent Batch Smoother - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchSmoother smoother(parameters); // Expected values is empty @@ -346,7 +353,7 @@ TEST( ConcurrentBatchSmoother, update_multiple ) TEST( ConcurrentBatchSmoother, synchronize_empty ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); // Create a Concurrent Batch Smoother ConcurrentBatchSmoother smoother(parameters); @@ -376,7 +383,7 @@ TEST( ConcurrentBatchSmoother, synchronize_empty ) TEST( ConcurrentBatchSmoother, synchronize_1 ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = 1; // Create a Concurrent Batch Smoother @@ -437,7 +444,7 @@ TEST( ConcurrentBatchSmoother, synchronize_1 ) TEST( ConcurrentBatchSmoother, synchronize_2 ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = 1; // Create a Concurrent Batch Smoother @@ -508,7 +515,7 @@ TEST( ConcurrentBatchSmoother, synchronize_2 ) TEST( ConcurrentBatchSmoother, synchronize_3 ) { // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); parameters.maxIterations = 1; // Create a Concurrent Batch Smoother @@ -580,7 +587,7 @@ TEST( ConcurrentBatchSmoother, removeFactors_topology_1 ) std::cout << "*********************** removeFactors_topology_1 ************************" << std::endl; // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); // Create a Concurrent Batch Smoother ConcurrentBatchSmoother smoother(parameters); @@ -634,7 +641,7 @@ TEST( ConcurrentBatchSmoother, removeFactors_topology_2 ) // we try removing the last factor // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); // Create a Concurrent Batch Smoother ConcurrentBatchSmoother smoother(parameters); @@ -688,7 +695,7 @@ TEST( ConcurrentBatchSmoother, removeFactors_topology_3 ) // we try removing the first factor // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchSmoother Smoother(parameters); // Add some factors to the Smoother @@ -738,7 +745,7 @@ TEST( ConcurrentBatchSmoother, removeFactors_values ) // we try removing the last factor // Create a set of optimizer parameters - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); ConcurrentBatchSmoother Smoother(parameters); // Add some factors to the Smoother diff --git a/gtsam_unstable/nonlinear/tests/testConcurrentIncrementalFilter.cpp b/gtsam_unstable/nonlinear/tests/testConcurrentIncrementalFilter.cpp index 401dee762a..5aecb6812f 100644 --- a/gtsam_unstable/nonlinear/tests/testConcurrentIncrementalFilter.cpp +++ b/gtsam_unstable/nonlinear/tests/testConcurrentIncrementalFilter.cpp @@ -79,7 +79,7 @@ Values BatchOptimize(const NonlinearFactorGraph& graph, const Values& theta, int NonlinearFactorGraph CalculateMarginals(const NonlinearFactorGraph& factorGraph, const Values& linPoint, const FastList& keysToMarginalize){ - std::set KeysToKeep; + KeySet KeysToKeep; for(const auto key: linPoint.keys()) { // we cycle over all the keys of factorGraph KeysToKeep.insert(key); } // so far we are keeping all keys, but we want to delete the ones that we are going to marginalize diff --git a/gtsam_unstable/slam/tests/testInvDepthFactorVariant1.cpp b/gtsam_unstable/slam/tests/testInvDepthFactorVariant1.cpp index 96043fb505..214054aae9 100644 --- a/gtsam_unstable/slam/tests/testInvDepthFactorVariant1.cpp +++ b/gtsam_unstable/slam/tests/testInvDepthFactorVariant1.cpp @@ -72,6 +72,7 @@ TEST( InvDepthFactorVariant1, optimize) { // Optimize the graph to recover the actual landmark position LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; Values result = LevenbergMarquardtOptimizer(graph, values, params).optimize(); // Vector6 actual = result.at(landmarkKey); diff --git a/gtsam_unstable/slam/tests/testInvDepthFactorVariant2.cpp b/gtsam_unstable/slam/tests/testInvDepthFactorVariant2.cpp index 7ac0faa1e4..bc7a70e64a 100644 --- a/gtsam_unstable/slam/tests/testInvDepthFactorVariant2.cpp +++ b/gtsam_unstable/slam/tests/testInvDepthFactorVariant2.cpp @@ -70,6 +70,7 @@ TEST( InvDepthFactorVariant2, optimize) { // Optimize the graph to recover the actual landmark position LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; Values result = LevenbergMarquardtOptimizer(graph, values, params).optimize(); Vector3 actual = result.at(landmarkKey); diff --git a/gtsam_unstable/slam/tests/testInvDepthFactorVariant3.cpp b/gtsam_unstable/slam/tests/testInvDepthFactorVariant3.cpp index 951349b0fe..de70016068 100644 --- a/gtsam_unstable/slam/tests/testInvDepthFactorVariant3.cpp +++ b/gtsam_unstable/slam/tests/testInvDepthFactorVariant3.cpp @@ -70,6 +70,7 @@ TEST( InvDepthFactorVariant3, optimize) { // Optimize the graph to recover the actual landmark position LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; Values result = LevenbergMarquardtOptimizer(graph, values, params).optimize(); Vector3 actual = result.at(landmarkKey); diff --git a/gtsam_unstable/slam/tests/testSerialization.cpp b/gtsam_unstable/slam/tests/testSerialization.cpp index 5244710e85..9a0db1d86c 100644 --- a/gtsam_unstable/slam/tests/testSerialization.cpp +++ b/gtsam_unstable/slam/tests/testSerialization.cpp @@ -17,8 +17,7 @@ #include -#include - +#include #include #include #include @@ -26,7 +25,7 @@ using namespace std; using namespace gtsam; -namespace fs = boost::filesystem; +namespace fs = std::filesystem; #ifdef TOPSRCDIR static string topdir = TOPSRCDIR; #else diff --git a/gtsam_unstable/slam/tests/testSmartProjectionPoseFactorRollingShutter.cpp b/gtsam_unstable/slam/tests/testSmartProjectionPoseFactorRollingShutter.cpp index 3735e65a8c..9b2c3741f0 100644 --- a/gtsam_unstable/slam/tests/testSmartProjectionPoseFactorRollingShutter.cpp +++ b/gtsam_unstable/slam/tests/testSmartProjectionPoseFactorRollingShutter.cpp @@ -78,7 +78,13 @@ SmartProjectionParams params( gtsam::ZERO_ON_DEGENERACY); // only config that works with RS factors } // namespace vanillaPoseRS -LevenbergMarquardtParams lmParams; +LevenbergMarquardtParams makeLmParams() { + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} + +LevenbergMarquardtParams lmParams = makeLmParams(); typedef SmartProjectionPoseFactorRollingShutter> SmartFactorRS; diff --git a/gtsam_unstable/slam/tests/testSmartStereoFactor_iSAM2.cpp b/gtsam_unstable/slam/tests/testSmartStereoFactor_iSAM2.cpp index 62cd4cc38b..4588f5362f 100644 --- a/gtsam_unstable/slam/tests/testSmartStereoFactor_iSAM2.cpp +++ b/gtsam_unstable/slam/tests/testSmartStereoFactor_iSAM2.cpp @@ -41,6 +41,15 @@ // Tolerance for ground-truth pose comparison: static const double tol = 1e-3; +namespace { +gtsam::LevenbergMarquardtParams makeLmParams() { + gtsam::LevenbergMarquardtParams params; + params.linearSolverType = + gtsam::LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} +} // namespace + // Synthetic dataset generated with rwt // (https://github.com/jlblancoc/recursive-world-toolkit) // Camera parameters @@ -204,7 +213,7 @@ TEST(testISAM2SmartFactor, Stereo_Batch) { batch_values.insert(X(kf_id), Pose3::Identity()); } - LevenbergMarquardtParams parameters; + LevenbergMarquardtParams parameters = makeLmParams(); #if TEST_VERBOSE_OUTPUT parameters.verbosity = NonlinearOptimizerParams::LINEAR; parameters.verbosityLM = LevenbergMarquardtParams::TRYDELTA; diff --git a/gtsam_unstable/slam/tests/testSmartStereoProjectionFactorPP.cpp b/gtsam_unstable/slam/tests/testSmartStereoProjectionFactorPP.cpp index b4e0e65f36..fe399ebf68 100644 --- a/gtsam_unstable/slam/tests/testSmartStereoProjectionFactorPP.cpp +++ b/gtsam_unstable/slam/tests/testSmartStereoProjectionFactorPP.cpp @@ -83,7 +83,13 @@ vector stereo_projectToMultipleCameras(const StereoCamera& cam1, return measurements_cam; } -LevenbergMarquardtParams lm_params; +LevenbergMarquardtParams makeLmParams() { + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} + +LevenbergMarquardtParams lmParams = makeLmParams(); } // namespace /* ************************************************************************* */ @@ -470,7 +476,7 @@ TEST( SmartStereoProjectionFactorPP, 3poses_optimization_multipleExtrinsics ) { Values result; gttic_(SmartStereoProjectionFactorPP); - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); gttoc_(SmartStereoProjectionFactorPP); tictoc_finishedIteration_(); @@ -526,7 +532,7 @@ TEST( SmartStereoProjectionFactorPP, 3poses_optimization_multipleExtrinsics ) { EXPECT_DOUBLES_EQUAL(833953.92789459578, graph2.error(values2), 1e-7); EXPECT_DOUBLES_EQUAL(initialErrorSmart, graph2.error(values2), 1e-7); // identical to previous case! - LevenbergMarquardtOptimizer optimizer2(graph2, values2, lm_params); + LevenbergMarquardtOptimizer optimizer2(graph2, values2, lmParams); Values result2 = optimizer2.optimize(); EXPECT_DOUBLES_EQUAL(0, graph2.error(result2), 1e-5); } @@ -850,7 +856,7 @@ TEST( SmartStereoProjectionFactorPP, 3poses_optimization_sameExtrinsicKey ) { Values result; gttic_(SmartStereoProjectionFactorPP); - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); gttoc_(SmartStereoProjectionFactorPP); tictoc_finishedIteration_(); @@ -951,7 +957,7 @@ TEST( SmartStereoProjectionFactorPP, 3poses_optimization_2ExtrinsicKeys ) { Values result; gttic_(SmartStereoProjectionFactorPP); - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); gttoc_(SmartStereoProjectionFactorPP); tictoc_finishedIteration_(); @@ -1076,7 +1082,7 @@ TEST( SmartStereoProjectionFactorPP, monocular_multipleExtrinsicKeys ){ Values result; gttic_(SmartStereoProjectionFactorPP); - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); gttoc_(SmartStereoProjectionFactorPP); tictoc_finishedIteration_(); @@ -1156,7 +1162,7 @@ TEST( SmartStereoProjectionFactorPP, landmarkDistance ) { // All smart factors are disabled and pose should remain where it is Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); EXPECT(assert_equal(values.at(x3), result.at(x3), 1e-5)); EXPECT_DOUBLES_EQUAL(graph.error(values), graph.error(result), 1e-5); @@ -1261,7 +1267,7 @@ TEST( SmartStereoProjectionFactorPP, dynamicOutlierRejection ) { // Factor 4 is disabled, pose 3 stays put Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); EXPECT(assert_equal(Pose3::Identity(), result.at(body_P_cam_key))); } @@ -1272,4 +1278,3 @@ int main() { return TestRegistry::runAllTests(tr); } /* ************************************************************************* */ - diff --git a/gtsam_unstable/slam/tests/testSmartStereoProjectionPoseFactor.cpp b/gtsam_unstable/slam/tests/testSmartStereoProjectionPoseFactor.cpp index 872cd2deaa..7dbd37ec61 100644 --- a/gtsam_unstable/slam/tests/testSmartStereoProjectionPoseFactor.cpp +++ b/gtsam_unstable/slam/tests/testSmartStereoProjectionPoseFactor.cpp @@ -77,7 +77,13 @@ vector stereo_projectToMultipleCameras(const StereoCamera& cam1, return measurements_cam; } -LevenbergMarquardtParams lm_params; +LevenbergMarquardtParams makeLmParams() { + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} + +LevenbergMarquardtParams lmParams = makeLmParams(); } // namespace /* ************************************************************************* */ @@ -362,7 +368,7 @@ TEST( SmartStereoProjectionPoseFactor, 3poses_smart_projection_factor ) { Values result; gttic_(SmartStereoProjectionPoseFactor); - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); gttoc_(SmartStereoProjectionPoseFactor); tictoc_finishedIteration_(); @@ -417,7 +423,7 @@ TEST( SmartStereoProjectionPoseFactor, 3poses_smart_projection_factor ) { // cout << std::setprecision(10) << "\n----StereoFactor graph initial error: " << graph2.error(values) << endl; EXPECT_DOUBLES_EQUAL(833953.92789459578, graph2.error(values), 1e-7); - LevenbergMarquardtOptimizer optimizer2(graph2, values, lm_params); + LevenbergMarquardtOptimizer optimizer2(graph2, values, lmParams); Values result2 = optimizer2.optimize(); EXPECT_DOUBLES_EQUAL(0, graph2.error(result2), 1e-5); @@ -499,7 +505,7 @@ TEST( SmartStereoProjectionPoseFactor, body_P_sensor ) { Values result; gttic_(SmartStereoProjectionPoseFactor); - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); gttoc_(SmartStereoProjectionPoseFactor); tictoc_finishedIteration_(); @@ -604,7 +610,7 @@ TEST( SmartStereoProjectionPoseFactor, body_P_sensor_monocular ){ // initialize third pose with some noise, we expect it to move back to original pose3 values.insert(x3, bodyPose3*noise_pose); - LevenbergMarquardtParams lmParams; + LevenbergMarquardtParams lmParams = makeLmParams(); Values result; LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); @@ -671,7 +677,7 @@ TEST( SmartStereoProjectionPoseFactor, jacobianSVD ) { values.insert(x3, pose3 * noise_pose); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); EXPECT(assert_equal(pose3, result.at(x3))); } @@ -743,7 +749,7 @@ TEST( SmartStereoProjectionPoseFactor, jacobianSVDwithMissingValues ) { values.insert(x3, pose3 * noise_pose); Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); EXPECT(assert_equal(pose3, result.at(x3),1e-7)); } @@ -813,7 +819,7 @@ TEST( SmartStereoProjectionPoseFactor, landmarkDistance ) { // All factors are disabled and pose should remain where it is Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); EXPECT(assert_equal(values.at(x3), result.at(x3))); } @@ -910,7 +916,7 @@ TEST( SmartStereoProjectionPoseFactor, dynamicOutlierRejection ) { // Factor 4 is disabled, pose 3 stays put Values result; - LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); + LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); result = optimizer.optimize(); EXPECT(assert_equal(pose3, result.at(x3))); } @@ -971,7 +977,7 @@ TEST( SmartStereoProjectionPoseFactor, dynamicOutlierRejection ) { // values.insert(x3, pose3*noise_pose); // //// Values result; -// LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); +// LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); // result = optimizer.optimize(); // EXPECT(assert_equal(pose3,result.at(x3))); //} @@ -1030,7 +1036,7 @@ TEST( SmartStereoProjectionPoseFactor, dynamicOutlierRejection ) { // values.insert(L(2), landmark2); // values.insert(L(3), landmark3); // -// LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); +// LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); // Values result = optimizer.optimize(); // // EXPECT(assert_equal(pose3,result.at(x3))); @@ -1181,7 +1187,7 @@ TEST( SmartStereoProjectionPoseFactor, CheckHessian) { // // Values result; // gttic_(SmartStereoProjectionPoseFactor); -// LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); +// LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); // result = optimizer.optimize(); // gttoc_(SmartStereoProjectionPoseFactor); // tictoc_finishedIteration_(); @@ -1255,7 +1261,7 @@ TEST( SmartStereoProjectionPoseFactor, CheckHessian) { // // Values result; // gttic_(SmartStereoProjectionPoseFactor); -// LevenbergMarquardtOptimizer optimizer(graph, values, lm_params); +// LevenbergMarquardtOptimizer optimizer(graph, values, lmParams); // result = optimizer.optimize(); // gttoc_(SmartStereoProjectionPoseFactor); // tictoc_finishedIteration_(); @@ -1457,4 +1463,3 @@ int main() { return TestRegistry::runAllTests(tr); } /* ************************************************************************* */ - diff --git a/myst.yml b/myst.yml index 85d1f26bf4..67d1085746 100644 --- a/myst.yml +++ b/myst.yml @@ -17,6 +17,9 @@ project: - file: ./gtsam/geometry/geometry.md children: - pattern: ./gtsam/geometry/doc/* + - file: ./gtsam/basis/basis.md + children: + - pattern: ./gtsam/basis/doc/* - file: ./gtsam/inference/inference.md children: - pattern: ./gtsam/inference/doc/* @@ -26,6 +29,9 @@ project: - file: ./gtsam/nonlinear/nonlinear.md children: - pattern: ./gtsam/nonlinear/doc/* + - file: ./gtsam/constrained/constrained.md + children: + - pattern: ./gtsam/constrained/doc/* - file: ./gtsam/symbolic/symbolic.md children: - pattern: ./gtsam/symbolic/doc/* diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 857062f885..22353a952a 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -149,6 +149,15 @@ if(WIN32) COMMAND_EXPAND_LISTS VERBATIM ) + if(GTSAM_USE_EIGEN_MKL AND DEFINED VCPKG_INSTALLED_DIR) + ADD_CUSTOM_COMMAND(TARGET ${GTSAM_PYTHON_TARGET} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${MKL_DLLS}" + "${GTSAM_PYTHON_BUILD_DIRECTORY}/gtsam/" + COMMAND_EXPAND_LISTS + VERBATIM + ) + endif() endif() # Set the path for the GTSAM python module @@ -263,6 +272,15 @@ if(GTSAM_UNSTABLE_BUILD_PYTHON) COMMAND_EXPAND_LISTS VERBATIM ) + if(GTSAM_USE_EIGEN_MKL AND DEFINED VCPKG_INSTALLED_DIR) + ADD_CUSTOM_COMMAND(TARGET ${GTSAM_PYTHON_UNSTABLE_TARGET} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${MKL_DLLS}" + "${GTSAM_PYTHON_BUILD_DIRECTORY}/gtsam_unstable/" + COMMAND_EXPAND_LISTS + VERBATIM + ) + endif() endif() add_custom_target( diff --git a/python/README.md b/python/README.md index 4d195a8213..cf0c03e628 100644 --- a/python/README.md +++ b/python/README.md @@ -77,3 +77,15 @@ See the tests for examples. ## Wrapping Custom GTSAM-based Project Please refer to the template project and the corresponding tutorial available [here](https://github.com/borglab/GTSAM-project-python). + +## Wheels + +GTSAM Python wheels are built in CI through two cibuildwheel workflows that share the same matrix of Python 3.10--3.13 targets on Linux x86_64, Linux aarch64, macOS x86_64, and macOS arm64. Both scripts first configure the wrapper with `cmake -DGTSAM_BUILD_PYTHON=1` so that `setup.py` exists for cibuildwheel, invoke `.github/scripts/python_wheels/cibw_before_all.sh`, then run `.github/scripts/python_wheels/build_wheels.sh` before storing the artifacts and publishing them with `pypa/gh-action-pypi-publish`. + +1. **Develop wheels** (`.github/workflows/build-cibw.yml`) run on every push to `develop` (and by manual dispatch). The workflow injects `DEVELOP=1` and a timestamp so the generated version string becomes a `gtsam-develop` build, and it continues to publish the built wheels via the publish action at the end of the job. Use this workflow as a staging pipeline for the most recent development snapshots. + +2. **Release wheels** (`.github/workflows/prod-cibw.yml`) trigger when a GitHub release is published (and can also be run manually). The job is otherwise identical but omits the `DEVELOP` flag and publishes the wheels to `https://test.pypi.org/legacy/`, making it the production-quality artifact build tied to a release tag. + +### Cleaning develop wheels + +If the `gtsam-develop` project on PyPI grows too large (PyPI enforces a 10 GB quota for each package), run `.github/scripts/python_wheels/cleanup_gtsam_develop.sh` to drop every release except the most recent one. You can pass your PyPI username (`bash .github/scripts/python_wheels/cleanup_gtsam_develop.sh `) or let the script prompt for it, but the account must be an owner or maintainer of `gtsam-develop`. The script always confirms before deleting, then calls `python3 -m pypi_cleanup` with `--leave-most-recent-only --do-it`, so treat this as a permanent cleanup that should only be used when you are about to exceed PyPI's size limit. diff --git a/python/gtsam/examples/AbcEquivariantFilterExample.py b/python/gtsam/examples/AbcEquivariantFilterExample.py new file mode 100644 index 0000000000..4e1879900d --- /dev/null +++ b/python/gtsam/examples/AbcEquivariantFilterExample.py @@ -0,0 +1,250 @@ +""" +Python translation of examples/AbcEquivariantFilterExample.cpp. + +Runs the Attitude-Bias-Calibration EqF demo using the wrapped C++ +EquivariantFilter (ABC-specific wrapper). +""" + +from __future__ import annotations + +from dataclasses import dataclass +import csv +import math +from typing import List + +import numpy as np +import gtsam +from gtsam import Rot3, Unit3 +from gtsam.utils import findExampleDataFile + + +@dataclass +class MeasurementRecord: + y: np.ndarray + d: np.ndarray + R: np.ndarray + cal_idx: int + + +@dataclass +class DataRecord: + R: Rot3 + b: np.ndarray + cal_rot: Rot3 + omega: np.ndarray + input_covariance: np.ndarray + measurements: List[MeasurementRecord] + t: float + dt: float + + +def _normalize(v: np.ndarray) -> np.ndarray: + n = np.linalg.norm(v) + if n == 0.0: + return v + return v / n + + +def load_data_from_csv( + filename: str, start_row: int = 0, max_rows: int = -1, downsample: int = 1 +) -> List[DataRecord]: + data_list: List[DataRecord] = [] + with open(filename, newline="") as csvfile: + reader = csv.reader(csvfile) + header = next(reader, None) + if header is None: + return data_list + + line_number = 1 + row_count = 0 + prev_time = 0.0 + + for row in reader: + line_number += 1 + if line_number < start_row: + continue + if ((line_number - start_row - 1) % downsample) != 0: + continue + if max_rows != -1 and row_count >= max_rows: + break + if len(row) < 39: + continue + + values = [float(x) if x else 0.0 for x in row] + + t = values[0] + dt = 0.0 if row_count == 0 else t - prev_time + prev_time = t + + R = Rot3.Quaternion(values[1], values[2], values[3], values[4]) + b = np.array([values[5], values[6], values[7]]) + + cal_rot = Rot3.Quaternion(values[8], values[9], values[10], values[11]) + + omega = np.array([values[12], values[13], values[14]]) + + input_covariance = np.zeros((6, 6)) + input_covariance[0, 0] = values[15] ** 2 + input_covariance[1, 1] = values[16] ** 2 + input_covariance[2, 2] = values[17] ** 2 + input_covariance[3, 3] = values[18] ** 2 + input_covariance[4, 4] = values[19] ** 2 + input_covariance[5, 5] = values[20] ** 2 + + measurements: List[MeasurementRecord] = [] + + y0 = _normalize(np.array([values[21], values[22], values[23]])) + d0 = _normalize(np.array([values[33], values[34], values[35]])) + cov_y0 = np.diag([values[27] ** 2, values[28] ** 2, values[29] ** 2]) + measurements.append(MeasurementRecord(y0, d0, cov_y0, 0)) + + y1 = _normalize(np.array([values[24], values[25], values[26]])) + d1 = _normalize(np.array([values[36], values[37], values[38]])) + cov_y1 = np.diag([values[30] ** 2, values[31] ** 2, values[32] ** 2]) + measurements.append(MeasurementRecord(y1, d1, cov_y1, -1)) + + data_list.append( + DataRecord( + R=R, + b=b, + cal_rot=cal_rot, + omega=omega, + input_covariance=input_covariance, + measurements=measurements, + t=t, + dt=dt, + ) + ) + row_count += 1 + + return data_list + + +def process_data_with_eqf( + filter_eqf: gtsam.abc.AbcEquivariantFilter1, + data_list: List[DataRecord], +) -> None: + if not data_list: + print("No data to process") + return + + print(f"Processing {len(data_list)} data points with EqF...") + att_errors: List[float] = [] + bias_errors: List[float] = [] + cal_errors: List[float] = [] + + total_measurements = 0 + valid_measurements = 0 + + rad_to_deg = 180.0 / math.pi + progress_step = max(len(data_list) // 10, 1) + print("Progress: ", end="", flush=True) + + for i, data in enumerate(data_list): + filter_eqf.predict(data.omega, data.input_covariance, data.dt) + + for measurement in data.measurements: + total_measurements += 1 + if np.any(np.isnan(measurement.y)) or np.any(np.isnan(measurement.d)): + continue + try: + y_unit = Unit3(measurement.y) + d_unit = Unit3(measurement.d) + filter_eqf.update(y_unit, d_unit, measurement.R, measurement.cal_idx) + valid_measurements += 1 + except Exception: + continue + + estimate_R = filter_eqf.attitude() + estimate_b = np.array(filter_eqf.bias()).reshape(3) + estimate_cal = filter_eqf.calibration(0) + + att_error = Rot3.Logmap(data.R.between(estimate_R)) + bias_error = estimate_b - data.b + cal_error = np.zeros(3) + cal_error = Rot3.Logmap(data.cal_rot.between(estimate_cal)) + + att_errors.append(np.linalg.norm(att_error)) + bias_errors.append(np.linalg.norm(bias_error)) + cal_errors.append(np.linalg.norm(cal_error)) + + if i % progress_step == 0: + print(".", end="", flush=True) + + print(" Done!") + + avg_att_error = float(np.mean(att_errors)) if att_errors else 0.0 + avg_bias_error = float(np.mean(bias_errors)) if bias_errors else 0.0 + avg_cal_error = float(np.mean(cal_errors)) if cal_errors else 0.0 + + final_data = data_list[-1] + final_R = filter_eqf.attitude() + final_b = np.array(filter_eqf.bias()).reshape(3) + final_cal = filter_eqf.calibration(0) + final_att_error = Rot3.Logmap(final_data.R.between(final_R)) + final_bias_error = final_b - final_data.b + final_cal_error = Rot3.Logmap(final_data.cal_rot.between(final_cal)) + + print("\n=== Filter Performance Summary ===") + print(f"Processed measurements: {total_measurements} (valid: {valid_measurements})") + + print("\n-- Average Errors --") + print(f"Attitude: {avg_att_error * rad_to_deg}°") + print(f"Bias: {avg_bias_error}") + print(f"Calibration: {avg_cal_error * rad_to_deg}°") + + print("\n-- Final Errors --") + print(f"Attitude: {np.linalg.norm(final_att_error) * rad_to_deg}°") + print(f"Bias: {np.linalg.norm(final_bias_error)}") + print(f"Calibration: {np.linalg.norm(final_cal_error) * rad_to_deg}°") + + print("\n-- Final State vs Ground Truth --") + print( + "Attitude (RPY) - Estimate:", + (final_R.rpy() * rad_to_deg), + "° | Truth:", + (final_data.R.rpy() * rad_to_deg), + "°", + ) + print("Bias - Estimate:", final_b, "| Truth:", final_data.b) + print( + "Calibration (RPY) - Estimate:", + (final_cal.rpy() * rad_to_deg), + "° | Truth:", + (final_data.cal_rot.rpy() * rad_to_deg), + "°", + ) + + +def main() -> None: + print("ABC-EqF: Attitude-Bias-Calibration Equivariant Filter Demo") + print("==============================================================") + + try: + csv_file_path = findExampleDataFile("EqFdata.csv") + except Exception: + print("Error: Could not find EqFdata.csv") + return + + data = load_data_from_csv(csv_file_path) + if not data: + print("No data available to process. Exiting.") + return + + n_cal = 1 + m_sensors = 2 + initial_sigma = np.eye(6 + 3 * n_cal) + initial_sigma[0:3, 0:3] = 0.1 * np.eye(3) + initial_sigma[3:6, 3:6] = 0.01 * np.eye(3) + initial_sigma[6:9, 6:9] = 0.1 * np.eye(3) + + filter_eqf = gtsam.abc.AbcEquivariantFilter1(initial_sigma) + process_data_with_eqf(filter_eqf, data) + + print("\nEqF demonstration completed successfully.") + + +if __name__ == "__main__": + main() + + diff --git a/python/gtsam/examples/DifferentialPseudorangeExample.ipynb b/python/gtsam/examples/DifferentialPseudorangeExample.ipynb new file mode 100644 index 0000000000..6243ff1fb3 --- /dev/null +++ b/python/gtsam/examples/DifferentialPseudorangeExample.ipynb @@ -0,0 +1,400 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Differential GNSS Positioning\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "Differential GNSS (DGNSS) improves positioning accuracy by using a reference receiver at a precisely known location to correct errors affecting nearby GNSS users. The reference station receives the same satellite signals as the user and compares the measured ranges to the true ranges based on its known position. The differences represent combined errors from satellite clocks, orbits, and atmospheric delays. These corrections are transmitted to the user receiver, which applies them to its own measurements. Because both receivers experience nearly the same errors, especially when close together, many of these errors cancel out, reducing position errors from several meters to sub-meter or better accuracy.\n", + "\n", + "GNSS positioning problems can be encoded as factor graphs in GTSAM; this notebook extends the groundwork from [SinglePointPositioningExample.ipynb](https://borglab.github.io/gtsam/singlepointpositioningexample/) to improve receiver positioning accuracy using corrections from a nearby reference receiver." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2026, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet pyrtklib numpy gtsam-develop pyproj tabulate folium\n", + " !wget https://raw.githubusercontent.com/borglab/gtsam/refs/heads/develop/python/gtsam/examples/gnss_utils.py\n", + "except ImportError:\n", + " pass\n", + "\n", + "import folium\n", + "import gnss_utils\n", + "import gtsam\n", + "from gtsam.symbol_shorthand import B, C, X\n", + "import numpy as np\n", + "from pyproj import Transformer\n", + "import pyrtklib as rtklib\n", + "from tabulate import tabulate\n", + "\n", + "# Set up ecef -> lla converter:\n", + "ecef2lla = Transformer.from_crs(\"epsg:4978\", \"epsg:4326\", always_xy=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Premise\n", + "We'll use the [ZOA1 station in Fremont, California](https://geodesy.noaa.gov/CORS/ncn_station_pages/index.html?stationID=ZOA1) to correct measurements for a nearby station, [P222](https://geodesy.noaa.gov/CORS/ncn_station_pages/index.html?stationID=p222). Let's download and load the satellite broadcast ephemerides and observations from both stations. Don't forget to compute the satellite orbits 🛰" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"=== ZOA1 Data ===\")\n", + "print(\"Downloading and extracting...\", end=\"\")\n", + "zoa1_data = gnss_utils.loadCORSRINEX([\n", + " \"https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/018/brdc0180.26n.gz\",\n", + " \"https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/018/zoa1/zoa10180.26o.gz\"\n", + "])\n", + "print(\"done!\")\n", + "print(zoa1_data)\n", + "print(\"Computing satellite orbits...\", end=\"\")\n", + "zoa1_sat_pos = zoa1_data.computeSatelliteOrbits(zoa1_data.obs.data[0].time)\n", + "print(\"done!\\n\")\n", + "\n", + "print(\"=== P222 Data ===\")\n", + "print(\"Downloading and extracting...\", end=\"\")\n", + "p222_data = gnss_utils.loadCORSRINEX([\n", + " \"https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/018/brdc0180.26n.gz\",\n", + " \"https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/018/p222/p2220180.26o.gz\"\n", + "])\n", + "print(\"done!\")\n", + "print(p222_data)\n", + "print(\"Computing satellite orbits...\", end=\"\")\n", + "p222_sat_pos = p222_data.computeSatelliteOrbits(p222_data.obs.data[0].time)\n", + "print(\"done!\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bootstrap Initial Position\n", + "Start with `PseudorangeFactor` to prepare a simple factor graph for an initial baseline estimation for P222's position. Similar to ZOA1, P222 has surveyed ground-truth coordinates to compare compare against our solution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prepare factor graph:\n", + "cb_key = B(0) # Receiver clock bias variable key.\n", + "pos_key = X(0) # Receiver position variable key.\n", + "nm = gtsam.noiseModel.Diagonal.Sigmas(np.array([1.0]))\n", + "graph = gtsam.NonlinearFactorGraph()\n", + "\n", + "# Add a PseudorangeFactor for each observation:\n", + "rows = []\n", + "for obsd, sat_bias, sat_pos, pseudorange in gnss_utils.iterateObservations(p222_data, p222_sat_pos, n=7):\n", + " graph.add(\n", + " gtsam.PseudorangeFactor(pos_key, cb_key, pseudorange, sat_pos, sat_bias, nm)\n", + " )\n", + "\n", + " rows.append([obsd.sat, pseudorange, obsd.time.time, 1e-3*sat_pos, sat_bias])\n", + "\n", + "headers = [\"Satellite\", \"Pseudorange (m)\", \"Time (unixtime seconds)\", \"Sat ECEF Position (km)\", \"Sat Clock Bias (sec)\"]\n", + "print(tabulate(rows, headers=headers, tablefmt=\"github\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We initialize receiver position at origin, and then use a LM solver to optimize the system." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Solve the system:\n", + "initial_values = gtsam.Values()\n", + "initial_values.insert(cb_key, 0.0)\n", + "initial_values.insert(pos_key, np.zeros(3))\n", + "result = gtsam.LevenbergMarquardtOptimizer(graph, initial_values).optimize()\n", + "\n", + "# Process the results:\n", + "clock_bias = result.atDouble(cb_key)\n", + "receiver_position = result.atVector(pos_key)\n", + "print(f\"Final clock bias {clock_bias} seconds and receiver position {receiver_position} (ECEF meters)\")\n", + "lon, lat, alt = ecef2lla.transform(receiver_position[0], receiver_position[1], receiver_position[2])\n", + "print(f\"Latitude: {lat} degrees\")\n", + "print(f\"Longitude: {lon} degrees\")\n", + "print(f\"Altitude: {alt} meters\")\n", + "gnss_utils.plotMap(lat, lon)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So far this solution passes the eye-ball test: It's in the right US state, in roughly the correct part of the SF Bay Area. But we can quantify error by comparing the [actual position of P222](https://www.ngs.noaa.gov/cgi-cors/CorsSidebarSelect.prl?site=P222&option=Coordinates20):\n", + "```\n", + "| ITRF2020 POSITION (EPOCH 2020.0) |\n", + "| Computed in Apr 2025 using data through gpswk 2237. |\n", + "| X = -2689640.518 m latitude = 37 32 21.26653 N |\n", + "| Y = -4290437.125 m longitude = 122 04 59.76571 W |\n", + "| Z = 3865051.027 m ellipsoid height = 53.512 m |\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ground_truth = np.array([-2689640.518, -4290437.125, 3865051.027]) # P222's surveyed ground-truth position.\n", + "error = ground_truth - receiver_position\n", + "print(f\"Total positioning error: {np.linalg.norm(error)} meters\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "30 meters is a decent starting point from single-point positioning, but let's see if we can do better.\n", + "\n", + "## Differential Positioning\n", + "In this scenario, we know ZOA1's precise position ahead-of-time. Its [surveyed position](https://noaa-cors-pds.s3.amazonaws.com/coord/coord_20/zoa1_20.coord.txt) is published in the data portal, and reproduced here:\n", + "```\n", + "| ITRF2020 POSITION (EPOCH 2020.0) |\n", + "| Computed in Apr 2025 using data through gpswk 2237. |\n", + "| X = -2684436.824 m latitude = 37 32 34.99617 N |\n", + "| Y = -4293336.957 m longitude = 122 00 57.42005 W |\n", + "| Z = 3865351.638 m ellipsoid height = -3.960 m |\n", + "```\n", + "In a factor graph framework, these survey coordinates correspond to a stiff `PriorFactor` constraint on ZOA1's position node to keep it anchored in the global Earth frame. The rest of the factor graph is constructed as follows:\n", + "\n", + "![illustrative factor graph example showcasing differential correction factors](https://raw.githubusercontent.com/borglab/gtsam/refs/heads/develop/python/gtsam/examples/images/dpr_fg.jpg)\n", + "\n", + "A `DifferentialPseudorangeFactor` is added for each receiver observation, and their correction nodes are indexed by satellite ID. For example, ZOA1's pseudorange factor of satellite 25 links to the same correction node for P222's pseudorange observation of satellite 25. Since different satellites are in different positions in the sky, each satellite has their own correction node to account for spatial variation in atmospheric effects. Furthermore, for long-time-series observations, the correction nodes must also account for temporal variation in the atmosphere. In that case, a linear chain of correction nodes linked with between-factors is recommended. The above structure is encoded into GTSAM below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "p222_bias_key = B(0) # Receiver clock bias variable key.\n", + "p222_pos_key = X(0) # Receiver position variable key.\n", + "zoa1_bias_key = B(1)\n", + "zoa1_pos_key = X(1)\n", + "zoa1_ref_pos = np.array([-2684436.824, -4293336.957, 3865351.638]) # ZOA1's surveyed reference position.\n", + "nm = gtsam.noiseModel.Diagonal.Sigmas(np.array([1.0]))\n", + "graph = gtsam.NonlinearFactorGraph()\n", + "\n", + "initial_values = gtsam.Values()\n", + "initial_values.insert(zoa1_pos_key, zoa1_ref_pos)\n", + "initial_values.insert(zoa1_bias_key, 0.0)\n", + "initial_values.insert(p222_pos_key, receiver_position)\n", + "initial_values.insert(p222_bias_key, clock_bias)\n", + "\n", + "# Apply a prior factor constraint on zoa1's reference position:\n", + "graph.add(\n", + " gtsam.PriorFactorVector(\n", + " zoa1_pos_key,\n", + " zoa1_ref_pos,\n", + " gtsam.noiseModel.Diagonal.Sigmas(np.array([0.0005, 0.0005, 0.0005]))\n", + " )\n", + ")\n", + "\n", + "# Add factors for reference station:\n", + "sat_keymap = {}\n", + "for i, (obsd, sat_bias, sat_pos, pseudorange) in enumerate(gnss_utils.iterateObservations(zoa1_data, zoa1_sat_pos, n=40)):\n", + " # Apply factor:\n", + " if obsd.sat not in sat_keymap:\n", + " initial_values.insert(C(i), 0.0)\n", + " sat_keymap[obsd.sat] = C(i)\n", + " correction_key = C(i)\n", + " else:\n", + " correction_key = sat_keymap[obsd.sat]\n", + " factor = gtsam.DifferentialPseudorangeFactor(\n", + " zoa1_pos_key, zoa1_bias_key, correction_key,\n", + " pseudorange, sat_pos, sat_bias, nm)\n", + " graph.add(factor)\n", + "\n", + "# Add factors for user station:\n", + "for obsd, sat_bias, sat_pos, pseudorange in gnss_utils.iterateObservations(p222_data, p222_sat_pos, n=40):\n", + " # Apply factor:\n", + " if obsd.sat in sat_keymap:\n", + " correction_key = sat_keymap[obsd.sat]\n", + " factor = gtsam.DifferentialPseudorangeFactor(\n", + " p222_pos_key, p222_bias_key, correction_key,\n", + " pseudorange, sat_pos, sat_bias, nm)\n", + " graph.add(factor)\n", + " \n", + "# Solve the system:\n", + "lm = gtsam.LevenbergMarquardtOptimizer(graph, initial_values)\n", + "print(f\"Initial error: {lm.error()}\")\n", + "result = lm.optimize()\n", + "print(f\"Final error: {lm.error()}\")\n", + "\n", + "# Process the results:\n", + "clock_bias = result.atDouble(p222_bias_key)\n", + "corrected_receiver_position = result.atVector(p222_pos_key)\n", + "print(f\"Corrected P222 position: {corrected_receiver_position} ECEF meters\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's plot these coordinates on a map, including the reference stations and single-point positions, to get a big-picture overview of how the positioning results stack up:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convenience plot:\n", + "lon, lat, alt = ecef2lla.transform(corrected_receiver_position[0], corrected_receiver_position[1], corrected_receiver_position[2])\n", + "print(f\"Corrected geodetic coordinates: {lat}, {lon}, {alt} m\")\n", + "\n", + "# Center the map on P222\n", + "m = folium.Map(\n", + " location=[lat, lon],\n", + " zoom_start=17\n", + ")\n", + "\n", + "# Plot surveyed P222 position:\n", + "folium.Circle(\n", + " location=[37.5392407028, -122.0832682528],\n", + " radius=10,\n", + " tooltip=\"P222 Truth\",\n", + " popup=\"Actual P222 position\"\n", + ").add_to(m)\n", + "\n", + "# Plot the corrected receiver position:\n", + "folium.Marker(\n", + " location=[lat, lon],\n", + " tooltip=\"P222 Corrected\",\n", + " popup=\"Estimated P222 position using corrections from ZOA1\",\n", + " icon=folium.Icon(color=\"green\", icon=\"plus\")\n", + ").add_to(m)\n", + "\n", + "# Plot the single-point-positioning solution:\n", + "lon, lat, alt = ecef2lla.transform(receiver_position[0], receiver_position[1], receiver_position[2])\n", + "folium.Marker(\n", + " location=[lat, lon],\n", + " tooltip=\"P222 SPP\",\n", + " popup=\"Estimated P222 position without differential corrections\",\n", + " icon=folium.Icon(color=\"orange\", icon=\"minus\")\n", + ").add_to(m)\n", + "\n", + "# Plot ZOA1's position:\n", + "folium.Marker(\n", + " location=[37.5430544917, -122.0159500139],\n", + " tooltip=\"ZOA1\",\n", + " popup=\"ZOA1 reference station surveyed position\",\n", + " icon=folium.Icon(color=\"blue\")\n", + ").add_to(m)\n", + "\n", + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Scroll and zoom the map to get an idea for the relative positioning error between the single-point and differential solutions. The blue circle indicates the ground-truth surveyed postion of P222. The green \"plus\" marker shows the differentially-corrected solution. The orange \"minus\" marker indicates the uncorrected position. Zoom out further on the map to make the blue ZOA1 receiver position visible.\n", + "\n", + "Let's see if it's closer to ground truth?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"ZOA1 position adjustment: {1e3*np.linalg.norm(result.atVector(zoa1_pos_key) - zoa1_ref_pos)} millimeters\")\n", + "error = ground_truth - corrected_receiver_position\n", + "print(f\"Total positioning error: {np.linalg.norm(error)} meters\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "98% reduction in error going from ~30 to ~0.4 meters of accuracy! The differential corrections appear to eliminate a large portion of positioning error. But we can do better! Carrier-phase data offer higher-precision measuring power, but the devil's bargain demands an answer to the integer ambiguity problem." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sources\n", + "- [PseudorangeFactor.h](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/PseudorangeFactor.h)\n", + "- [PseudorangeFactor.cpp](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/PseudorangeFactor.cpp)\n", + "- [PseudorangeFactor.ipynb](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/doc/PseudorangeFactor.ipynb)\n", + "- [SinglePointPositioningExample.ipynb](https://borglab.github.io/gtsam/singlepointpositioningexample/)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/python/gtsam/examples/DiscreteMotionModel.ipynb b/python/gtsam/examples/DiscreteMotionModel.ipynb index 424a7472dc..b841d87d6e 100644 --- a/python/gtsam/examples/DiscreteMotionModel.ipynb +++ b/python/gtsam/examples/DiscreteMotionModel.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Getting Started with a simple conditional distribution model -- Python" + "# A Discrete Motion Model" ] }, { diff --git a/python/gtsam/examples/FisheyeExample.ipynb b/python/gtsam/examples/FisheyeExample.ipynb index 45b6d53972..0753de0add 100644 --- a/python/gtsam/examples/FisheyeExample.ipynb +++ b/python/gtsam/examples/FisheyeExample.ipynb @@ -5,7 +5,7 @@ "id": "7762616d", "metadata": {}, "source": [ - "# Fisheye Canera Structure-From-Motion Example\n", + "# Fisheye Camera SfM Example\n", "\n", "A visualSLAM example for the structure-from-motion problem on a\n", "simulated dataset. This version uses a fisheye camera model and a GaussNewton\n", @@ -29,7 +29,13 @@ ] }, "source": [ - "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\nAtlanta, Georgia 30332-0415\nAll Rights Reserved\n\nAuthors: Frank Dellaert, et al. (see THANKS for the full author list)\n\nSee LICENSE for the license information" + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" ] }, { @@ -43,7 +49,11 @@ }, "outputs": [], "source": [ - "try:\n import google.colab\n %pip install --quiet gtsam-develop\nexcept ImportError:\n pass" + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass" ] }, { @@ -280,4 +290,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/python/gtsam/examples/FitBasisExample.ipynb b/python/gtsam/examples/FitBasisExample.ipynb new file mode 100644 index 0000000000..2a7137bd57 --- /dev/null +++ b/python/gtsam/examples/FitBasisExample.ipynb @@ -0,0 +1,3675 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# FitBasis (Fourier + Chebyshev)\n", + "\n", + "\"Open\n", + "\n", + "This notebook demonstrates how to fit a set of scalar measurements using\n", + "`FitBasis` for all four basis options exposed in the Python wrapper:\n", + "\n", + "- `FourierBasis`\n", + "- `Chebyshev1Basis`\n", + "- `Chebyshev2Basis`\n", + "- `Chebyshev2` (pseudo-spectral, parameters are values at Chebyshev points)\n", + "\n", + "We use a time domain from **t = 0 to 1** and fit each basis with **fewer\n", + "parameters than points**. For Chebyshev bases, we map time into the\n", + "Chebyshev interval `x = 2t - 1` to match the default `[-1, 1]` domain.\n", + "For the Fourier basis we use `x = 2pi t` to model periodic behavior.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "50e0e944", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab\n", + " %pip install --quiet gtsam-develop\n", + "except ImportError:\n", + " pass # Not in Colab\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b8cf1aff", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "import numpy as np\n", + "import gtsam\n", + "import plotly.graph_objects as go\n", + "\n", + "np.set_printoptions(precision=3, suppress=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a040dcaf", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "# Sample data\n", + "rng = np.random.default_rng(42)\n", + "num_points = 30\n", + "t = np.linspace(0.0, 1.0, num_points)\n", + "\n", + "# A smooth, mildly periodic signal with a trend\n", + "y_clean = 0.7 * np.sin(2 * np.pi * t) + 0.3 * np.cos(4 * np.pi * t) + 0.2 * t\n", + "y = y_clean + 0.05 * rng.standard_normal(size=t.size)\n", + "\n", + "# Parameter count must be smaller or equal than number of points\n", + "N = 10" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "dab48fee", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def plot_fit(t_samples, y_samples, t_dense, y_fit, title, extra=None):\n", + " fig = go.Figure()\n", + " fig.add_trace(go.Scatter(x=t_samples, y=y_samples, mode=\"markers\", name=\"Samples\", marker=dict(color=\"blue\", symbol=\"diamond\")))\n", + " fig.add_trace(go.Scatter(x=t_dense, y=y_fit, mode=\"lines\", name=\"Fit\"))\n", + " if extra is not None:\n", + " fig.add_trace(extra)\n", + " fig.update_layout(\n", + " title=title,\n", + " xaxis_title=\"time t\",\n", + " yaxis_title=\"value\",\n", + " template=\"plotly_white\",\n", + " width=900,\n", + " height=450,\n", + " )\n", + " fig.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "62f6a786", + "metadata": {}, + "source": [ + "\n", + "## FourierBasis Fit\n", + "\n", + "This cell:\n", + "1. Builds a `{x: y}` sample map using the periodic domain `x = 2pi t`.\n", + "2. Fits Fourier coefficients with `FitBasisFourierBasis`.\n", + "3. Evaluates the fit on a dense grid via `FourierBasis.WeightMatrix`.\n", + "\n", + "Copy the core fit + evaluation parts if you want to integrate this into\n", + "your own pipeline (plotting is in a helper function).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c05c36fa", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "blue", + "symbol": "diamond" + }, + "mode": "markers", + "name": "Samples", + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAACWexphuaehP5Z7GmG5p7E/YbmnEZZ7uj+WexphuafBP3waYbmnEcY/YbmnEZZ7yj9GWO5phOXOP5Z7GmG5p9E/Ccs9jbDc0z98GmG5pxHWP+5phOWeRtg/YbmnEZZ72j/UCMs9jbDcP0ZY7mmE5d4/3dMIyz2N4D+WexphuafhP08jLPc0wuI/Ccs9jbDc4z/Cck8jLPfkP3waYbmnEeY/NcJyTyMs5z/uaYTlnkboP6gRlnsaYek/YbmnEZZ76j8aYbmnEZbrP9QIyz2NsOw/jbDc0wjL7T9GWO5phOXuPwAAAAAAAPA/", + "dtype": "f8" + }, + "y": { + "bdata": "bNnZANMs1D87DzzjZyvYP1/q4t00Q+E/W93Nm4hK4j/9htzjk4/aPwJ3IkOy2No/ouTpv9LF3T8nN6aaernbPzkayBL+fd0/sExPovXr3D+auSyw0JniP34j9yWkmOM/zzzfso7M4j/2gpF4p3fjPxDkkfgqRd8/RmY1DkHH0T/om8bU13HCPz0e0IwxVsO/cHLYTHsD078FowRs9/rhvwUauYQeqee/KYBEpkqo67/AIDqigRnpv6quPF8R++i/Cu+DUhyR5L82oNlO6lfbv4w4MoeOl8G/lPMgx2DSuj+vwUkRYXnVP6dbPdt2sOA/", + "dtype": "f8" + } + }, + { + "mode": "lines", + "name": "Fit", + "type": "scatter", + "x": { + "bdata": "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", + "dtype": "f8" + }, + "y": { + "bdata": "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", + "dtype": "f8" + } + } + ], + "layout": { + "height": 450, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "FourierBasis Fit (periodic beyond [0, 1])" + }, + "width": 900, + "xaxis": { + "title": { + "text": "time t" + } + }, + "yaxis": { + "title": { + "text": "value" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x_fourier = 2.0 * np.pi * t\n", + "sequence : dict = {float(xi): float(yi) for xi, yi in zip(x_fourier, y)}\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.05)\n", + "fit = gtsam.FitBasisFourierBasis(sequence, model, N)\n", + "params = fit.parameters()\n", + "\n", + "# Extend the time domain to show periodic behavior\n", + "t_dense = np.linspace(-0.5, 1.5, 600)\n", + "x_dense = 2.0 * np.pi * t_dense\n", + "W = gtsam.FourierBasis.WeightMatrix(len(params), x_dense)\n", + "y_fit = W @ params\n", + "\n", + "plot_fit(t, y, t_dense, y_fit, \"FourierBasis Fit (periodic beyond [0, 1])\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "34962068", + "metadata": {}, + "source": [ + "\n", + "## Chebyshev1Basis Fit\n", + "\n", + "This cell:\n", + "1. Maps time to the Chebyshev interval with `x = 2t - 1`.\n", + "2. Fits Chebyshev-1 coefficients with `FitBasisChebyshev1Basis`.\n", + "3. Evaluates the fit using `Chebyshev1Basis.WeightMatrix`.\n", + "\n", + "Copy the fit + evaluation steps to reuse with your own data or noise model.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ddacb31c", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "blue", + "symbol": "diamond" + }, + "mode": "markers", + "name": "Samples", + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAACWexphuaehP5Z7GmG5p7E/YbmnEZZ7uj+WexphuafBP3waYbmnEcY/YbmnEZZ7yj9GWO5phOXOP5Z7GmG5p9E/Ccs9jbDc0z98GmG5pxHWP+5phOWeRtg/YbmnEZZ72j/UCMs9jbDcP0ZY7mmE5d4/3dMIyz2N4D+WexphuafhP08jLPc0wuI/Ccs9jbDc4z/Cck8jLPfkP3waYbmnEeY/NcJyTyMs5z/uaYTlnkboP6gRlnsaYek/YbmnEZZ76j8aYbmnEZbrP9QIyz2NsOw/jbDc0wjL7T9GWO5phOXuPwAAAAAAAPA/", + "dtype": "f8" + }, + "y": { + "bdata": "bNnZANMs1D87DzzjZyvYP1/q4t00Q+E/W93Nm4hK4j/9htzjk4/aPwJ3IkOy2No/ouTpv9LF3T8nN6aaernbPzkayBL+fd0/sExPovXr3D+auSyw0JniP34j9yWkmOM/zzzfso7M4j/2gpF4p3fjPxDkkfgqRd8/RmY1DkHH0T/om8bU13HCPz0e0IwxVsO/cHLYTHsD078FowRs9/rhvwUauYQeqee/KYBEpkqo67/AIDqigRnpv6quPF8R++i/Cu+DUhyR5L82oNlO6lfbv4w4MoeOl8G/lPMgx2DSuj+vwUkRYXnVP6dbPdt2sOA/", + "dtype": "f8" + } + }, + { + "mode": "lines", + "name": "Fit", + "type": "scatter", + "x": { + "bdata": "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", + "dtype": "f8" + }, + "y": { + "bdata": "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", + "dtype": "f8" + } + } + ], + "layout": { + "height": 450, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Chebyshev1Basis Fit (extrapolation outside [0, 1])" + }, + "width": 900, + "xaxis": { + "title": { + "text": "time t" + } + }, + "yaxis": { + "title": { + "text": "value" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x_cheb = 2.0 * t - 1.0\n", + "sequence = {float(xi): float(yi) for xi, yi in zip(x_cheb, y)}\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.05)\n", + "fit = gtsam.FitBasisChebyshev1Basis(sequence, model, N)\n", + "params = fit.parameters()\n", + "\n", + "t_dense = np.linspace(-0.1, 1.1, 600)\n", + "x_dense = 2.0 * t_dense - 1.0\n", + "W = gtsam.Chebyshev1Basis.WeightMatrix(len(params), x_dense)\n", + "y_fit = W @ params\n", + "\n", + "plot_fit(t, y, t_dense, y_fit, \"Chebyshev1Basis Fit (extrapolation outside [0, 1])\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "88a6344a", + "metadata": {}, + "source": [ + "\n", + "## Chebyshev2Basis Fit\n", + "\n", + "This cell uses the second-kind Chebyshev basis (coefficient form):\n", + "\n", + "1. Map time to `x = 2t - 1`.\n", + "2. Fit with `FitBasisChebyshev2Basis`.\n", + "3. Evaluate with `Chebyshev2Basis.WeightMatrix`.\n", + "\n", + "These steps are the minimal pieces you need for non-plotting usage.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "fc3d1235", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "blue", + "symbol": "diamond" + }, + "mode": "markers", + "name": "Samples", + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAACWexphuaehP5Z7GmG5p7E/YbmnEZZ7uj+WexphuafBP3waYbmnEcY/YbmnEZZ7yj9GWO5phOXOP5Z7GmG5p9E/Ccs9jbDc0z98GmG5pxHWP+5phOWeRtg/YbmnEZZ72j/UCMs9jbDcP0ZY7mmE5d4/3dMIyz2N4D+WexphuafhP08jLPc0wuI/Ccs9jbDc4z/Cck8jLPfkP3waYbmnEeY/NcJyTyMs5z/uaYTlnkboP6gRlnsaYek/YbmnEZZ76j8aYbmnEZbrP9QIyz2NsOw/jbDc0wjL7T9GWO5phOXuPwAAAAAAAPA/", + "dtype": "f8" + }, + "y": { + "bdata": "bNnZANMs1D87DzzjZyvYP1/q4t00Q+E/W93Nm4hK4j/9htzjk4/aPwJ3IkOy2No/ouTpv9LF3T8nN6aaernbPzkayBL+fd0/sExPovXr3D+auSyw0JniP34j9yWkmOM/zzzfso7M4j/2gpF4p3fjPxDkkfgqRd8/RmY1DkHH0T/om8bU13HCPz0e0IwxVsO/cHLYTHsD078FowRs9/rhvwUauYQeqee/KYBEpkqo67/AIDqigRnpv6quPF8R++i/Cu+DUhyR5L82oNlO6lfbv4w4MoeOl8G/lPMgx2DSuj+vwUkRYXnVP6dbPdt2sOA/", + "dtype": "f8" + } + }, + { + "mode": "lines", + "name": "Fit", + "type": "scatter", + "x": { + "bdata": "mpmZmZmZub9zsYwmTxa5v0zJf7MEk7i/JeFyQLoPuL/++GXNb4y3v9cQWVolCbe/sChM59qFtr+JQD90kAK2v2JYMgFGf7W/O3Aljvv7tL8UiBgbsXi0v+2fC6hm9bO/xrf+NBxys7+fz/HB0e6yv3jn5E6Ha7K/Uf/X2zzosb8qF8to8mSxvwMvvvWn4bC/3Eaxgl1esL9qvUgfJravvxztLjmRr66/zhwVU/yorb+ATPtsZ6KsvzJ84YbSm6u/5KvHoD2Vqr+W2626qI6pv0gLlNQTiKi/+jp67n6Bp7+samAI6nqmv16aRiJVdKW/EMosPMBtpL/C+RJWK2ejv3Qp+W+WYKK/JlnfiQFaob/YiMWjbFOgvxRxV3uvmZ6/eNAjr4WMnL/cL/DiW3+av0CPvBYycpi/pO6ISghllr8ITlV+3leUv2ytIbK0SpK/0Azu5Yo9kL9o2HQzwmCMvzCXDZtuRoi/+FWmAhsshL/AFD9qxxGAvxCnr6Pn7ne/QEnC5YB0b7/AiEoIZRZevwAIfNe94SU/YMUUP2rHYT8g5VhQXBhxP5BnJ4EDTXk/APX6WNXAgD84NmLxKNuEP3B3yYl89Yg/qLgwItAPjT/w/EvdEZWQP4ydf6k7opI/KD6zdWWvlD/E3uZBj7yWP2B/Gg65yZg/+B9O2uLWmj+YwIGmDOScPzhhtXI28Z4/6IB0HzB/oD80UY4FxYWhP4QhqOtZjKI/1PHB0e6Soz8gwtu3g5mkP2yS9Z0YoKU/vGIPhK2mpj8MMylqQq2nP1gDQ1DXs6g/pNNcNmy6qT/0o3YcAcGqP0R0kAKWx6s/kESq6CrOrD/cFMTOv9StPyzl3bRU264/fLX3munhrz/kwohAP3SwPwqrlbOJ97A/MpOiJtR6sT9ae6+ZHv6xP4BjvAxpgbI/pkvJf7MEsz/OM9by/YezP/Yb42VIC7Q/HATw2JKOtD9C7PxL3RG1P2rUCb8nlbU/krwWMnIYtj+4pCOlvJu2P96MMBgHH7c/BnU9i1Gitz8uXUr+myW4P1RFV3HmqLg/ei1k5DAsuT+iFXFXe6+5P8r9fcrFMro/8OWKPRC2uj8WzpewWjm7Pz62pCOlvLs/Zp6xlu8/vD+Mhr4JOsO8P7Juy3yERr0/2lbY787JvT8CP+ViGU2+Pygn8tVj0L4/Tg//SK5Tvz929wu8+Na/P89vjJchLcA/4uMS0cZuwD/1V5kKbLDAPwnMH0QR8sA/HUCmfbYzwT8wtCy3W3XBP0Mos/AAt8E/V5w5Kqb4wT9rEMBjSzrCP36ERp3we8I/kfjM1pW9wj+lbFMQO//CP7ng2UngQMM/y1Rgg4WCwz/fyOa8KsTDP/M8bfbPBcQ/B7HzL3VHxD8bJXppGonEPy2ZAKO/ysQ/QQ2H3GQMxT9VgQ0WCk7FP2f1k0+vj8U/e2kaiVTRxT+P3aDC+RLGP6NRJ/yeVMY/t8WtNUSWxj/JOTRv6dfGP92tuqiOGcc/8SFB4jNbxz8Dlscb2ZzHPxcKTlV+3sc/K37UjiMgyD8/8lrIyGHIP1Nm4QFuo8g/ZdpnOxPlyD95Tu50uCbJP43CdK5daMk/nzb75wKqyT+zqoEhqOvJP8ceCFtNLco/25KOlPJuyj/vBhXOl7DKPwF7mwc98so/Fe8hQeIzyz8pY6h6h3XLPzvXLrQst8s/T0u17dH4yz9jvzsndzrMP3czwmAcfMw/i6dImsG9zD+dG8/TZv/MP7GPVQ0MQc0/xQPcRrGCzT/Xd2KAVsTNP+vr6Ln7Bc4//19v86BHzj8T1PUsRonOPydIfGbrys4/ObwCoJAMzz9NMInZNU7PP2GkDxPbj88/cxiWTIDRzz9ERg7DkgnQP06A0V9lKtA/WLqU/DdL0D9i9FeZCmzQP2ouGzbdjNA/dGje0q+t0D9+oqFvgs7QP4jcZAxV79A/khYoqScQ0T+cUOtF+jDRP6aKruLMUdE/sMRxf59y0T+4/jQccpPRP8I4+LhEtNE/zHK7VRfV0T/WrH7y6fXRP+DmQY+8FtI/6iAFLI830j/0WsjIYVjSP/6Ui2U0edI/Bs9OAgea0j8QCRKf2brSPxpD1Tus29I/JH2Y2H780j8ut1t1UR3TPzjxHhIkPtM/QivirvZe0z9MZaVLyX/TP1SfaOiboNM/XtkrhW7B0z9oE+8hQeLTP3JNsr4TA9Q/fId1W+Yj1D+GwTj4uETUP5D7+5SLZdQ/mjW/MV6G1D+ib4LOMKfUP6ypRWsDyNQ/tuMICNbo1D/AHcykqAnVP8pXj0F7KtU/1JFS3k1L1T/eyxV7IGzVP+gF2RfzjNU/8D+ctMWt1T/6eV9RmM7VPwS0Iu5q79U/Du7lij0Q1j8YKKknEDHWPyJibMTiUdY/LJwvYbVy1j821vL9h5PWPz4QtppatNY/SEp5Ny3V1j9ShDzU//XWP1y+/3DSFtc/ZvjCDaU31z9wMoaqd1jXP3psSUdKedc/hKYM5Bya1z+M4M+A77rXP5Yakx3C29c/oFRWupT81z+qjhlXZx3YP7TI3PM5Ptg/vgKgkAxf2D/IPGMt33/YP9J2JsqxoNg/2rDpZoTB2D/k6qwDV+LYP+4kcKApA9k/+F4zPfwj2T8CmfbZzkTZPwzTuXahZdk/Fg19E3SG2T8gR0CwRqfZPyqBA00ZyNk/MrvG6evo2T889YmGvgnaP0YvTSORKto/UGkQwGNL2j9ao9NcNmzaP2TdlvkIjdo/bhdaltut2j94UR0zrs7aP4KL4M+A79o/isWjbFMQ2z+U/2YJJjHbP545Kqb4Uds/qHPtQsty2z+yrbDfnZPbP7znc3xwtNs/xiE3GUPV2z/OW/q1FfbbP9iVvVLoFtw/4s+A77o33D/sCUSMjVjcP/ZDBylgedw/AH7KxTKa3D8KuI1iBbvcPxTyUP/X29w/HiwUnKr83D8mZtc4fR3dPzCgmtVPPt0/OtpdciJf3T9EFCEP9X/dP05O5KvHoN0/WIinSJrB3T9iwmrlbOLdP2r8LYI/A94/dDbxHhIk3j9+cLS75ETeP4iqd1i3Zd4/kuQ69YmG3j+cHv6RXKfeP6ZYwS4vyN4/sJKEywHp3j+6zEdo1AnfP8IGCwWnKt8/zEDOoXlL3z/WepE+TGzfP+C0VNsejd8/6u4XePGt3z/0KNsUxM7fP/5inrGW798/g84wpzQI4D+Ia5L1nRjgP40I9EMHKeA/kqVVknA54D+XQrfg2UngP5zfGC9DWuA/oXx6faxq4D+mGdzLFXvgP6u2PRp/i+A/r1OfaOib4D+08AC3UazgP7mNYgW7vOA/virEUyTN4D/DxyWijd3gP8hkh/D27eA/zQHpPmD+4D/RnkqNyQ7hP9Y7rNsyH+E/29gNKpwv4T/gdW94BUDhP+US0cZuUOE/6q8yFdhg4T/vTJRjQXHhP/Tp9bGqgeE/+YZXABSS4T/9I7lOfaLhPwLBGp3msuE/B15860/D4T8M+905udPhPxGYP4gi5OE/FjWh1ov04T8b0gIl9QTiPx9vZHNeFeI/JAzGwccl4j8pqScQMTbiPy5GiV6aRuI/M+PqrANX4j84gEz7bGfiPz0drknWd+I/QroPmD+I4j9HV3HmqJjiP0v00jQSqeI/UJE0g3u54j9VLpbR5MniP1rL9x9O2uI/X2hZbrfq4j9kBbu8IPviP2miHAuKC+M/bT9+WfMb4z9y3N+nXCzjP3d5QfbFPOM/fBajRC9N4z+BswSTmF3jP4ZQZuEBbuM/i+3HL2t+4z+Qiil+1I7jP5Uni8w9n+M/mcTsGqev4z+eYU5pEMDjP6P+r7d50OM/qJsRBuPg4z+tOHNUTPHjP7LV1KK1AeQ/t3I28R4S5D+7D5g/iCLkP8Cs+Y3xMuQ/xUlb3FpD5D/K5rwqxFPkP8+DHnktZOQ/1CCAx5Z05D/ZveEVAIXkP95aQ2RpleQ/4/ekstKl5D/nlAYBPLbkP+wxaE+lxuQ/8c7JnQ7X5D/2ayvsd+fkP/sIjTrh9+Q/AKbuiEoI5T8FQ1DXsxjlPwngsSUdKeU/Dn0TdIY55T8TGnXC70nlPxi31hBZWuU/HVQ4X8Jq5T8i8ZmtK3vlPyeO+/uUi+U/LCtdSv6b5T8xyL6YZ6zlPzVlIOfQvOU/OgKCNTrN5T8/n+ODo93lP0Q8RdIM7uU/SdmmIHb+5T9Odghv3w7mP1MTar1IH+Y/V7DLC7Iv5j9cTS1aG0DmP2HqjqiEUOY/Zofw9u1g5j9rJFJFV3HmP3DBs5PAgeY/dV4V4imS5j96+3Ywk6LmP3+Y2H78suY/gzU6zWXD5j+I0psbz9PmP41v/Wk45OY/kgxfuKH05j+XqcAGCwXnP5xGIlV0Fec/oeODo90l5z+lgOXxRjbnP6odR0CwRuc/r7qojhlX5z+0VwrdgmfnP7n0ayvsd+c/vpHNeVWI5z/DLi/IvpjnP8jLkBYoqec/zWjyZJG55z/RBVSz+snnP9aitQFk2uc/2z8XUM3q5z/g3HieNvvnP+V52uyfC+g/6hY8Owkc6D/vs52JcizoP/NQ/9fbPOg/+O1gJkVN6D/9isJ0rl3oPwIoJMMXbug/B8WFEYF+6D8MYudf6o7oPxH/SK5Tn+g/Fpyq/Lyv6D8bOQxLJsDoPx/WbZmP0Og/JHPP5/jg6D8pEDE2YvHoPy6tkoTLAek/M0r00jQS6T8451UhniLpPz2Et28HM+k/QSEZvnBD6T9GvnoM2lPpP0tb3FpDZOk/UPg9qax06T9VlZ/3FYXpP1oyAUZ/lek/X89ilOil6T9kbMTiUbbpP2kJJjG7xuk/baaHfyTX6T9yQ+nNjefpP3fgShz39+k/fH2samAI6j+BGg65yRjqP4a3bwczKeo/i1TRVZw56j+P8TKkBUrqP5SOlPJuWuo/mSv2QNhq6j+eyFePQXvqP6Nlud2qi+o/qAIbLBSc6j+tn3x6fazqP7I83sjmvOo/t9k/F1DN6j+7dqFlud3qP8ATA7Qi7uo/xbBkAoz+6j/KTcZQ9Q7rP8/qJ59eH+s/1IeJ7ccv6z/ZJOs7MUDrP93BTIqaUOs/4l6u2ANh6z/n+w8nbXHrP+yYcXXWges/8TXTwz+S6z/20jQSqaLrP/tvlmASs+s/AA34rnvD6z8Fqln95NPrPwlHu0tO5Os/DuQcmrf06z8TgX7oIAXsPxge4DaKFew/HbtBhfMl7D8iWKPTXDbsPyf1BCLGRuw/K5JmcC9X7D8wL8i+mGfsPzXMKQ0CeOw/OmmLW2uI7D8/Bu2p1JjsP0SjTvg9qew/SUCwRqe57D9O3RGVEMrsP1N6c+N52uw/VxfVMePq7D9dtDaATPvsP2FRmM61C+0/Ze75HB8c7T9ri1triCztP28ovbnxPO0/dcUeCFtN7T95YoBWxF3tP3//4aQtbu0/g5xD85Z+7T+JOaVBAI/tP43WBpBpn+0/kXNo3tKv7T+XEMosPMDtP5utK3ul0O0/oUqNyQ7h7T+l5+4XePHtP6uEUGbhAe4/ryGytEoS7j+1vhMDtCLuP7lbdVEdM+4/vfjWn4ZD7j/DlTju71PuP8cymjxZZO4/zc/7isJ07j/RbF3ZK4XuP9cJvyeVle4/26Ygdv6l7j/fQ4LEZ7buP+Xg4xLRxu4/6X1FYTrX7j/vGqevo+fuP/O3CP4M+O4/+VRqTHYI7z/98cua3xjvPwGPLelIKe8/ByyPN7I57z8LyfCFG0rvPxFmUtSEWu8/FQO0Iu5q7z8boBVxV3vvPx89d7/Ai+8/JdrYDSqc7z8pdzpck6zvPy0UnKr8vO8/M7H9+GXN7z83Tl9Hz93vPz3rwJU47u8/QYgi5KH+7z+jEkKZhQfwPyXhckC6D/A/qK+j5+4X8D8qftSOIyDwP6xMBTZYKPA/Lxs23Yww8D+x6WaEwTjwPzS4lyv2QPA/tobI0ipJ8D85Vfl5X1HwP7sjKiGUWfA/PfJayMhh8D/AwItv/WnwP0KPvBYycvA/xV3tvWZ68D9HLB5lm4LwP8r6TgzQivA/TMl/swST8D/Ol7BaOZvwP1Fm4QFuo/A/0zQSqaKr8D9WA0NQ17PwP9jRc/cLvPA/W6CknkDE8D/dbtVFdczwP2A9Bu2p1PA/4gs3lN7c8D9k2mc7E+XwP+eomOJH7fA/aXfJiXz18D/sRfowsf3wP24UK9jlBfE/8eJbfxoO8T9zsYwmTxbxP/Z/vc2DHvE/eE7udLgm8T/6HB8c7S7xP33rT8MhN/E//7mAalY/8T+CiLERi0fxPwRX4ri/T/E/hyUTYPRX8T8J9EMHKWDxP4vCdK5daPE/DpGlVZJw8T+QX9b8xnjxPxMuB6T7gPE/lfw3SzCJ8T8Yy2jyZJHxP5qZmZmZmfE/", + "dtype": "f8" + }, + "y": { + "bdata": "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", + "dtype": "f8" + } + } + ], + "layout": { + "height": 450, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Chebyshev2Basis Fit (extrapolation outside [0, 1])" + }, + "width": 900, + "xaxis": { + "title": { + "text": "time t" + } + }, + "yaxis": { + "title": { + "text": "value" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sequence = {float(xi): float(yi) for xi, yi in zip(x_cheb, y)}\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.05)\n", + "fit = gtsam.FitBasisChebyshev2Basis(sequence, model, N)\n", + "params = fit.parameters()\n", + "\n", + "t_dense = np.linspace(-0.1, 1.1, 600)\n", + "x_dense = 2.0 * t_dense - 1.0\n", + "W = gtsam.Chebyshev2Basis.WeightMatrix(len(params), x_dense)\n", + "y_fit = W @ params\n", + "\n", + "plot_fit(t, y, t_dense, y_fit, \"Chebyshev2Basis Fit (extrapolation outside [0, 1])\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "4d2ebb77", + "metadata": {}, + "source": [ + "\n", + "## Chebyshev2 (Pseudo-Spectral) Fit\n", + "\n", + "This variant treats the parameters as function values at Chebyshev points.\n", + "The steps here are slightly different conceptually:\n", + "\n", + "1. Fit values at Chebyshev points with `FitBasisChebyshev2`.\n", + "2. Evaluate by barycentric interpolation using `Chebyshev2.WeightMatrix`.\n", + "3. Plot the interpolation nodes alongside the fitted curve.\n", + "\n", + "If you don't need plots, copy the fit + evaluation and skip the marker trace.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "37db92b8", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "blue", + "symbol": "diamond" + }, + "mode": "markers", + "name": "Samples", + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAACWexphuaehP5Z7GmG5p7E/YbmnEZZ7uj+WexphuafBP3waYbmnEcY/YbmnEZZ7yj9GWO5phOXOP5Z7GmG5p9E/Ccs9jbDc0z98GmG5pxHWP+5phOWeRtg/YbmnEZZ72j/UCMs9jbDcP0ZY7mmE5d4/3dMIyz2N4D+WexphuafhP08jLPc0wuI/Ccs9jbDc4z/Cck8jLPfkP3waYbmnEeY/NcJyTyMs5z/uaYTlnkboP6gRlnsaYek/YbmnEZZ76j8aYbmnEZbrP9QIyz2NsOw/jbDc0wjL7T9GWO5phOXuPwAAAAAAAPA/", + "dtype": "f8" + }, + "y": { + "bdata": "bNnZANMs1D87DzzjZyvYP1/q4t00Q+E/W93Nm4hK4j/9htzjk4/aPwJ3IkOy2No/ouTpv9LF3T8nN6aaernbPzkayBL+fd0/sExPovXr3D+auSyw0JniP34j9yWkmOM/zzzfso7M4j/2gpF4p3fjPxDkkfgqRd8/RmY1DkHH0T/om8bU13HCPz0e0IwxVsO/cHLYTHsD078FowRs9/rhvwUauYQeqee/KYBEpkqo67/AIDqigRnpv6quPF8R++i/Cu+DUhyR5L82oNlO6lfbv4w4MoeOl8G/lPMgx2DSuj+vwUkRYXnVP6dbPdt2sOA/", + "dtype": "f8" + } + }, + { + "mode": "lines", + "name": "Fit", + "type": "scatter", + "x": { + "bdata": "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", + "dtype": "f8" + }, + "y": { + "bdata": "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", + "dtype": "f8" + } + }, + { + "marker": { + "color": "red" + }, + "mode": "markers", + "name": "Chebyshev2 points", + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAABALt3am+CePxy/wnRB8r0//v//////zz8dI31geXHaP3JuwU9Dx+I/AAAAAAAA6D8cqGfRt0HsP44WKSH7CO8/AAAAAAAA8D8=", + "dtype": "f8" + }, + "y": { + "bdata": "R4qQtgF40z+e8Y0tARnaP3HiFl/5YOA/7SJUgXv72j+QTCgsC7fjP3bOVf1x0L2/2l7H+y0Q678M/CXu68TQv1F0nf9Cq9c/QC12MnCb4D8=", + "dtype": "f8" + } + } + ], + "layout": { + "height": 450, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Chebyshev2 Pseudo-Spectral Fit (extrapolation outside [0, 1])" + }, + "width": 900, + "xaxis": { + "title": { + "text": "time t" + } + }, + "yaxis": { + "title": { + "text": "value" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sequence = {float(xi): float(yi) for xi, yi in zip(x_cheb, y)}\n", + "model = gtsam.noiseModel.Isotropic.Sigma(1, 0.05)\n", + "fit = gtsam.FitBasisChebyshev2(sequence, model, N)\n", + "params = fit.parameters()\n", + "\n", + "t_dense = np.linspace(-0.1, 1.1, 600)\n", + "x_dense = 2.0 * t_dense - 1.0\n", + "W = gtsam.Chebyshev2.WeightMatrix(len(params), x_dense)\n", + "y_fit = W @ params\n", + "\n", + "cheb_points = gtsam.Chebyshev2.Points(N)\n", + "t_cheb = 0.5 * (cheb_points + 1.0)\n", + "y_cheb = params\n", + "markers = go.Scatter(x=t_cheb, y=y_cheb, mode=\"markers\", name=\"Chebyshev2 points\", marker=dict(color=\"red\"))\n", + "\n", + "plot_fit(t, y, t_dense, y_fit, \"Chebyshev2 Pseudo-Spectral Fit (extrapolation outside [0, 1])\", extra=markers)\n" + ] + }, + { + "cell_type": "markdown", + "id": "bf516bde", + "metadata": {}, + "source": [ + "The Chebyshev points above *are* the parameterization. They values at those points are moved up and down to make the blue points fit the polynomial as closely as possible. Because for every $N$ points we can exactly fit an $n=N-1$ degree polynomial, the values at these Chebyshev points *are* a parameterization of the polynomial.\n", + "\n", + "Chebyshev points are fixed nodes that cluster near the interval ends; this improves interpolation stability and reduces endpoint oscillations compared to equally spaced nodes (mitigating the Runge phenomenon)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python/gtsam/examples/Gal3ImuASVExample.ipynb b/python/gtsam/examples/Gal3ImuASVExample.ipynb index d06aa5548a..51bd24ff4f 100644 --- a/python/gtsam/examples/Gal3ImuASVExample.ipynb +++ b/python/gtsam/examples/Gal3ImuASVExample.ipynb @@ -29,7 +29,13 @@ ] }, "source": [ - "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\nAtlanta, Georgia 30332-0415\nAll Rights Reserved\n\nAuthors: Frank Dellaert, et al. (see THANKS for the full author list)\n\nSee LICENSE for the license information" + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" ] }, { @@ -1239,7 +1245,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -1259,7 +1265,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -1277,7 +1283,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -1314,7 +1320,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -1334,7 +1340,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -1352,7 +1358,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -1389,7 +1395,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -1409,7 +1415,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -1427,7 +1433,7 @@ }, "xaxis": "x3", "y": { - "bdata": "Dy/uqAx5wj/Z8Od1CHrIPzXQwspFYM4/VzMMK/Yb0j/FYLCFofvUPx3dqfnsytc/d9Y6xPeV2j8t2YQ0GFrdP5MG+diDCeA/ZPdZRSVj4T8GwaCMXbziPxPJoeX4EuQ/tcSXwstl5T/8spNOw7rmP6fBk7eeD+g/KoY8ayRi6T9Gscw1lrXqP087NfnWCew/11Cz/YJc7T9/rkD/f63uP2n84tD7/u8/uy1Vc0Wn8D/ZXv+s8EzxP8AGBz618fE/iq7gpFiU8j99qTYzBDPzP7n7IZ+BzPM/mSvhRNFf9D94x9sdZ+v0PySrqHv0bfU/vFrqi6Hm9T+FrDrFclT2P5BVIjiftvY/gmfe/VQM9z8mCmt1DlX3P++wZfyXkPc/zj7lKMG+9z/tlVwVBd/3Py+ZMyLa8fc/4aVZHgP49z8xN5J1sfD3PwGqOhh53fc/PZIOJ9DA9z9QIpS0G5z3P9sIMSFhcfc/yEFk0NhD9z9iELE7uxX3P0D4+O/y5fY/WCeU4Be29j899E6NQYb2P7APlAYwU/Y/8Xo/dT4b9j+KvaXAGt71P8RynidBmvU/m5fPMUZM9T/SmM3UrvT0PwAW0rc4lPQ/McVVQMYm9D+h7Bx8NazzP0qbx39AJfM/2ROdSxmQ8j8GEYwTgurxPxN0WU+jNfE/eY44JG1y8D8Yy0XIkTrvP3vUiG4McO0/J+zUrt6J6z8ISWqbUoXpP1iZ3gheZOc/BOH/NvAs5T8LT41kyOHiPydUEfkugeA/XCwDFhEj3D+YYKYX1TLXP9PkXhcxK9I/qB91zWcvyj/2uoUQwgvAP3GIk7uFwqc/k0Fw/m5yoL+qD8h9uwS8v9rU1Dj5q8e/ZFeAubOS0L/mfK1nCSzVvwqE0JGfl9m/+ONf82jY3b8vZTX0WvXgv/Xiqecw4+K/BPKcHX+05L9knpYEomvmv/y1z7TJBei/0Ne5c5yA6b9cKz+yf+Dqv85SHAxXJOy/TNEQO61K7b/Vf2oEcVXuv9I25wPHRu+/74MdKvoO8L/BDuEmpm3wv1PhZm6SwfC/oiOb2+MK8b+hyppUyknxv+yhlDUKJ6e/uvcwgyn1rL+Lyj4z4eywv1BtYIi69bK/q5Uq1z6stL/MCHLIABe2vxywc96PP7e/3X8s05BFuL8SJ8hWQza5vzTn7lgHHbq/sEvzkMkNu7+p3Paf6hq8v9ZfOpMFTL2/KjAJ7Meovr/cFgqK5SHAvxW0tZ7sC8G/I4J4gEkOwr/RJ6I9rSvDv2XXxWlCYsS/p1ibrVSsxb8Rbz5Q4wfHv/zVKV14eMi/sus0WUX5yb9njRErEITLvzYzKETWGc2/5tlGpHy1zr8ub3cuZCjQv2mDv7MK9NC/vZEBQwa90b/hmD05N4HSv701jNn+PtO/IKOBHvH307+Aq2mb7KrUv7HuKtfKVtW/VcPhqwn91b9Tykrc+Z3Wv8xp1ZPRONe/yRhSA2rO17+gRuiLyWDYv/uJnncG79i/EwdwTZ542b9ro93dfQHav3jgmfuZiNq/unsxTcMM2792Ya25ro/bv/QSK68hE9y/ik4BX+WV3L8tymri/Bbdv/VvW/2nmd2/hhntGVEc3r/vHB6c6J3ev+qUIEpFH9+/x1gJtf+f378fd3JFiA/gvyUd9x0lTuC/7LgDXB2M4L9a9N6Xqcjgv11YBK3JAuG/9HvaOOs64b9VLg7alXDhv9GRHukio+G/WnzygYnS4b/oVkwT+v3hv3Ldj+sWJeK/bHTMel9I4r80mCA4Kmfiv26nOH35gOK/Jj/FIOuV4r9EFnEuFqXiv/ogtnGQr+K/m+MJedi24r/j52xKWrviv5QUSaQGveK/73rsW0694r9wng49+LzivyzKcd+7ueK/U4UptFG14r9ythuUWbDivxwc3h4/qeK/WWmLtvGf4r//ChxZG5Xivy9jI1priOK/tI+aXBF04r9IKXQf8ljiv9ISlJTdN+K/YCUYmC8L4r82CpWVN9HhvwFHeXASi+G/ixQvSiM34b+XEdOVLNDgv52nyvDqV+C/I0dqtmCg37+uhkR2SWLev622Mr4Y+Ny/jJD16KJm279lYVdR2KfZvympPhfRtte/jtGOORWa1b/JWjUe4lXTv7tS0NXs3NC/z+TQbq4O4r+y5L1h7qjgv/dkYSWtV96/V4gryocw279jaI/PreXXv9rVRToUeNS/GtBHgijf0L+8Mn3E8UjKv5ImiSHNocK/4UiHOYRTtb8MjeU9742Tv6WgUfOGwac/02LaRfUJvT9F/wAPjVHHP1s/fjWrHtA/vk/LYCWb1D93FA4ivyvZP4SWshUbw90/Hi4VNloq4T/MLhceaHXjP0djlhi6vuU/GJYvA4sj6j/EX7i2kE/sP8IUuK/Mb+4/r64h++M/8D87I/WVu0TxP2VJ2pg/RPI/W0F7WxA88z++WxR0TS70P7mkErd2HPU/j1vI9v0D9j/9sWpNvOP2P92EgtZtwPc/fuPdsKWX+D/QVrOw/2b5P28YxRUFMvo/zmVFamf4+j/iCL+s3rf7P0ULlYa+cPw/WNyQQNol/T/gQE9RCtX9P3wgwie4fP4/AvM7jpch/z/wTCeKjcL/P0LITegoLwBAhp+CVHx7AED0NzbYGMcAQP8AS3hPEQFAfM19GSRaAUA1JVYlkaMBQDpwcbHH7AFAAAGjfDI1AkDaNLBCK34CQCrhSVfFxwJAiSR572MRA0CSoO3XIlsDQGi4cpDapQNAjKVQDdrwA0C5t6wckjsEQLwwjAIRhwRA+Z7cQcTSBECHQqPPFh4FQCZFNhcFaQVAiM9IlHezBUDKnugnufwFQNkBC8Y7RAZAOygMmheKBkBI2OXE1M0GQNhPHZIBDwdA2PzOWq9NB0BWEkNa8okHQIEkX77GwwdAaHHCxyX7B0DI/tImQzAIQANc/NxfYwhArgrI54GUCECt28T/V8MIQGkNxQI18AhAF1iRoiobCUAAlEg2xUMJQFrjxmIoaglA2I5my5eOCUB1nYMsJbEJQPrsoek60QlAGv0LQWPvCUA33eB4xgsKQDhEwrXSJQpARa+OQaA9CkCUbJYJiVMKQPG+xPpgZwpAGw1jiUR4CkBtiRDHjIYKQC/eSYqUkgpAMi1IxfKaCkCqLCDUBKAKQOdOQzUzogpAPpB+e8ugCkDuuIp0cZsKQGf84cbDkgpAIJPcvvyGCkArw5qHEVUHQJ0COlvHQAdAm6NcSjkpB0CFDuPaSw0HQAqBxXAT7QZAj7S4j1vJBkCeCx90BaIGQFo0J28IdgZAfZpxyUFGBkDBPG7NgBMGQOyfZ1MV3AVAEPisBragBUC8Uo4hTGIFQFDkocItIAVAdqlPTOLZBEAblJtSdpAEQPgWU/eMRARArnLyoTb0A0Db96HBtKADQB0daxkySwNAm80VF2LyAkBrT4jK1ZYCQOdN+ZXdOQJAGSVF1XrbAUCKqFE7t3oBQCZto6Q7GQFAWXM75jq4AEAdyRVyz1UAQEbWxoHN5v8/+kcCdRcl/z93qEmp6mT+P+f5LJ0Fpv0/FAZCDoHr/D8vbphHkjb8P7nP84wjgvs/7GhDHirR+j+p8B+QViX6P7HzDEx1evk/dZBum1jQ+D9cJOM94ij4P8QJPYMig/c/WtYh3ZPb9j/T6jsygzT2P2kI+gDkj/U/ThSXYzvo9D+82CXA2j/0PyZzEj8smfM/YWS7rdrx8j9RZCtJH0nyP/pBYoBcofE/KwSRAS378D+4/zPQoVHwPzgkrYzZTe8/mjrQJOb47T8kiXVRgprsP8H7hkTsL+s/E/81/4i76T8+5+RwvDroP+zYtbMCpeY/eQC3a8b+5D9cXvXyJ0zjP1d9FgKlguE/9DcT2YlK3z9LiIzxcXHbPw3OvE8nc9c/4y6YZTxJ0z+xkP3Ax/fNPwPRSV3mIcU/mP5EkIzTtz/zmsDk//aSP6TAq+BOwK2/5+Kia8ubwb+n3cyQKynMv59VN5AMhNO/Dcb8tJoZ2b/v4ucpV9rev/ONECl5XOK/oCaTatFT5b83t/yDvlXov75KToASXOu/XgicTl5f7r/htUhVqK7wv3H30JrPKfK/FJpFKqmd879+qeikmwf1v7hRTUo8aPa/QDoP38O8979r8FAQ0wL5vwYcqOVLOvq/l1EKLtNh+7+xvDf/jXf8v8cASrGpDP+/Re8kABHU/7/K6Essg0MAwJRpo72PkgDA+iUFm/nWAMCYYHH82RABwB0giAFuQAHAu4HxEsxlAcAfr+5lG4EBwBteI3xJ5QHAE6Rrc+ztAcBSt38R4e0BwANukQmg5QHAqNLpu8PVAcDXKq8y974BwFtdYvfIoQHAvttmPqd+AcBh8q81WVYBwMz7fl2rKQHApNm0tcz4AMC3F/ste8QAwBUlulyLjQDAb9vz6mRUAMCVHuB6ZBkAwPi0iafLuv+/ckPF7kJC/79aX+xu3sj+v8zu09ATUP6/fHSuT03Z/b85fjP0/mP9v1FDDCWD8Py/Dn8HUPV//L9m23RbcBL8v9R0kzmWpvu//h0LgzE9+79L2mK6Idf6vzdJQyLncfq/n5xzTRkO+r9ezynE3Kz5v5KzHUIaTfm/U32KzbPt+L+g7ciUz4/4v2qPDtsZNPi/Ng/A0onX97/Hd0wbo3v3vyeM40jTIfe/WSVrF4/H9r8qOE4ZRWz2vyuK25q8EPa/9Zq0Ce6z9b9gWxWClVL1v+jtwV3O7fS/JVhTrLeG9L+7DjMTBhn0v/BlYmqTpfO/RLbrIdot878RHdw9NrDyv+QV9m46K/K/0hmbXaig8b9QcbThnBHxvza8TeVcevC/QTTrrQq67785yUqIUHfuv3Qoy+T4J+2/ckuWKpnM67+/F/IteWnqv7K+UJ+r/+i/jk09qFeM578vmsMpxRTmv4+ZH7n7neS/RQqW7bwj47/mENfVS6rhv9RPz1igNuC/F312Ii+R3b8s2qGhTsDavzOXzIVgA9i/q8gB6gBh1b84YQ2Zo9DSv+MjO/olW9C/uHbSJMoRzL+fKTmmfanHvxIfA+zVgMO/q9E9RbtHv7/7VCWLhRy4v/ad97/sWLG/6XPyoSsYpr+F110yoA6Vv32xhydmnE4/s1/X67m9lT//IWZH8YikPxZAJaUdta0/nDlGdvExsz/qiDTxrRG3P4JfeHLzdro/G8f9GMXBvT8WYo9dMmLAPyXoazYZucE/1VGdSscywz805HaODfLEP8fqoKtE9MY/4CCmRtBRyT/adlR6H0XMP2xsa1rhvs8/7isLE1bW0T9Qq+UQ1jXUP8+Itp8K+NY/7dxkd3MO2j+SgcwQz4HdPz4nJFWSr+A/ADlFhGUR3j9ep2VtEkvhP7p/39VcvOM/oUdbZjhV5j8jRGH8DQvpP1xbuQK03es/TBEBUCnJ7j94MzfdTuHwP8VgyP9KYPI/325srk3h8z+XQAm9aF71P1d+G/z4z/Y/1bzUFweb+j/Z3hZdWsr8P2yO5a8AJf8/9zWkIW7T/z8/VL12ADMAQAUyrLJGcABATzGbjVWiAECnT0R6JckAQF/pKA285QBAeyR1Y1j6AED1d0s8ZQcBQHmEPDuLDQFAFht8G5APAUDVOLcudA4BQPWCop8qCwFAeDXFhZcHAUDs2mMMfgUBQJs7yPjJBQFAYDasUXIJAUATxJmKUBIBQEKu3ODVIAFA4EBYIhA1AUAO6VNoNE8BQI6KUTZKbwFAZFGN5jOVAUABmNVQt8ABQDzWj9SP8QFATLMAdWknAkAqd2P4wWECQGEck5ftnwJAw223yVHhAkC48U8WTSUDQMYQwQHhagNAoM+fNA+xA0DwgX8i4vYDQIyr0FxROwRAeQF1L7p8BECs31PmPboEQEkwbnMe8wRAG05OA+slBUBPA6XiylEFQMfLMg9XdgVAh4uDC8iSBUDOr7GA4aUFQPLEIXGqrwVAICuDX0ywBUD3w1CbZ6YFQPgJrZI8kgVAcqsH1F10BUAiNUk6YEwFQLfILcEBGgVAd+lgHDXeBEBN6QOvw5kEQCzFOYWLSwRAEPzO6Pz0A0ASE0//b5cDQCoymoc5MgNA2yWkeO7FAkBiUOIrGFQCQBymF91L3QFAvIs5zQBhAUA4xB8ZEOEAQJ3XOwouXwBAWq2P19iz/z+nS3T6jKX+PwLAxc9zl/0/SrCwcBeJ/D85ZgPVtnr7P6b1JqNpcPo/a695myBt+T9PjBzqF274PwVRzlfJd/c/kEPgxvKN9j8yZydPY671PxubqSGE2vQ/SIYnG/kU9D/6/lVW6lzzP7OGpENDrvI/OetLOowK8j+yMsMSuXLxP3EsUTeF4PA/wCJOZ4BU8D/EpoMTMZ/vP6qECid8nO4/SKxTDa2V7T9oDL+5Z4jsP/TGwWJHd+s/LJ4bi55a6j8njkSy67LmPxniRXiAjeU/X6AbdqNf5D98U41GHSnjP83RksVY7eE/VGqIT/ir4D9rBV333b/eP9YI0SPwGNw/sZbi41Bo2T+j6x4ghJ3WP6k/wQC9uNM/98qOJja80D8hSwFNUj/LPwQA0kCAt8Q/aRfnw/vWuz/tSnBHGZ6rP8iDnRn60Wi/uTD+f3aHr7+Xq9hyWgC/v1zdXuEkPse/iH2Mb38Pz7+FDfk34W7Tv9eBnYo0Tde/M1Et2Mgg2786iK524d7evxzCOUsnP+G/z32UfK3/4r/mtdw5P67kv060NSANSOa/9YhXL7vL57973wnKJzjpv5Pc9zoDi+q/RURjKlPC67+nePMJeN3svww5Is0d2+2//yDe9Oq57r+ya9E2U3nvv6O1G+JADPC/orYZocRL8L/b0grEVHvwv+rJOeB6mvC/HeN7w6Sp8L/U2m0AWqnwvwk1hs7ymPC/SuxT5Bp58L86FMAZxkrwv+C9U0gbDvC/VzXFCsOG778p5LvDT+nsv9TqvuKC9Ou/NE35nt/t6r9OCEF2I9bpv/w2yZVFr+i/NH8C35B8579kOPTBpkHmv7aqvy9MAeW/7b5eDpu+478KQ6t8YH3iv9LtF6/ZQOG/P0Ug+jwM4L8WrZ+2kMXdv4HnoAa4jdu/udv4cwd02b+mSKZrgX3Xv4lpreU7r9W/BJP7dnsK1L9Yt3QUeZHSv3Poe8o2RdG/aef9Znkm0L+m8P+zGWfOv8dS2srm1cy/Gj+zImyUy78kOsOyuJjKv36+7CX/3Mm/0G1xodZayb9xjR3UkgnJv7rHtZnS3si/z6lfLfrSyL8hXGkniuHIv/vSHhXYBcm/btF/+lo5yb93AGxvJHbJv77NK/5ht8m/+pH2m074yb/ZNva1zDTKvyBnbVkrcMq/IX0lfJytyr/vld4hAe/Kv41kan5KOsu/1ybz73iWy7+V0/36lALMv5CD6pyNfcy/GO9FPUgPzb/d98iYlbbNvz80eUYvcc6//C3qQoJCz79clrkKcBbQvxgh9eFGltC/JpQziWMf0b9VUuRFB7TRv5z5edXmtNS/Y0YT7ZJb1b+Sgrc8dAzWv7uRXA4ix9a/SsfzDpKJ179FsTOAZ1PYv97zQzMlJtm/KQzjclf/2b9CUZpHkNzavy7GC7H9wNu/2V1iq1Gr3L/dYD7sw5rdv0ZCqDEXkt6/h0ReSJKT378AfXvY3E7gv1UWol3Y1+C/2th+MtNm4b+Y7B34tvrhvy2QJDJIkuK/uT6Sq7Ut479DV7wNJ8zjv3UPgQ0TbOS/9OHf4ogM5b9d2OhdO63lv4bTQOdpTOa/1JTJN2ro5r+hlgd5o4Dnv7aBJsDgE+i/+KG1gVWh6L84KWg/Qijpv9GVURWCqOm/+eUO7BYi6r/LcTJWvJTqv47gYfez/+q/mQX+iYtj679X9yko0MDrv7hwOdVuFuy/64NZ9b9k7L8/1QhnqKzsv9M0wPz77ey/hMP0w68n7b8pnIxPB1vtv5pcqLCviO2/7MDRFEyt7b+zQpOTZsrtv6gvncvJ4e2/hGB8DUXy7b8LKEuI5vvtv/SGbjpTAe6//pH2/1cD7r92mcN8RP/tv10cJhy9+O2/8O+U2VXx7b+j1uR00uXtvzzU7NDB2O2/HucwgRDM7b9lsAhM5b3tv09pnkMYre2/vMCPHguc7b9f9W6REovtv+yndEsFdu2/hKmYhhZg7b8FPGsc3kntvx3VBw19L+2/03p4zAcQ7b80ejnVuu3sv09AWY64yOy/kCjFXuOZ7L/lI76sE2Tsvz/ququXKey/Hwo262Tk67+J7842zZPrv0e14FdiOuu/eNO6vJrW6r/NqGp+bWLqv1Z6IVu24Om/afURf1BU6b9JUUskbLXov7VFREjZBui/uYYANyRM579WWCc2RYLmv6wn7PZFp+W/4rHqgYq/5L/zMS9onc3jvyEBrKhuyuK/atlx/4i64b/DDGSHS6Lgv77GFjsI+d6/pukQd1GU3L9V1Sv3uB/av4QAaFLDm9e/o5/KvwH/1L9zz0mslFLSvxkeg5peP8+/hvZHDFmtyb8QUI00zPrDv2OMhgQDbby/TVQaRaWnsL8yb2pz+UiSv/bv79grzZ4/mXQtDuaUqD9TEG4Saga5Pw3VFIqn/MI/johb/66ByT9qENTSVBLQP3gu6OtJcdM/XaFZlKnV1j/ddqTJPz/aP5vwyndqtt0/+P6qQ9+Z4D8EVHlceFjiP+9aHse5HeQ/s0bZxbTm5T+O42fl2K/nP846ykLUeuk/mPSCKAVJ6z+FfEr3shftP5tHLR2j5O4/sLG/qiFa8D/T0xSppEHxPwHKtxuSJ/I/nEJRrSsN8z+5Cy948/HzP2E5E5tt1PQ/VG1xahW09T8byKPk1JH2P/+eIO5hbPc/ZSuKr2dC+D+cvnSIERT5P3P48oRn4Pk/L9xCkZam+j9KwCI0KGb7Py9Z6qBtHvw/290RCrTO/D+sfdmxgHb9P3Jx9SrMFP4/NHw2UsCp/j/+IdUDfTX/P2yK0tSdtv8/EChKd4MWAEA6BzhtnUwAQMDO7wVjfQBAI4QNBWaoAEC4wSY3cs4AQNvJwllC8ABAz/IdnngMAUDlx8yuMCQBQKntQW9HOAFAebDaEvdHAUD5npIJWFMBQH/Mi9eXWwFAS6spJi1hAUDwp+SgImIBQL6BO+7EXwFAzqqE+AtbAUD4a/q5+FEBQB66HOrdRAFAYeichfo0AUBwb6gIoSEBQIobx2QDCQFA933pk8HsAEB8MhIX980AQHLezzuKqQBAurR4rC6BAEDl8YpEX1YAQBEJeJO6JwBAA0TX7hXp/z+6yC2zZHz/P8GvMdI9Cv8/JjoSqkGL/j9ZB0HHbwL+P1TXljFCcv0/ASNhFj7V/D+LFfJlhiv8P4PPySstePs/PZ0AMGu6+j+BG+e9j+35P0m7cjrUFPk/mfttowAz+D9E/ctklkD3P3kQl9XtP/Y/AiKMJT409T9P+Xrezhr0P1Bbw+mQ8fI/WFS2zAi88T9qzcIoWXzwPyB/ivo7WO4/KKb4Fp+e6z+xMKXTVtPoPwVInJ0W7+U/dtZySiX04j9dviDCttXfP0mfyfCnqtk/nzvo/WVd0z+6560IE/7JP7Gavrbre7o/PP9lV0AFZz9Ww46b+SC5v4A7xJR6asm/+VukHoQZ07+HqqYzHKjavzI2/epzd+C/whTtmZGL479g6f69yJTmv7kJO96xjem/CtXx/TFy7L8d7Wih7kPvvzySikRiAPG/aTX103BS8r/KVYEyWJfzvwh4JOIez/S/bjn0+O/39b9I8BN3thD3v1mV4T0OGvi/lWXF9RcT+b9NaManofr5vx4xHVdR0Pq/hysvr22U+7+SFsrugEf8v0Z8ccDR6fy/gyL+ZPV6/b+nTGN3Wvz9v1/tRknmb/6/U+QmwF/V/r8O6YbARC7/v+0P0rWefP+/+7Qo397A/79r3A+PMvr/vwQR8T9UFQDAJZn3NdUpAMAPaIuFGzkAwAYyOn3QQwDAyznsteNKAMDXaz1BuU0AwL4ATtW7SwDAmJfbevJFAMDXlXcdqjwAwFE4E+YcLgDAO+HwXGQbAMDcewYUhwUAwGsKw6h+1v+/A/Dy+YyZ/7/Vcd4PJFb/vxRgcvXAC/+/elQvMBW3/r9z7nVZnFn+v6GWWjwM9f2/f/uJiVOE/b9Yp2cDXwj9v5BuZZALg/y/0MMI5WLy+7/W82FXm1T7v1QWSV2jq/q/uJmaCbP4+b90TU3Q7Tb5v1Q0heRYaPi/o6Zse/CO978VRl9phab2vzXPKmZOrvW/7uj9l6eo9L8SSpFZtJXzv1aVqNCdcfK/+3VncgM/8b/BPBX+EAHwv2EgTe4NZe2/6Oezrt2q6r9qAoE829rnv6kpPcaD9OS/7tdbrKz34b/8gWs1G93dv6UHI92xw9e/BinlW/mW0b/AWDRc1tTGv8zp9melUbW/WfQDdBQKhj9fztGgnWi6P6mmDSA7psg/oZR2OFHQ0T+rSftkfhfXPwXvDYA8Edw/vhvZGpNX4D/FuMI+O4LiPwmXI1GrheQ/hA7gkJ9c5j93w7nbmwroP5+3gtgGlOk/zQywkfL16j8l4H1kES/sPw==", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -2389,7 +2395,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -2409,7 +2415,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -2427,7 +2433,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -2464,7 +2470,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -2484,7 +2490,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -2502,7 +2508,7 @@ }, "xaxis": "x2", "y": { - "bdata": "X0tX4YT7wb/mQr40SvnBv/dif4ORxcG/1snwqIGqwb+Dl2SBk6bBv+3Bu+jEtsG/qEmBuTGQwb/7fEeH+3zBvxX+0q4zfMG/nGeIEHtFwb/eCdw+KR7Bv9cXJC88CcG/zCov9cTFwL+WUWXWrJTAv/S3CCK9dMC/mUiS1+BlwL8v0EDgcC/AvxP0ROg8DMC/Er6LfWH2v79h81XlFZK/v5qO56ThVb+/6jRWW9k9v7+sCNCSZkm/v1hASnYYLr+/F2cpp8lHv79sI3UQjZm/v2X+bf1L/7+/CkftmVxNwL+0FN2L5rLAv4fi/plhK8G/LKKkn0S2wb+8n9P8IVDCv4j0Kgk89sK/EBBz+jmtw78XKYvUpW3Ev+1kdNywNMW/N7QGwUcOxr8WAuDMJejGv15fbRpEvse/ETy8bl2QyL/Gra7FMnjJvwx9xhKoU8q/NqEvM2sWy789wMFSSOnLv54Pz92Ilcy/3xfDJG8Xzb9Qh7j4yK7Nv09hsGp/GM6/6QgIPN9qzr8R+Eg9VrbOv3z4ha13Ns+//GssxNC3z78qzHbKcBvQv//rBi/6ftC/Sn/AsJXi0L8Ds9R230DRv9NoPMjJmdG/wZkRuccV0r+g9521z4/Sv66vfng6BdO/6rP0f+ec07+DlLB1Hy7Uv6UjrLz7s9S/heuhmAdU1b+Jj6c2cefVvwL1jwdTata/CKbZyp7a1r+t3oCKH2DXv06tiTgd0de/a96nVlMs2L+8dl6IqJnYv5H3B7nQ8Ni/gBsQCwQw2b8Vw0jUQFjZv5pYjyT+j9m/fu1CL2+u2b8TKdQVYLXZvyaZVuXuytm/XUyQQ2zJ2b8Gp07YKbHZvztik2Qap9m/HnwMZYmI2b+hwdoDFFbZvzwhF1GDEtm/XCOkderd2L9OLRAKlJrYv1hf3QpxSti/Ilw13TAK2L8Mp/AIpL/Xv2kl20vna9e/rOhcIF8Q179Nko4LXsfWv401STJKeNa/q/6HFyIk1r+kfUXC7uHVvwUsmM44nNW/mgp70N5U1b/tC695px3Vv/gbKrqi5dS/0QVS5GCw1L9FxU0cT37Uv4zkiG50ncK/LBzb5yccwr9Hd7pgw5zBv5wcEwsINcG/UuXt+NDUwL96emfWlW3Av4DNSIiMC8C/9xeCp0yav7/9GjHpFyO/v5XF5xxMur6/GSD6MBeRvr+USvgHr3G+v35Nu6qUVr6/w6eyFHpgvr/60pTrS2e+v+KX/KvtYr6/Qj4aaGVCvr9CzXVsYS2+vz7mwKYDB76/C+X6UefFvb/X9jLUQ5K9v6dxKnIdTb2/JXk2t1r1vL8r2D0ND328v+I1acbUELy/59bNQ/SJu79AMMbUe9O6v67kVnFdKLq/MCagTyBvub8IHd85waW4v/sYrDs/37e/w28C2lIYt7+5yrfN5Fm2v+0+pr8DlLW/TuqBE6LZtL/fyuE38SW0v3vm/bckcrO/GAht9ybnsr+omlgmelKyv8fLnhg3vLG/q5ImKtcjsb9oGfEuYruwv6x8cWDGRLC/jw0kwOmCr79akaUR9squv5wKuvv4C66/kXlqfWRDrb8//nDToJGsvyRaHjFKy6u/NjkDVm73qr81mUMuBg2qv4Bf2rOoMam/IackXPI6qL+j60ytrianv5YqXHyBHqa/sQKOdqfwpL8OOBgelJGjv3Km70Q58KG/1RMYflFFoL8N8yYkouWcv/ZJjt446pi/e3wfZ4uElL8EnPbVcGyPv6hNGHiIg4W/o290iiEQdr/AN8pzNiMYP242pEPZd3c/Wo9/C7xPhz+9QBPAUriRPxeTczIRdZc/gw8iDIyVnD9fEtbxgfugP8sU7KwAQKM/mid+Gi8tpT9ojPT3ys2mP13A8GGJg6g/vJR9sjTmqT+vH2eh1yerPwldZ/ntwqw/7Vc0f+wJrj+MNm2eWiivP0sxPOAvlbA/LEDsBXB6sT+SHD3uDE6yPz+bNjXaG7M/guHnWI9utD/v3SgaBq+1Pyeb/gJF3rY/FKw1ev+euD+BsehIPEO6PyPvsWmgzLs//DFcsF89vT9AO/L8gEC/P/ho5Xn4j8A/hYvSS41twT/n6jY+vJHCP2wG5rTQnMM/xI6aYjWOxD8lmwcj5sPFP5OomZoS2sY/RPNi2Lserj+kXsF+SJiwPxoIlSgoorI/x7w4ROxjtD8Emy5cBuG1P6iCLXnN47c/9Mcq/9qZuT972frxbgu7P5CEGirKObw/Wwh2J6D1vT9kzWQThV6/Pw4/f3F7OsA/AiEg9xYOwT8h2uilgLPBP2bM3HefK8I/QuwfQUTxwj8vPic414TDPxPPDoXH5sM/ZmIFaRUVxD80/HdXOYXEPyRdkYhhscQ/CwiGmaj9xD+6UYM3//TEP631YaY5xMQ/EfhJUrNvxD9zX0mgjmzEP4sOdx4WO8Q/+sekHtrnwz+3jVEhA+7DP/fJJRN4xcM/AA0KNKd6wz+UwEphPIvDP1rR6hh9bMM/+PUM9HQqwz+Nsk1ga8XCP0UjFbqBrcI/DgQSN3J0wj9JEK9zhxfCP45dBEvYDsI/idDvlrDewT/V+qagRJXBPx73ofl+N8E/ba49KZ0gwT/LZSxsHfTAP/qA3oM/tMA/ZsdtmYS8wD/9ZK72iqrAPwWlEK6ih8A/zcSG+BKwwD+CO4eCPcDAP3kCu6frvcA/zYDQ6burwD/zwXQCm9TAPzHo/D8f68A/bcAJ0w7uwD9k0vT2FB7BP2SSMIZmOcE/gltcBxtCwT/ByhyaOTnBP4ASk5aRU8E/QeLDS+pZwT+4DFORt07BPxG3YvtxVcE/pPEXdCdHwT+t949e2iTBP/qO/4RECsE/7t+jPF7ewD+FKTV9FqPAPxrGQOKqW8A/OS3dULoYwD8yNQSl2ai/P27vQLKlHr8/lNIzm4OOvj8SzMZ7+gq+P1XmqINFj70/H8xIZ44VvT+5Unj7E5G8P3z++M59HLw/XMp0RjKruz+DaYewzBa7PxL5GdKvoLo/yzPKgYdAuj+7kE752KG5P/xv6reiQrk/o2w022z2uD+Z940Y9bi4P9xt3d1WXLg/YdpLY0wauD+nGVhwgAO4PzQtBF1/lLc/uxTa/e5Atz+70CmpTAu3P5UTT+p/47Y/NxqVv6Butj8qaCXYeBq2P8BaXunx2bU/fH6omg4xtT/JnnLRE7G0P8jHmiVTS7Q/a+RvFY9ssz/c3GKcpNS8v8x8DTZpjr2/rnGbZTQkvr/lzK7UTy+/v5cYLQ4ECcC/9HsAP1lnwL+Jhp+slwXBv+KJAODli8G/YxL6dfz4wb8fJatDRlDCv6FPr3eq5MK/lTDVT+Vcw79t3UML4rjDvxTKRQoUWcS/8C1FoNrZxL8bdfW6WT7Fv1RS6Wb878W/nLtdl6B8xr9MngRRmuXGv6L11cDPK8e/WmWLbTa5x7+IyYVSYhzIvxRgf1jNWMi/gWZXbyTiyL8xdMWrtzfJvy15IuAvX8m/lX9DA0hcyb+eTSdF45TJvyHH8+wmk8m/1Ql6m65jyb85dBN6TXrJvz7zD4EoUMm/TQiIbADxyL8QXK/6vvLIvxUT5RoIq8i/Bwpju0c4yL+t/E3Bz6THvxMAVF2Aace/eJ1hNugMx7/jtOPWp5XGv5aKzeBPfMa/rfWq8lw7xr++rWTJN9jFvzqTvOU5YMW/Mv6rims8xb+znBe0JvTEvywgr5lajsS/BsVpX/aMxL9TNeQHmF7Ev1Ui+pqeH8S/P89XYS1cxL87ZHvyUW/Ev7fepOmYasS/YRasuxJcxL8Kd+kXBtLEv9Zm8PesOsW/bmnA4seHxb/BcS/+Lj3Gv9HCUB3azsa/eyZOfEg9x79bR9wuoorHv2BAi1bXOMi/LFy/lDHGyL+MqwNrATPJvyAnP9YhAsq/NOtEa3ytyr8CTmW5cDTLv+sLWMGbGcy/9yZrVIXazL/2dt2bpnnNv1Nj1cYj+s2/1tkvpYjYzr9cCvQINqTPv1Z0INgTKtC/2HhPJ2mh0L+NXWOETQTRvyISq8GnTtG/Fp92ptZ90b83EatASMDRv3lEyifp5NG/p8VUNKzs0b+kXAWHtADSv1KnwPha+tG/W4QMW1Pb0b+IxWcRP8LRvx+Uv/ijktG/1MuODydM0b/nIiG1fPPQvwdFNVg+ndC/u/LDTuw20L8jmId2j4bPvy4ErhSDUMy/T3fklW4ry7+2JLnH4Q7Kv1GA0bnz5si/0T6SZS6zx7+NPp2uEoDGv0eMr2FzSsW/2bzSb6kPxL9U8DjYatLCvwR8w37zvcS/RAeE9sWVw79ZfSiJ7njCv+UrrVb4WMG/8v5/qiZNwL99XQJZQ6y+v2vTBtztoLy/xyemu6nJur+PT8n6ASW5v5JNjNnisbe/XjV4DsQVtr9tDt9ZR7G0vwphd97/gbO/pt64/R0Wsr+OWBM9yeKwv7HUdTUpx6+/FVMJKZMsrb8Nm22eyhKrv3IHpB4ab6m/1C7VG0w2qL//82MJt2ymvzHZMJObEKW/Y7p8G2oWpL8T5gLtcD6iv0KS6Kku1KC/Ymql3cGLn7/8OdS5hgqev3QP5qRlsJq/2oJZVp4zmL8NAqE23oaWv7eh0TQThZK/+JMGLb+qjr/9LJ+9dPCJv+zMbwt5YYG//aEfOuyRdb8/RvtbNqNov+Ttn2RReVu/Jj2/UzQWVD8WN7q10D9tP3g38dKdHHY/MkdMrm3mgz9Iq6gbDTWLPyxokl7jipA/npv6oR7Rkj/0Uko52puXP3tboD2OjJs/uR/Dv3ipnj9eThaJFRuiP4JVRetlZqQ/VrOe5uY6pj+ldwmfzjWpPwK0jqyAqKs/btluyriarT+SE1pEwxqvP1l02QHlzbA/otWPV9DPsT8/a/rDuoCyP1zYZMEKgLM/50235zM0tD9SbatGEZa0P1F8pwiurLQ/4KrCgrgJtT9b4131NBy1PzDaF4P+6LQ/wGn/eK4EtT8IMYkvVd20P9Azw3xHdrQ/tMqb0X9VtD9tK/arUfKzPxM60weZR7M/9/sPUzNisj9CQYePoMmxPyWErYz5A7E/cMq8b0YYsD9SJYsp7jyvPz85VoIpG64/BTxgi1fLrD+R0gOztF+rP1CCZBa03qo/M0bCuHUqqj+RpGBUMEipP7MY9d44bKk/0AGQ8TLSqD8UizCmkZKnP+r6be+B6qc//CUYKZ3gpz/fUBAPKA6nP8UzyKDkYKY/SZrRdIOxqD8PFh5pHAWrP50rTmMtQ60/uTQyHTzzsD93YDbSPRqzP8/etRuBCrU/A2pyUAm6tj+GNa9DOM65P5wBLFrMiLw/ep6H/MXdvj8m8bmp2hLBPxcXjTXokcI/90kqI8imsz+ICy6vyJ22P4nm+Vo+Urk/amYmZp6Iuz+V8r0RqhS9Py42FpNE9r4/J6q1TEIkwD/FItTqo3TAPxIK0QoNz8A/xT9r89fgwD+3o0FgOZLAP8XovfI8ub8/6zMw7fiSuD8WHSaoDMmzP7HIhr0GdKg/bklncvYZoz9OGU9Y7E6bP2wTtNOruJI/YtJY45yphD+A8yslGBRgP2YSrquArm2/+Iz4v8NBgr/fu/ex5+2Lv0XBDruwAZK/58Z4YcWsk7/VVErRGGyUv+RT0vtjKpS/1khC2x3Akb883Clq7eCMv6jZwZi3YIS/eWTlwDancb8inLPsFT9hPyM8GDSl84E/SaYB1kKijz/nwxHcBdWWP8fUsRUZ5J0/+JlM6/9boj/CT/ekx5mlPw1K45dzvag/VAAAUpK6qz9cc7ya9G+uP8wMClCsabA/MtxDrVF7sT8l/TM6AmeyPyDrwu/HCLM/FuXKcSZ5sz/FLhWYxK+zP0rrtJ3AeLM/tzFgNUUGsz+XCwEdpF2yP2l3uW+TgLE/fXWefZM+sD//OOc1arStP8nWIkTanKo/AWJnyL+lpj+MSpQKOIaiP0C2z7ErrJw/FlF17QTakz+NArnxWXaDP6AhJfbe+j2/tjnoVTH7hL+eJgJgG5eVv1pF5lCcLaC/SVBTz8dRpb9qYgEg3BCrv7tXpmIIO7C/bDqAn0TCsr8vt0WWhg61v7prfoibtre/kET+0LMVur8N5AQlviW8vwuHtm1bib6/K4qS1zNIwL+IRDJWnxvBvwLjCEZiv8G/U+fy5W6jwr/q+mMez0/Dv+3hqcO1vcO/T67vRqRsxL+YgVWsx9nEv93FrKcnCsW/zyd0lvB0xb+RQiBsaI/Fv0Km2bduW8W/5w+n1BzdxL/rxghPnZHEvyj+NZks88O/aOd13okdw7/dHNd8f6PCvwaggOtnAMK/aeXMa+s5wb/C+MpbMl/Av3wS3mEiz7+/w6Dce5Opvr9Ft3udAmK9v8bxjJQsIr2/RISe5tBQvb/Ze3ZTrjy9v4i/7pcnAL6/OLxXFptwvr9pkjSsRc3Gv9QamoDB0sa/GVwY5Cgux7+ES0gGpGrHvzsQOZTji8e/oIVxwpb7x78EJzAPFU/Iv9tAyzDciMi/iPIL7JWryL8LRi9GqRXJv6V7JPUBd8m/A6h5pQXPyb+U/WQAhn7Kv5/N9+Z2Ksu/mwLXDzvIy798w/ZQRJnMvy9FTuXITs2/OSy34fTlzb923yYM1VfOvyZl9cAt3M6/EpSRVas5z7+TGraXXWrPv6msVatyn8+/LK2cGxKqz799uSBC/IfPv9LBaklmRs+/vp2ReEgEz79JmZO9U6vOv7qd+Z/gPM6/XfSWqeLHzb+SpgpJJ0DNvzDXKbcCpsy/H8LL0p4BzL9ezfgAWE/Lv9IBLzW1ksq/EasN0qnPyb/gLl+CLfzIv7UCazxXJ8i/pE9nF+JVx7+X9GRtT3PGvynwUn8MlsW/9A4It5DCxL8AIdj7UvXDv20ptUQOFsO/5icjAKRGwr9OgoQaC3/Bv7wZ2prKqcC/1jOQLbPFv7/46d62QJG7v72GIUFqQrq/0Hcl4BIaub+bVZMHPuO3v4VaF0F23La/g7H51NQEtr+eC8oDgUe1v91y0Hj5t7S/V5A7gwROtL9hH3y27hS0v0lSp2/2ALS/MG11dTwZtL9D09TXM160v0uaoZ2cpLS/8hNPMBsPtb/gj2TXYZK1vzZVV4NkJ7a/y3V+kcrGtr8vhlLvAnC3v5RjOIKUEri/Qk6DldWvuL9fqDjXyjy5vz0Fw6isxbm/h1xHICM2ur+fh0Yxm5m6v/zx5KvD7bq/vRu3qIkxu7//+rwuiFe7v5+AdF7Va7u/EP0bTeNru7+a/FUJM3e7v9AbKMeLbbu/H049IN5Pu7+We6jnRCy7vwRCy1FZ+Lq/+3pxMC+1ur/QhMplSma6vxD+kBD/Kbq/G7WbcPn1ub/jCT5Tx865v3vtsfX44bm/bV/w4Xf2ub/5B6oPlwu6v1nNxiS9Irq/WzEhYTNbur+mOi8Ch4+6v0UQOifXvrq/zChxRnkYu7+ir+QGama7v/RrT6hWqLu/m5LImWH7u7/GrUm2fEO8v9iVygKXu8G/QF4S1zvXwb9qBjAeTAPCv71yBUh7KMK/RWl2tMVGwr8ZGyrKZnLCv1DgVT7vlcK/fUzF2WOywr9lQ4s1L8jCvxmyoQht78K/D7rFR/oTw78+KRa/ZTbDv0x3T/tocsO/tjpPoPCow79sgELC09nDvwF5WURjHsS/xkH6szRexL8PbkWoAJbEv5kIE8dTwcS/XdiYPITzxL+/rOMDxBnFvwK5zNcYNMW/++fBSL9Rxb+T6AOYxWHFv/ayKF77X8W/Xr5FL3pOxb+FnaeqnzvFv/cocmKhHsW/2qZgupL5xL+Z8m2icNLEv+lRUfhQq8S/7oAqjtyDxL9cSn30wVPEv6VmC/dBJ8S//2yZpSf+w7/0ZxDQs9jDv6RbXp52qMO/eEYoQKh7w78gHQI931HDv7TVX9vTGcO/Qex4FOHqwr+w9HfsjsDCvxId/ywTmsK/eXGTC6pZwr/r2fP5uiHCv7wqolr298G/2oDyL3mtwb84YoKrBHfBv8hSmmTmTcG/pLT5mwX9wL9+tbmKPMjAv9PLvfjvpcC//XSp27OPwL8Y/CETJVrAv+j0ckuxQMC/c7vCobE2wL9LjCJB0/6/v/UAM5EN4L+/YSxJf0nWv79P6Oj2VtW/v+dqcL19vb+//qbWL1S7v78iEe6o08G/v8BLp3khaL+/qeQNFzE9v796bqdjVim/v1jKq8Jogr6/KaZOxTkTvr8C7ztsaMm9v9KhahZBn72/q401drLrvL9ja797Zl+8v6ouUruL+bu/jugBlRbuur/jYGEA2we6v3dezLscSrm//ehttri3uL9dxeWR6J+3vyHvsKuoura/yjL7TBIGtr9BV+EVQsC0v+Q1oHazt7O/ONit/zbnsr+NcbWv7IKxv4m4J5j6bLC/3VMcDWM1r78+9QPEvAeuvwFx6Y290qu/Lp65+OA7qr+oWqdVmi+pv+IWoKGYIKe/Du+9luK3pb/jfUiEc+ukv7EzSP6fsqS/xwc8VfJoo7+2HGv/0ZCiv5RMGrQ7KKK/662T52OdoL8whf2zmz2fv4dKshm3JJ6/g5s7SJ+7qL/uoMLiZI2nvxphcR2b06a/6sJu/v+Hpr/QIflmHTylv5b+6D5RaKS/exGGGtgBpL/qUhy7A5yivzUDschlp6G/+dAdj/oaob8x/PClEPSgv/fmTPI62Z+/V+D0s06tnr+cINvDnlaev2F2UlIdVZy/3LwG/bo1m78mtdIJUeiav6YYXfmLMpm/3ASkZy5VmL8luaszNTqYv9NJmqweuJi/h6EXx98YmL+LNX20gjuYv7YYkPVBF5m/qvmTjhwvmb8sMPsa0d6Zvxh0+XH/PZu/tD16xktLnb/tcaXUJiOfv7J9gNkUyaC/kia9tT82or+a/+/kfbujv7xFjYYfhaW/j6LcPRqIp78CABC1xOipv95Q8agOaqy/Yspf443xrr9RjIHN4sywv9tQ+nWib7K/ccQ+i90QtL/7NJy6da21v2gwnzFMpbe/OTuSHNuAub/TOsRArT+7v+9R8boe47y/CwFVgs7bvr+ZdfMwl07Av5BqB5UIFMG/636y0g8Wwr98v1gGlenCvz8mXh4PlcO/ABtChqaSxL8q47+HNE7Fv8j4GinL5MW/4WzVVs5Vxr93wIQPJxzHvxEvVqvnp8e/oz+welkUyL8JYq2z6fvIv4RPsYzorMm/1s8Huqk0yr8n4rGCJZzKv99xGZpPW8u/kUJ4NATey7+MBdyeJzHMv0thRDyr68y/yHjxjuVkzb/AmJONpLPNv7b8SLRAk86/2DU6/pg/z79bU5gqFcTPvzL94alAE9C/yftn2eOH0L8bis+2vOHQv5Zz8JjUJtG/dQQKlXez0b9Perx9KibSv504yXgXg9K/JsOT7vvM0r+fTGuVDFrTv4ysK5j6zdO/J/9tzaIq1L/KESLSc8nUv5NyCGJ6TNW/8yqdpBW21b+eL7ubNWDWv/NiUxS569a/86gHR71Z1785KKWLU6vXv88xGgosMdi/khH50pqW2L8nahioYt3Yv//jiHSdUNm/BOVQORyj2b+29i6AqdbZvzyBpvCo7Nm/HZ+nxJQk2r9UCUIcpjvav/vOA7XsNdq/gsYKvV1M2r9nspoK7y3bv7ICME/ID9u/aaevipsG278lAS2neuTav3KW7pJHrdq/Rsq+3epi2r/dkFjDpSXav5/6rsXz1tm/5AcS5NR72b8lGJAjJSrZv1XM8CgkzNi/zwQ+grli2L9j21F+9OrXv7Su9vfoete/Plm1mH/91r/Yb1/vTnLWv910oFwP59W/OPs6QShg1b9QMinsQ9rUv3POhQjCR9S/ci56JSq40794sfsUvS7Tv9zMTuZfrNK/fprpCMAg0r8YtH8SHKPRvy4JdLbMM9G/arNSxiqz0L/SXDNmWUHQv9uTbZ+kvc+/yin26/4Gz78d3Mix/y3OvzERGhLYbM2/uaZ9N6LRzL/ZICuxhfPLv0vjz3fiN8u/3EdJydGUyr9XrCaQlqjJv1dyGVTk5Mi/fjhNESFJyL/dcWvyoNTHv3f+5c1hKMe/JOcRbxKexr++p40TqjjGv+y/QAa4g8W/BrF8ZrXmxL+KTuzHaGLEvxqX9JtL/cO/ebmd66g+w7+t8ALr8p7Cv5wXmr0SGsK/V8OKeKI+wb+aQNXLpn/Avz83BSrqsb+/cqI8p9i2vb8z1MFpp+y7v+Z2hfcyVLq/fer0AObhuL9O/gpoLZ22v6YqrCj6i7S/k9Qa5Gy7sr800tMIKSewv4oH9PBopqu/WkHu02eUp7/ALbq4czykv5hyQYemjZ6/LtPc9oddlr/QuhcBlRCQvzxJ/OdwBn6/1Gr4l6V+Ub8O4OlP+lBoPxrNF6nyzII/Y3DBgiO9ij8m6H/SscOOP9+JL5b7+Y0/aI8F2BGGkD8xPMdKruuOP4TC/WXJu4Y/OdfwTabOgD+CPW04IRVhP0etcQFlo32/7Gk6Rrv4kr8siIP/oDmcv1XRfDGeZKO/kxxGIENDqb/2Za9Yafatv1ieXiSeiLG/cV1oE8o+tL+8sh2zlmq2vw==", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -2539,7 +2545,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -2559,7 +2565,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -2577,7 +2583,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "GYFnQlXB0D9jJe4EqCbQP9WdE+fdAtA/P0cJrmxlzz8ERES5Sm/OPzpQY1MSK80/UJPvUQm3zD/ofCrh4+/LP3rth5Ef3Mo/1l4QulyIyj9U/SDcheXJP8LciBSU+Mg/HEPk8Tq/yD8aO/5ieTjIP/BFW1BKasc/5chIvOxaxj88XGM9i+rFP3wgbf04NsU/yU0flgdExD8+dVYNfuTDP8CUeSK1RcM/2MHX6b9twj9oCuyjCGPBP2yGz95C2sA/+eD+QRUdwD+H0gKXYmK+Py0v1/U4Vr0/s5fE8i/quz87XmJMtCi6P76hYz5T+Lg/m+Rd8IB1tz8TUL62UKu1PzW/ZBvZprM/D2iUKl/7sT+LSRGfXxqwP2TEW9yIJ6w/Kt9jR8hdqD+uYrwKVUykP1rnLl5VFaA/tNdiNvfJlz/AVI0wNRePP7CyVEZ4bH8/QBqnVqoCUD8AMDy2c+R4vyCg4hD1Q4i/cNQ3jDSUkL/kGZI4c5eWv3R6OlVr0Zq/2ATIo32/nb/AavBf8KyfvxDWKGfUJKK/BADhjdf9o7/UnMGhgIelv2SMHzsHP6m/BoEmtzh6rL+oYazNdGevv+uR3taAA7G/wMVMudSNs79h8Vh6MM+1v3o4oplQzbe/UVHA6JBAu799O10KhlK+vyqbbpNUh8C/ZyJwppbAwr/NPdb/p77Ev6odb3u8h8a/pN0R50wcyL8Wf7SIMp3Kv3iVJ/LX18y//tJQlVnMzr8L6GE8L97Qv5nlnw/MKdK/gx2PDAFH07+fR2ETPjfUvwib4ObLntW/TI9GGbvP1r+Qk0LfccvXv/PJI2SlO9m/EundBTtv2r+OyGSWL2bbvyYEID0t0Ny/XUmImwv43b+W4AKx693evy9HyXwHgt+/5UYIHNZJ4L+ATuoDdq/gv2jCFhXY8eC/68Fd+3pr4b9Qq/JgLcDhv/hmy3988OG/u5MIB+j84b9vWpWSiz/ivxsqki3TXOK/XgmhqZpV4r+0hi47u4biv/+Xns2vkuK/pe35el564r8GG7ssppziv9VxpzS9muK/Wl5fTI904r8AUY/Wsyriv9AJ8way/uG/+P7QPMHM4b/Q5Ux3P3fhv/vikfxQW+G/4pJm3jIU4b++zSN4KaTgv3xwjlqKC+C/geZ7DydV37+ivxyssETev94z21ut6ty/n8qpt5gG3L+Htgbisdvav7gyFF12cNm/NLJ+B+OD2L+hmQZ22VjXv7UcCtlF9dW/8t+oqtRh1L8LFurzpE7Tv7n51AnrDdK/Q2jaMBun0L+6hKKBXIvPv/yJJUBLg82/Fi0t0m1Cy7/28Et2/NfIvyIgPH0+Zse/xD2thdTExb+uFiQbwwHEv9i70FnSJ8O/4qwPVI0dwr8MJzryt+vAv6RIPWJ4jMC/8lYzDsDxv79u9Aab5nS+v96HReRMr7y/EKDSjzA6vL8zXigLOmG7vxpAuNgVNrq/3i7fmrcwur9qqUky+8W5v5Wmfd/iArm/txBfSzz1t783clPK5MS3v7RF9FKjPbe/SeL4OhBstr8AoeNnGEe2v8tjMwDE0bW/MdR3WdkXtb8X8D1P0N20v4BUOlFzWbS/zoU8dT6Rs7/6HMfDz5eyv7DhjPNh6LG/6L1TjgwEsb+gg3gZ5uuvvw7N3JYOEq6/YihKBdfrq7/iHlAd/ZGpv3KkOEOcIKe/4OWKxFSipL/YYbyZ6gyiv2Rl9/I+6J6/PGO/j6VNmb+UUNxdUQ+Uv7iJGOpXX46/CKJXGqs7g7/AR9ha4UZzv4DJ4Sj9Ake/QByL1ycjZD8wkza5Txh7P5CyDvLLuoM/YOWcwJUYiD9AO/IBlvmOPwjSU+QWbZE/sIeFIQtukj8cAzfxd92SP/SEal/asZQ/mECNO0KvlT8McFDCACiWP4xbrWwhupg/kGpE8tonmj+sTc3pziubP8Rep/x5i58/ZuEK7t5RoT8OZq2uCZaiP3aLzCPvraM/BlqRtuM0pj/+au9HFUSoP+jydUFb/qk/ZkwZtvBSrT8nzyHmGA+wP13HGbpcP7E/mT0dzbhBsj/H69wACAC0P8U2cRIPebU/E818VrWytj/nz/AXtaG4P6kVhWAYOro/71g9ECyBuz9P4oL1MGy9P+exVaAR8r4/CJe9NyH0vz9AYkC4xmPAP0pMQcPQEME/KdZzlH2LwT89zL+GY9fBP2+7fFqRZMI/YNo1YeW9wj9fzUuqIOPCP+TK+IpO18I/szziznL8wj8fYQCAaezCPydAbNK8qsI/KAcVyeqOwj/z1IHvOkLCPzAFISUEycE/WmlTIKh0wT9fxACvJfbAP7auH+rWU8A/OssStpcivz8Gx06A49m9PwBtVuCwe7w/Tp8KYcDQuT+IGzlfDFO4PxC/u1m9o7Y/qNktG/zItD80ljJsOQWzP/xv4YwEKrE//HEt3Wdqrj+IiIbB7HuqPwAn+oRjiKY/QGfdUTuJoj84XPYk+dqcP/RVL+sP6JQ/sOMeUK5Zij/g+E1QzC53P8DZzh83GFu/gKCKf9p1gb9gOpWuVCKOv4ChavdZy5W/WBqu/8Kcm7/YCy1Vv12gv7ooYU54haK/sHeX+9jxpL+cg3kyZOqmv8Ag/VD0f6i/LmqloCx4qr+S6vvKOASsv85AR/IDOq2/jH6jRukkr7+NcF7rfFmwv67yQlG5/bC/1v9LtQOBsb/VUWt9eWayvyHV0uh4HLO/vh9S+0uhs78Ox1hLeZC0vyREfWVDV7W/N4ITrh/ntb/ulLj9Kzi2v3WV8QEv0La/H3rApXoot7/U8iTDKUS3vytssmBRpLe/Bnykf8nHt7/W1sd2DbS3v932eRWy5be/jyQK8qbZt7/tNVqTI5G3v7S+kxJpIre/9Kbk0BkLt7/V0hWqoNu2v+6d9baOmLa/qO08EYC5tr+l97unrLC2v3bXedjrj7a/G38BZ0xgtr+BkIpBepS2v8Q9GV0Lp7a/ivWKBwiptr/4Uj8wQxq3v7zCYsWNYre/KyTAoOSKt79aF+prPzW4v2bS0NE+o7i/C2gHCG71uL9l+89p0zG5v7Wm0vSO0Lm/zGjH8uNOur+sZIN7uKi6v1vQ31ukeLu/9xwDUL8ivL+v1j/nFKu8v1e7nqQWG72/M06S3m34vb//VzO0srO+vxoJRHGiVL+/AG6QiA82wL/sKEyO1bHAv+6EDYYdHsG/zkKb6qrDwb+4CjewdJbBv5wXcxogFcK/UIy9fKaBwr/MT3bT9x7Dv1qW5cpuqcO/xLTm6BsfxL86mPL1db3EvwooGXzyQ8W/h2Bc3o6zxb/C707+uAvGv1lCSm54gMa/0tMtosrbxr9PMSIaMh3HvxuoicxGbMe/kXvQ5nGix786V5lOLb7Hv/uV72OC1ce/WbSST8XWx7/ymxPciMHHv38Xw3C6lce/CxtY8bJfx7/AR3bzDRnHvzSOEs1Gvsa/j+LJ5KVJxr/sfyv2itLFv+6ED2HkT8W/4GZX6TzCxL9I0oBGNhzEv15n3RLgfMO/6dRcybvbwr93jwFY/wXCv4FqhPSOQ8G/1i4ZoxSNwL8ffJIOZPO+v0XAm/mTDL2/AmOSVPBGu7+XYvL8vpi5vx1K2/xFPLe/9yMNarERtb8rds8cmBazvwaMrzMkS7C/UHk3mCulq78aK0kqSVanv6aHa+krlqO/YFgfybyLnL/ohYlSt6KTv0AOcE+Qvoi/wOGx+p9wVr8Qjxv4o+t8P5C2IDXtyos/jLEpyGJHmT+4Tet/nuCgP4QkvIjXV6Q/bMmMaa0Spz9QQ2hJWwCsP4CtfYJfrq8/5h/cbQEysT+e87cJj/WzPyCvRB3rMLY/uORGGhMOuD8mQbuUO5W5P6RuRgVZibw//s9SG0v7vj+MKnP75HvAP34lquhVQcI/vKw4ndG0wz+FbB/YqtnEP5BtRFLLz8Y/WZTdMaJfyD9msT4kRYzJP5GOLIqKWso/JBkl0UPmyz9/yQOlNf7MPx7iLF5PsM0/vrmt8/44zz/ypAYWLSLQPygSZOVVcdA/uh2Ssl2T0D/uePJ+nhvRP1DOICXDcNE/OUHLRjKY0T+QCvHJVi/SP5LU1f8ZkNI/6HbNI0S/0j/NTWUv/2TTPxCJCN0L0dM/s4JekOMI1D/8NuXWTxDUPxdXPFsSg9Q/EuRTWjW91D/NPbGc9cLUP1BtVpL6vNQ/b48GxmOG1D/gfTMLW7PUPyC+ILfGptQ/qsjsoLBk1D/e8s7wGIfUPynpQePab9Q/ggabhSUj1D9/MWc67TvUPx0wzNXOXtQ/TBDnHWEJ1D9wWmfxCoLTP71I8UNxXNM/fClRgOIC0z8jxbqkNHnSP/PnJipSU9I/rpy2YpT70T9g3GXwv3XRP9fr5zcZxtA/oC/qB5J40D/w48ukRf7PP76ATOQWvM4/bDMOf7pJzj9+u8KvV4PNP2zMC+qocsw/aPMREuo3zD8iS/0FpabLP8Yk1lb7xco/YGhmubydyT9WNoglKjrJP6Kh12T1hcg/+O1ZhtCIxz/i/xyzCVTHPz4mkcy7y8Y/Foc0b4D5xT9u1EgmZ+XEPyoMHijiicQ/8vx2WJLpwz8U36GbggvDPwYVe3487sI/wJDZwXmLwj8Jmwuly+vBPzZSmxXGE8I/9vnZtKcKwj8dOMG3h+jBP3iuzYeArsE/jP/4sd1Owj9S5BjbD9HCPyBrWm2SNcM/3rNGr4VvxD8iCgEuP3nFPw4t4AZ1U8Y/itrJJKH+xj9IBCcQd1fIP247gJBwcMk/DgmUAe5Jyj90aLDDm7XLP65MzbmZ1Mw/7FCqnLunzT+cSqn2Ou7OP3L80vlI3c8/1Uk768070D9syBCB4GDQP320as7aq9A/zD7R8mvK0D9Dv8aSML/QP67UcoHSzdA/I35+0jCw0D8iRPW7EGnQP5ivcpB49s8/bPa2t9s/zz8sqy/7zkDOP8ZEi458AM0/cqgH7JLfyz9eWLDMXITKP1iNMKC59cg/+nfnvm19xz/sN7jJadnFP6JPePh8DsQ/ECZfSuEkwj9KLNdNr0bAPzBDRMQOrbw/PFbMB5a3uD9iKhemKNu0P0Qi/XgYBbE/dDZCb9t9qj8oz1paiiijP+h1I/JdLZc/0LT8mfO+gT9gtdAWFGJxv6CNWdZBt5K/YDg7Fdlanr+cH+K9++ejv0wFj0KQeaq/DsalSN//r7/oDyp5Ow+yv+v5cgXJoLO/n/QSx7g3tr8wnBL9ame4v7TeASgrS7q/7mz5f5bNvr+1kYv7BG3Bv00ExWNSOcO/334qZ0rKxL+AMxEm4e7Hv97tRrucw8q/AMF3pWw8zb94jQxSvJTQv7SxqdnvVdK/TIMgFgF7079UCwFw+K/Vv8tBTCY7ote/v+bbOi9P2b8xMF457bDav4F7+Ayawty/OsfpewCE3r8UCuTNa+nfv4YL4jc7B+G/IBlREufo4b9X6gWVj5Tiv0KCoAdCA+O/NYrQwRsd5L8JBO261THlv3U0kEnJdOa/pLDvefKg5r8o/lRc8JHmv2ICxsIL5ea/mCERviX85r/XpBXtftjmv1ijTlRrGOe/EDAO2Swd57+STKporezmv10Tf1CDi+a/QjrImO+N5r+sJduoPV/mv05PHtYRAOa/zCyg0IwG5r+ICLCE6Nvlv0JK6fIZguW/pnDXQDiN5b8ge0le7Wjlv6bCeJqvGeW/ViVTGWKh5L/CQslVFZLkv6fi0fuHV+S/rk/6A8/y479eee/YnvTjv3qRjBjtyuO/QTmk4QF347+OLeJ45Priv+n8MKUq3uK/+GEmDdCW4r8OsC6kpSbiv5bhx8fJEuK/ttSUyXjU4b/OxQfIdm/hvyAt4iyAYuG/mITkxFQt4b81sLMvRNLgv3BMeME5VOC/xLnZAPwj4L/Yb3DU05/fv+nwdIuatN6/YDV/sitX3r9J29lp6LXdvyqrln3I1ty/vTDXC0i/279XwKPAmCTbv0RFa4JYUdq/RBv52phL2b9kd68q8LfYv1eJxHHy8de/KKKq3vv+1r8SQt4WSHDWv1xwTguxtdW/IvYfU6fW1L8HbRDI59bTv0fznr8TJ9O/1nbwTGJW0r+wlgXm52nRvwuUWY3budC/knnXTbXjz7/g8ac6VSbOv6LDhPxxRMy/BvKGE8moyr9D2ADYyPHIv+Z4weX1Ice/C+CBgfZmxb8AyHA0G6LDv6x3+Bdw0sG/3ylxATTfv78aKO5KwTC8v9Lfgxamn7i/NDprnY4utb/XbPgu5kmxv1bvWujHV6u/yvvhxqCEpL+AZ/cogAOYvwAP63+EcoC/YE3y+NrieD84FSyezUyTP1iFWNS0/aE/nCtUvfQ+qT/A2Wv6IlCvP3ZXDeeIl7M/nFRSWIMJtj/cmHpl5ci3P2rA3MPKILs/iJx0cNzMvT9uWPVS02bAP/yR1WrSQ8E/ZCd+qtIIwz+aFMr/norEPxiN0Epu0MU/7CbNhrIgyD+4KxWboRnKP4qbccmovMs/lmVSfD4OzT/ExJl2d1zPPyixWXZZltA/7OPG98o80T8akMkIBl/SP1J5g+NcOtM/CFuAj4Pf0z+HjRXaUx/VP9mUWPkjItY/Qk3Begns1j9F8l9YsIDXP6Q7c7R3q9g/rVDdlZ6X2T8LhayLOEfaP/WMgmTOj9s/CvYGIBeS3D+TuB3WU1DdP7c4C8M8zt0/g8RQyILW3j/SDpl0WpXfP0QB+yESBuA/aOxvw9aF4D9oplfBN93gP18mQ/QXDOE/Zl1SkPZ44T+QKLnRfrjhPzQoAIIIzOE/6jcMdTG24T8UoY4RWNfhPzqsok0mzeE/ejXZ6Eib4T8R+rCaBp7hP74nztEyd+E/nDufD1Uq4T9kg00I9rjgPzrAgw7lduA/JiNzZC4Q4D+fJSp65w3fP8HhGaeWWd4/t+Z1CnRi3T/EQaBDbizaP8HjnQLB5tg/6rms2ddy1z8C1NiKsljWP9FGniySENU/PS5Dzauh0z8gg5XeAI3SP+m7Kk2bT9E/rJzf5ePgzz+yo+eUGu/MP8SR2tBsqMo/PkAFcZItyD9OPhuFBIfFP8D4eIgdicM/JpukAzFjwT/4yyB7eEG+P/ghnw/7FLs/xqPBeZeutz9sA3hKOxu0PwyFBVQ/cbA/yPaiD8zpqz+Et0Xs866mPxh6H00qPaE/yEXF7abJmz/gsbUHMYOUP0iR2C6gsYk/MDCCfVnjcz8A+DEEAZVCP5C2GRM6GnG/iK7EKorbgr/Yzr6jClSHv8CUiteM54y/wMCdOWGrkb98RiDxkFmSv4yJbUieuJO/0Aar1hmqlb+w2tpdYQqYv5gukLb7W5i/qEOOk8gTmb98oDxfKtCZvyyizij4O5i/xJ6VcIOolr8cS7qXtxKVv5BV/R1ie5O/oDD1ZGX8j79IaKPh5X6Jv+Bg+N1CdYO/4L2foJypdL9AfspyKLxQv6AfNexcMGU/kP252X0Ifz/ICmOR4Z2IP1wFNDUJ0JM/4EGeC91Vlz9gCcrhIeWbP/jVPobpzp8/tKOkjiOMoT/odA+ov5mjP/iGXgxGSaU/KEVgGPacpj94TIvvuJinP+hYefRq6ag/oAO9yCjQqT/QAiNkPVCqP8gOTzM5FKs/DAXGucF3qz94/mUMo4OrP4w8hLOA4as/mNN27mHvqz+Ivxrw/7GrP5CzbL0NL6s/CEPjM7Pyqj/0aWK303GqP5zlY96itKk/EFmpJss+qT/Yytz5B4yoP5jE52A0qqc/eCUJxqqfpj8AUbuWyMylP+h3/luKzaQ/cJTxQt+moz94J4r8AKKiP8DJOH9xbaE/oJORSm8QoD/QkZNb+JCdP9z3B1l9spo/kOMbsIuXlz/YxiCPTU6UP3S9Yfnq/5A/wAiplHILiz9gaZ3VKOGDP9DpRI0eRHk/AEuoPfKcZT+ApRvy8q5IvxBTc9c8P3C/wBfr2pZ3fr94k31mH8qFv6inVoRp84u/sBQpg+F2kb/QB47B24uUv0xeeNupPZe/FAzyp965mr+Eq52RdnGdv8StpOAjlp+/AuKmWDqooL8YBdOcqsChv4rrxUGoeKK/3Ann6rIAo78Y1Nne/Sqkv4ztRwk2t6S/pgJk9/8Zpb8ofncjFWSlv1JtKU96Eaa/EhJPwZp9pr8EG7GZztOmv6I5IPKdJqi/rlFtohATqb+guFObj76pv2BQrd6G1au/ZkZwJbdzrb/CCmHJxLeuv76BxAtDv6+/7IEBVDMQsb8c0sEKVAyyv8W4MfobzrK/X/3EnH8otL/Hr/g5xS21v161rwwu7LW//R4eZB1ttr8q6i2mBni3vzN+CPqDOLi/8pOprDO1uL9Epw0bk625v8EJOxbRYLq/aoLP1MPMur9/eYROIqy7v3KjpTb3S7y/wPZlABOzvL8AZ05xsd68v4sqaf6he72/xG1260jdvb/mGy+h3f+9v+sPpu4Fir6/SxKVKAjTvr8pWS2WbNu+v1tx/gsAqr6/vTOs+UDnvr8XzgHe/uq+v1DFTOwpt76/mqneS8Htvr/SovwWF+e+v+4kDMxEpL6/kTBBR3YEvr/U8VYl2ey9v14/97RElr2/Vtxt4YIEvb+Kiq9oTty8v2st2pLRc7y/bkyV6C/wu78qSHBuEwW8v8rMOv7c+bu/YJ6tVt3Qu7/0qXmUpIe7v+PA/RCHxru/KIGU7ajbu79oYkyfUsm7v0MILxPGOby/a5cvuJh1vL/Ko0/my3y8vxhEugIh/by/smC3hTlDvb8V2jKxhVO9v2hDODTSK72/q4R+AZhlvb8jSg9t+mS9vyqq8++hLb2/6/EAWGFKvb/7RxamEiK9v/ueLFFGwry/v237JmYyvL92rOAqpd+7v+3KTXURV7u/Ns6zTV2Yur+BeH50MxW6v6R9qSNhY7m/mkuYRG2MuL8y804BpOC3v5cWRlEdCre/6C073icMtr8wTV3CU/q0v7IsFZwgC7S/Q1zv7JMFs79xxpYfGe+xv1A2sHtd47C/pp4RRxqbr79u49pi5nOtvwRJMh01eau/YAMazByHqb/mTytZ976nvwKLpbaGNKa/OJas49HTpL/YvAoZG4ujv/6oXKU5daK/VM49EyRfob8srPEDsGmgv8ha+KAeBJ+/EOqSxQVpnb/oL/6KEiabvyQZIx3FPZm/8KxHGzN1l7/MO4S8pcaUvygYBkZYK5K/2LkoARO3j7/IF6EgX1eLv5g2IkLv5oS/MEEczT72fr+g8QNolQR2v8DbXdbs9V2/wBfo/jnLUj9A4BCqyqVuP8jiHw+J8IA/ALYnO7k6iT9gyw7SeEeQPwQq+d+zeZM/tF78iFaumD/o0N+jSVOdPyD3+20NqaA/IGTBZHi5oz88YeQMzV2mP2Bsfi6XkKg/3KiP7IVcqj+Q82Sl0yitP3gycTXtdK8/0B1UnpKjsD+kU4YbdhCyP/rdjFNcN7M/AirngOcctD9gxvc+D4S1P0Kfj4ycnbY/oM9BBNpptz9MwRhNFOm3PxSWc9TYzrg/MI65eWBeuT8wtR3dP5m5PwCui9kJKLo/wsRCZFhbuj+4pqImgTi6PwT6F9Rsxbk/8PcoRJSNuT/e4exCLgC5PzCjYb5kJrg/jCwjP2V5tz+cW1uinDK3P4CXmAdT87U/yibyL+nPtD+AuxvbanOzP+SbC/CY5LE/doYEj9Y6sD/YPSNrZVytPzRXMxGTE6o/KE7keyKRpj94dfqOyg2jPwhjoekgwp4/EHe65+Y1lz8AWbF6JtWOP+DXzhh6WH0/gOymWG6JRr8wBJaCxWWBv4Cw9Fr9jJG/uMMjFNfsmb8UmWlVc8agv570AGRRJqW/HoQp9RjyqL+ib9WBhBisvwLhgFXHrq6/NM2x8Oz4sL+VUDeyYUGyvxCjbCyBN7O/Yc9NkU68tL8qw/+Mhda1vzLTTJF6i7a/qE1j2kL9tr+aj8+l2y24vxySigswELm/l08IcNylub+rx2xUz1C7v5bk8/Gel7y//9FOMPmMvb+M44XxwOG/v/LszR+S58C/9JO9wnKwwb9p9UxQ6FHCv7ANC1AbkMO/uCep0pebxL9onk+/JXbFv2c2raIi9Ma/WUtn9fk3yL8WMoOZOUXJv3R2Ia47HMq/nn1iigSEy7+I/W4lmqrMv/q/4g81lM2/ihO3mSYSz7/KsupNDSPQv//SCe2pmtC/Vt7XtKBb0b+PM8NntfPRv1xGlCTFZdK/Xd0oL/m00r9IbewUIEnTv5jkW2OotdO/igDbu2T8078OvvONEInUv0VQ9XPU59S/qDwNh1gY1b+FxwA1pB7Vv9T8KWJkXtW/KoFyhLtn1b+DhlNAo0DVv3RQtBhAVtW/QAxvBvw21b+/rAaWyuXUv5UYXb7H1NS/RsLigwmM1L+EZ3KuYhLUv04Ksb6tZ9O/sZ0d2Pj30r8Zg7O13VjSvxxXx/FmkdG/lguyRSEM0b8HR1C8xGbQvyRLvbVrQc+/BGR2/95yzb85lnXynxLMv95yLdAbccq/UPWpdb2YyL8Rgn9qqTjHv5wGS9xFpMW/6mHsgivow79s7KEkoavCvw==", "dtype": "f8" }, "yaxis": "y3" @@ -3541,7 +3547,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "2Q6VV+Cha0BsXjaZOaFrQAgs/DeToGtA23c8K+2fa0DIxhJ6R59rQNnTlS+inmtA5TOqTv2da0DAVwzfWJ1rQH7wkPi0nGtAk8/UqRGca0APLLIGb5trQKPUmzPNmmtAg49sTCyaa0AO7qZxjJlrQLEjmNLtmGtAlMLQoFCYa0CsuQkItZdrQF3bGDgbl2tA9fjwaoOWa0BWBInV7ZVrQHDiErBalWtA6QPhOcqUa0BamPKxPJRrQAqlRFSyk2tAZQLVXiuTa0BL7JASqJJrQExmBK4okmtA+DKsb62Ra0AQGMiUNpFrQDKkalfEkGtALdFM8FaQa0DzywSV7o9rQOpHEneLj2tAcOMNxC2Pa0A3JSqm1Y5rQFy/QUSDjmtA4RXBvjaOa0BBJx0y8I1rQChK47mvjWtAn9hbbnWNa0DXsENfQY1rQMtxvZkTjWtAeXVILuyMa0Adrygjy4xrQAuu4XuwjGtAyyXhQJyMa0ALBidnjoxrQF6nEuKGjGtAexscs4WMa0Csrw3ZioxrQCzpkDyWjGtAAIrJw6eMa0CbnaNnv4xrQFDYiwPdjGtAFTtDcwCNa0DK/IKuKY1rQKBIkatYjWtAX+PYQI2Na0CaojJHx41rQON9ZroGjmtAkftVa0uOa0DHnusslY5rQEAPG//jjmtAWx0zrjePa0AYBkMJkI9rQA7qGRXtj2tAoqqV1k6Qa0BxZ5MWtZBrQOrzOqIfkWtA9cj6iI6Ra0BGUeSVAZJrQMChgJh4kmtAw0ijrPOSa0DanALwcpNrQG1gdDn2k2tA95w4ZX2Ua0CzIiebCJVrQAOznruXlWtAu/8XqyqWa0CNR9yYwZZrQATmyG1cl2tATXeHFfuXa0CgPRLFnZhrQM3G+rFEmWtAHzYfzu+Za0CyNmQNn5prQFGvc6pSm2tApyPpmwqca0B8n3rZxpxrQCvKHqCHnWtA44EgLE2ea0D1azR3F59rQGLUK3zmn2tAheVKebqga0BIhMFok6FrQG4am0RxomtAPAyzSlSja0CDp+dzPKRrQK8Oh7YppWtAJ4ZNTRyma0CI9cR1FKdrQA+Sa9npfGtAHK2CqyF9a0BLZIlOXX1rQJ1BDsGcfWtARc6HBOB9a0DJAhhAJ35rQIBMOJxyfmtAV2J+HMJ+a0AFRXbBFX9rQDZzl65tf2tAGZbe4sl/a0DhPD9bKoBrQDnZhjSPgGtAnENUZfiAa0Bm+MXiZYFrQMc8ZsLXgWtAhzOKE06Ca0DX7JvCyIJrQOzkPbtHg2tAswY1BMuDa0DfcD6EUoRrQMJueSDehGtAlSqr2G2Fa0Ad0X2oAYZrQKxPRHKZhmtAX5vUGDWHa0AQMtKS1IdrQNDI/sJ3iGtAg+67jR6Ja0AcRy7qyIlrQKbJt792imtAg4qD9ieLa0CYF++H3ItrQFMZwmuUjGtAOqUBj0+Na0CfCCDiDY5rQJv33GDPjmtA+PZN/pOPa0Dy57SuW5BrQBj54nAmkWtABNzVQvSRa0CNkf8cxZJrQEBTnPuYk2tAs21i32+Ua0DnPu/GSZVrQIdUBbImlmtA2hcSowaXa0DRhaif6ZdrQJAkZqvPmGtAu6WUyriZa0DUSfMApZprQI0CQVeUm2tA1QqF2Iaca0AQ+qCIfJ1rQMvXmHV1nmtAPLXOq3Gfa0B1go4ucaBrQLeK1f9zoWtAkGBkLHqia0DdaADFg6NrQNxBbsuQpGtAehd5TqGla0Dqbu9ZtaZrQIC2YenMp2tAmOVFCeioa0CKE5DABqprQKD1XQcpq2tAz/Gr1U6sa0AAJGUyeK1rQFN8pySlrmtA6jVpotWva0BT37yyCbFrQA4NrVdBsmtAdbwOhHyza0DnBJAvu7RrQAnpZWD9tWtA3+jhHUO3a0Bt265hjLhrQMJZnzbZuWtAHIYhpim7a0Co+SmrfbxrQErBuFLVvWtA+3JjpjC/a0CeRIWej8BrQGmzRTXywWtA1qoocljDa0BLAy9awsRrQHf/6+MvxmtAsnUWFKHHa0AotpPuFclrQI1KtGiOymtAIIf0eArMa0BeBtsiis1rQOb1x2YNz2tAe0ZbOZTQa0D+WQSbHtJrQLQ/84qs02tAnSME/D3Va0AcpHXq0tZrQE7EcVRr2GtAdkRyHhoza0Ci33WM9zJrQFsLCSjWMmtA+foP6rUya0C96gvPljJrQN3l4s54MmtAPvg44lsya0DieP4GQDJrQLT1IDwlMmtANTLvewsya0B2Uf7A8jFrQFm84QzbMWtAS9/yWsQxa0DvEjCnrjFrQG0o9/SZMWtANWvPP4Yxa0AwzSKFczFrQEDuOsthMWtA160bGVExa0CO8zFvQTFrQPUkJdAyMWtAOoLs0Rgxa0AHNKp4DTFrQGii0kEDMWtAEzIWNPowa0Dad7NO8jBrQG/4vZDrMGtAJmH7AOYwa0CFWSCd4TBrQFoK82LeMGtAHozOWNwwa0ADdid72zBrQHkVoMbbMGtA8HumQN0wa0BEHxvu3zBrQFkh08njMGtAC+LWzugwa0CA3wgC7zBrQG7J9l72MGtA2FKa4f4wa0BMZH6PCDFrQC0TZG4TMWtAbNCceR8xa0DnaiCsLDFrQE7RIgs7MWtAHsHYkEoxa0B9BZ03WzFrQH/tTgNtMWtAtow+6n8xa0DV71PhkzFrQKjGR+ioMWtA51AR/74xa0BStZMb1jFrQPmhXzPuMWtAXHoTRgcya0Cd7sxKITJrQA8/9zg8MmtAIh83EVgya0ATof/UdDJrQPPZxn2SMmtAE2XGBLEya0A2j1Jr0DJrQOul0KvwMmtAoyFAwREza0C2aOOtMzNrQFMNTW1WM2tADzw9+3kza0CFmXRanjNrQNAOL43DM2tAwV68jukza0ABKGJZEDRrQNE2huw3NGtAJ0/BQ2A0a0BKdPFaiTRrQGCwdTGzNGtAtt1Xxt00a0AAxngVCTVrQA41iBs1NWtAqUgj2WE1a0CODw9MjzVrQKc9b3G9NWtA3aBDSew1a0BU2w/RGzZrQHk7TwVMNmtAma1S5Xw2a0AgCulwrjZrQDUPyaTgNmtAT1hufRM3a0CGDuT5RjdrQM+JIRd7N2tASFpI0q83a0At/Qkq5TdrQJiqXR0bOGtAuwowqlE4a0AGl4HOiDhrQLgjRYrAOGtAiySO3Pg4a0CZ0D7EMTlrQPJzikFrOWtAYT9kVaU5a0DRjXN61OFqQF6J6I5t4WpA512N1gbhakC/l4dVoOBqQNPlLRA64GpA7TyIBtTfakBWWWg/bt9qQCD4asEI32pAqxHbjKPeakD/Np+iPt5qQDJDAQza3WpAsztA0nXdakBp+Pb2Ed1qQOhJ84au3GpAjcW9jkvcakBOuZ0Q6dtqQOjGgh2H22pA/VlCxSXbakCc08wIxdpqQIFgBelk2mpAC6uwdwXaakBkq8TFptlqQHvxG9JI2WpAe1bFruvYakDDJkRsj9hqQIdvQQY02GpAFxa9eNnXakD5blLVf9dqQH9tuisn12pApywRdc/WakBuh4fFeNZqQGNNpy4j1mpAPxOEpc7VakAmDUVBe9VqQJpj6hYp1WpA3ooMGdjUakC+/lM7iNRqQG/eeJI51GpAR83IMezTakB+bs8JoNNqQIn1Iy5V02pA5M5ZsAvTakCY6HR9w9JqQCqocYJ80mpAi2APzzbSakCsXp1x8tFqQHlDIFOv0WpAFppKgW3RakCXZqoILdFqQPhBf8/t0GpABMm24K/QakAhOzNGc9BqQBIJVeU30GpA6/zMo/3PakAOjeuKxM9qQHxbb6KMz2pArGH5zFXPakAwQe8RIM9qQE8PEHjrzmpAN2da47fOakBInCo5hc5qQFD+04BTzmpAn5RVwiLOakDy0pbj8s1qQIdipO3DzWpALI0H6ZXNakCi3YG8aM1qQPkud3M8zWpA/OckGBHNakArosyT5sxqQJvXLdK8zGpAjFGE4JPMakA12HLMa8xqQN7kMoJEzGpAkAjNDB7MakBLbihz+MtqQCdp6ZvTy2pAHqRlca/LakBBUjP7i8tqQCgMWkFpy2pAsu4QMEfLakALLtLRJctqQPKS4jAFy2pA1LHBO+XKakAEQF//xcpqQKardoanympATOb2v4nKakBule6dbMpqQAblfytQympAgrTecjTKakDoQe1lGcpqQFptdkTMyWpAaAAx3bPJakAEo4AknMlqQPKESSSFyWpAA+u80G7JakD1kd8yWclqQL9BqlNEyWpA/fX6JzDJakBmerS4HMlqQI6nHJv1jWpAM3g+t4uNakB0qJJqIo1qQF8tEb25jGpAmjohtlGMakBFNPpN6otqQIcHyoyDi2pAnTGoeh2LakAavTMQuIpqQF2+kUZTimpA+KowJu+JakBmwoy3i4lqQKktSfQoiWpAYOTK5caIakDk1FyVZYhqQBrQLP0EiGpAkAezJqWHakCnhi8aRodqQKx0KdDnhmpAhjJ0QYqGakBoihF0LYZqQPAZQm3RhWpAOYixJHaFakBpY3+eG4VqQDamJ97BhGpAswyt2miEakAgorWLEIRqQO4MS/K4g2pAwXeVEGKDakDAkP7gC4NqQOAAo2W2gmpAYyB+oGGCakBeMZOMDYJqQCtuWiy6gWpARg3wgmeBakBZoReOFYFqQCEutUzEgGpAqsoXwnOAakBPnojwI4BqQN8NKtXUf2pAgDhfb4Z/akB3+kO+OH9qQAl3a77rfmpAshyIbJ9+akDk/AbFU35qQE4ZFsQIfmpAfosoZr59akAYW4mldH1qQPV+yXwrfWpARSce6eJ8akCdlXTjmnxqQCFRzWRTfGpAI5SWagx8akBL8J3yxXtqQNtF8PR/e2pAnpT2aTp7akDWhltR9XpqQKUzBqSwempAlATtWmx6akCEmLN2KHpqQK4VYvjkeWpAZeCi16F5akAZ6nUMX3lqQFci0pgceWpAtTDidNp4akAi4TyZmHhqQPRBCQlXeGpAkV4FvRV4akCMJhSu1HdqQMw3lN+Td2pAyq+rVFN3akDFqpYFE3dqQPQWeOrSdmpAzhARBpN2akDYMCFRU3ZqQMHHkMMTdmpAkLHGXtR1akCR+DUklXVqQDlq3wxWdWpAhlXhERd1akBhIjg12HRqQGVV/m2ZdGpAVksNt1p0akC13lsYHHRqQCX5e4bdc2pAGY3O8J5zakBQ05NPYHNqQOnIgpshc2pAmkjJveJyakB63tyeo3JqQKFg1jpkcmpADxy7ZSRyakBm2tz043FqQFrO5umicWpAO7A1SWFxakClcv7rHnFqQPCAC6vbcGpAZnOgi5dwakADlVN6UnBqQOyy118McGpApFuqNb5GakAbsPLyQEZqQAoHCo7CRWpAWodwCENFakDlGZZswkRqQHhbwbJARGpAxorY0L1DakBkDnzUOUNqQH4O6Ly0QmpAq35hhy5CakDHjE5Jp0FqQOzeFiUfQWpAdQIN2YI/akCsPtwhbT5qQADOdwzKPGpA3U70Bj48akDD5sQRsjtqQGj5UDcmO2pA26bogJo6akAroQMVDzpqQI+WWP6DOWpA0TKGRfk4akDof34IbzhqQBNfl13lN2pAfRU1S1w3akCf4sDW0zZqQFlKuxBMNmpAsT9y/sQ1akBQ9ESiPjVqQDn2cAS5NGpAKMcmJzQ0akD40dYIsDNqQBynfawsM2pA7PVKGaoyakCgJZZSKDJqQNAXnFinMWpAS3KrLScxakB8/VPTpzBqQI/SRkcpMGpAr1gZg6svakC6IRx+Li9qQOz8MjSyLmpAcJA5njYuakB/HIytuy1qQCU8Hl5BLWpAkz9Mq8csakDAhD+ETixqQJ2SQefVK2pAmTdm010rakCuiPE25ipqQCxr+P5uKmpAZmYsKvgpakCi6y21gSlqQBoBLYoLKWpAh3evqJUoakA68qUQIChqQChSh6uqJ2pA+Pc6YzUnakDrHxA7wCZqQA5fZzRLJmpA5BjxONYlakCwAuxMYSVqQITfD3XsJGpAAt9vnHckakAGVGDLAiRqQNsw8wuOI2pAtPA1SxkjakDSFXN2pCJqQFR8CZsvImpAiVvRxrohakAywvDpRSFqQHtgkhjRIGpAuhrFZ1wgakDcVCDL5x9qQMKaIzhzH2pAU1JPzP4eakBQCuWkih5qQF0UWLkWHmpAIM34LaMdakCioMwmMB1qQKajh529HGpA+vZNvEscakD67BOr2htqQLL6HWJqG2pAnFZ02voaakBf4x4+jBpqQAfW1bMeGmpA/lEAL7IZakDbidPWRhlqQDP1u9DcGGpAzex6D3QYakAcpmSGDBhqQE7hlFamF2pA7WEuoEEXakAZ53FS3hZqQEj8YYl8FmpAHYJQWhwWakCPe6arvRVqQEP4CZZgFWpAeUHzLwUVakDXn1ZD4e9pQAGP9/Jc72lALc9lMtruaUAh+m4QWe5pQPefCXHZ7WlAG4NaXFvtaUBX3dvX3uxpQDNtWMNj7GlAVzHL/+nraUClCvyPcetpQJOUeHf66mlAZRctloTqaUB2eL3pD+ppQJsG4XCc6WlAKj+5DSrpaUB8+VK/uOhpQJ0mhINI6GlA9amAPdnnaUBfry/SaudpQHBWuDz95mlAh2paeJDmaUAQB4prJOZpQOCypg+55WlA7hBRXk7laUC5AGZA5ORpQFDlZKB65GlAt3bxdRHkaUBZGxC5qONpQMB0wFZA42lA1TimRtjiaUAdFjGBcOJpQDIBjPcI4mlA6fDtoKHhaUB+neZ1OuFpQK7lhGzT4GlAakEnfmzgaUDBxd6kBeBpQOEcu9ue32lA6rAsITjfaUBsrJdw0d5pQJJGcsZq3mlAT9WuIwTeaUARHwqLnd1pQHgz9vg23WlAS5R1adDcaUCKDHziadxpQDJwe2AD3GlAnjFU4JzbaUDSwDWcadppQEYrw0ED2mlA3SZd/pzZaUBoL+XPNtlpQKhL1LPQ2GlAxi38tmrYaUC830LWBNhpQAt00g+f12lAw8DncTnXaUCr3XEL1NZpQENYANpu1mlAEIU42QnWaUBOu8kXpdVpQA2+oJRA1WlAYofeTdzUaUAI5fxReNRpQLjkRaAU1GlAamKjN7HTaUCS+fUlTtNpQF2/dnnr0mlAT1OJMInSaUDC7KBIJ9JpQCmyLM7F0WlApGeJv2TRaUAW+eIZBNFpQNRMjOej0GlA3lHhMkTQaUAHJq345M9pQM0ihzWGz2lAiSJU8ifPaUAMOoErys5pQJRyytxszmlAqdEYDRDOaUDULyO5s81pQKTEo9xXzWlAEZupfPzMaUBo6cSdocxpQBA00zxHzGlA0s9bV+3LaUBK2I/yk8tpQAqDMQ07y2lAI8FMpeLKaUB+wVq+isppQB4V9VozymlAdog3eNzJaUCk7u8ShslpQNuUwiswyWlAuepEwNrIaUBtUmfNhchpQMzW1VExyGlAnpgGSt3HaUCPF1iyicdpQOHzq47Wp2lAABp6cF+naUArF+666KZpQPcP/mtypmlAvX9ZgPylaUCf2cT2hqVpQChxq80RpWlAgY5uAJ2kaUCMJfmJKKRpQJUsIWm0o2lAOd3onECjaUA8uJMgzaJpQOJwePRZomlA/lFlGOehaUB/UmiGdKFpQCbItD0CoWlAVP5APZCgaUDHZgh+HqBpQLmZr/isn2lArf48qzufaUAWupaTyp5pQJm0JqpZnmlAnwZ77OidaUBn1+RXeJ1pQBQF4+MHnWlAST2rh5ecaUBb+tA/J5xpQPsGOQm3m2lAlDpE3EabaUCj3FS21pppQLIzlJVmmmlAoDkXdPaZaUB5EXhPhplpQK+N4SUWmWlAtn9s8qWYaUC3uomwNZhpQK6Mul7Fl2lAYr0V+1SXaUAL5kCB5JZpQDYQkPBzlmlAfSrLSAOWaUCio2uHkpVpQJrIgaohlWlA9xoBsrCUaUCBZVmeP5RpQN6Bi2/Ok2lAxdzZJV2TaUACYPDB65JpQDpVHUV6kmlAoJWYsAiSaUDTAv4Fl5FpQA27tkclkWlArPYhebOQaUCdViSdQZBpQAmec7fPj2lAEKPAzV2PaUDqIazj645pQBh4VPx5jmlAw8COHAiOaUAJNDNJlo1pQIpPSYEkjWlAYkVaw7KMaUBmPVETQYxpQGaJVnDPi2lAihbZ2F2LaUAZv/FP7IppQFC1ztR6imlA4OYDZgmKaUCs7VAGmIlpQEQHzbgmiWlAa3yYe7WIaUDxPahMRIhpQM3y5S7Th2lA2vUSIGKHaUBHgrcd8YZpQHrx0iqAhmlAlK2uSg+GaUDSSPl6noVpQGJ0a7kthWlAnEaECb2EaUAWkrBpTIRpQApWGNjbg2lAfndQWGuDaUBKUDHp+oJpQD/9DomKgmlAbPqyOhqCaUAo8+gAqoFpQJo5ftk5gWlAFg9BwsmAaUAjEW++WYBpQPtG3szpf2lAjTFw7Hl/aUBJ8P8gCn9pQFkCnm+afmlA3f712ip+aUAiW4pmu31pQGm4FxpMfWlAe96V+dx8aUDgEccIbnxpQH2e/07/e2lA3CewpQdeaUAkEnp/d11pQIjQh5/nXGlATvszDFhcaUDzu1HIyFtpQErcVNY5W2lAQh8qO6taaUDlotT3HFppQDoofQyPWWlADXuNewFZaUA6q8NGdFhpQCi8Cm3nV2lA2Pkq7VpXaUD2mRHIzlZpQK0kmvxCVmlADakBibdVaUBlUX1sLFVpQHIpU6WhVGlAYCIeMhdUaUDY6WkRjVNpQO0Hc0ADU2lAWj8fvXlSaUDlOCqG8FFpQKMZHppnUWlATMrL+N5QaUCgZEqhVlBpQB9+WJHOT2lAAbOsx0ZPaUBYEq5Gv05pQHc4dxA4TmlA0Oz8IrFNaUCiv5mBKk1pQC9MbDCkTGlA59BqLh5MaUBweJGCmEtpQHlagDMTS2lAueRVPo5KaUBqgSigCUppQA+kbGGFSWlAayYCigFJaUC4zx0XfkhpQKfakBL7R2lADI02hXhHaUCxqPJq9kZpQLse5750RmlAklMtiPNFaUDvDGzMckVpQBwG8oLyRGlAyOfVsXJEaUC9Ey9e80NpQPmK0H10Q2lAJsrhF/ZCaUCBKFsyeEJpQLi0IcP6QWlAybQswn1BaUDfEu84AUFpQMQP2TCFQGlA8Gd+owlAaUDdt+6djj9pQPS6GC0UP2lAO0bAS5o+aUCyNqL0ID5pQG3wdDWoPWlARpfHGzA9aUBQW52huDxpQF805NFBPGlAEsHTtss7aUAYkoxHVjtpQB8Z7YnhOmlAGpAxg206aUAhcgAo+jlpQOsTnmyHOWlA6H9XUxU5aUC5LeTdozhpQLAnLP8yOGlAhBTLtsI3aUDegRIEUzdpQNSFr9njNmlAxXMaK3U2aUAQEv/2BjZpQI8SoDuZNWlAbyud7Cs1aUBwAT4IvzRpQDQdsoxSNGlAxWGobuYzaUDvntWrejNpQE6nrUEPM2lAladPJaQyaUCWJ9FMOTJpQL/rVrTOMWlAHJjrV2QxaUATSHQu+jBpQKmy2TKQMGlA1OpPYCYwaUCzlyWvvC9pQLnimRhTL2lA3H74l+kuaUDREz4pgC5pQHR35ccWLmlAisV3b60taUBrY+lpyA9pQFOVCjU9D2lAqIazALIOaUBEpZ/IJg5pQJ2TEoybDWlAkFd3SxANaUBlrqkChQxpQPn04a35C2lA7R+IT24LaUBq2rzj4gppQLzsXGZXCmlAWZAs28sJaUB6zntHQAlpQGKjrKe0CGlA1bsQ9ygIaUCglfA4nQdpQJb7HWcRB2lA60aafoUGaUBy/RqI+QVpQDySkYBtBWlA8wmFZeEEaUABo+hAVQRpQBuVpRzJA2lAZMQq9TwDaUDJfELIsAJpQFc3/6AkAmlAhX8vepgBaUALxENODAFpQEWwkyWAAGlAs1SKB/T/aEBqGhTtZ/9oQBtVAs/b/mhAKuoFtU/+aEAYg3OWw/1oQERL/Wg3/WhAQ7bWMav8aEBVo+rmHvxoQE9funyS+2hAzjyu9gX7aEDPFz1ZefpoQLTAG5rs+WhAOg48r1/5aECEKwye0vhoQOFMo19F+GhAfe1g7bf3aECa/05OKvdoQEa4LIqc9mhA/YtJnA72aEBq0p6AgPVoQG0cGUHy9GhAipst3mP0aEDcXClY1fNoQJfgxbpG82hAoxNvCrjyaECPWoFLKfJoQOM+YIua8WhAUT7N2AvxaEDocRE+ffBoQFU9JMXu72hAI8+ffWDvaEAZmTN10u5oQB+4mbhE7mhAkH9pVrftaEA4wbBeKu1oQA5nuN6d7GhA9L5n5RHsaEDgtHOFhutoQJS3Ps/76mhAbbZA03HqaEBrrwOj6OloQEZEZlBg6WhA6lCY7NjoaEDrq+CHUuhoQObvpzLN52hAFW1S/EjnaEBiod7xxeZoQN4NKx5E5mhAFFn8icPlaEBJqeI7ROVoQCmKMTfG5GhAM5iTfEnkaED9ucIMzuNoQLJ/nuZT42hAeEj/BNviaECeC51hY+JoQFKMvfPs4WhABsOxrnfhaEDOZVCEA+FoQA==", "dtype": "f8" }, "yaxis": "y" @@ -3561,7 +3567,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -3579,7 +3585,7 @@ }, "xaxis": "x", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" @@ -3616,7 +3622,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -3636,7 +3642,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -3654,7 +3660,7 @@ }, "xaxis": "x2", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y2" @@ -3691,7 +3697,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -3711,7 +3717,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -3729,7 +3735,7 @@ }, "xaxis": "x3", "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" @@ -4682,4 +4688,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/python/gtsam/examples/Gal3ImuExample.ipynb b/python/gtsam/examples/Gal3ImuExample.ipynb index 907559a492..5ccfa30a83 100644 --- a/python/gtsam/examples/Gal3ImuExample.ipynb +++ b/python/gtsam/examples/Gal3ImuExample.ipynb @@ -24,7 +24,13 @@ ] }, "source": [ - "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\nAtlanta, Georgia 30332-0415\nAll Rights Reserved\n\nAuthors: Frank Dellaert, et al. (see THANKS for the full author list)\n\nSee LICENSE for the license information" + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" ] }, { @@ -1786,7 +1792,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "uP+HFlceQkDKBOpiWp5CQCRwS69dHkNAyUGs+2CeQ0C3eQxIZB5EQO8XbJRnnkRAchzL4GoeRUA/hyktbp5FQFhYh3lxHkZAvY/kxXSeRkBsLUESeB5HQGgxnV57nkdAsZv4qn4eSEBGbFP3gZ5IQCqjrUOFHklAWUAHkIieSUDYQ2Dcix5KQKStuCiPnkpAvH0QdZIeS0AmtGfBlZ5LQN5Qvg2ZHkxA5VMUWpyeTEA8vWmmnx5NQOSMvvKink1A28ISP6YeTkAiX2aLqZ5OQLxhudesHk9AqMoLJLCeT0DyzC64WQ9QQLlnV15bT1BAqrV/BF2PUEAm7joJjP5LQNGPNHiNlkxAjhFr2kAvTUBio0+MmshNQIasUumOYk5AuK32UxL9TkDP3Ss9GZhPQBgFfBXMGVBA8RY438FnUEDZXYVc6LVQQCpkqQA6BFFAhpCCU7FSUUBBeVDzSKFRQJ79Opb771FAhTOdC8Q+UkBCMhk9nY1SQFaqeS+C3FJA0RJmA24rU0DJAe71W3pTQOUJ8GBHyVNAtjVguysYVECG9HGZBGdUQIUFqazNtVRAF6fUw4IEVUAoCvjKH1NVQPLEIsugoVVAkr876gHwVUAV1sBqPz5WQFgxfatVjFZA5iA4J0HaVkAosACBLUdVQIbWYhylolVAivw5A7n9VUDTni/2ZVhWQNs78NSoslZAjjw/nH4MV0DVKkZk5GVXQBaqF1/XvldA2a9f11QXWECKXTsvWm9YQHadM9/kxlhAZkpWdfIdWUB6NmqUgHRZQGDfOvOMyllACwb5WxUgWkD9ua2rF3VaQKq1vdGRyVpAWix7z4EdW0AoZMS35XBbQNaora67w1tAUlA16QEWXECMrwCttmdcQOf/IFDYuFxAclLfOGUJXUDEx47dW1ldQKVZZMS6qF1AfJdTg4D3XUDAx++/q0VeQArwUC87k15AHFP8lS3gXkBm/hOvdOZcQPXIa5cnNF1AOn2mbWGBXUCUUQYZIc5dQGUseYtlGl5Am3ibwS1mXkAoyrvCeLFeQMkq36BF/F5A9OvFeJNGX0C23vBxYZBfQJTVpr6u2V9Axyv9TT0RYEAUt+coYjVgQFG9cJlFWWBAV4BkTud8YEB+qwD8RqBgQMsX91tkw2BAwHVwLT/mYEBU1w411whhQCwV8DwsK2FAygqwFD5NYUDzpWqRDG9hQA7GvY2XkGFArejK6d6xYUDroDiL4tJhQLrXM12i82FAfdNwUB4UYkDlBSxbVjRiQC2fKnlKVGJAUOa6q/pzYkC8OWXHJQ5hQDaYBLzwLmFAoLQWwZVPYUAcqK7JFHBhQK2u/MttkGFAeNBOwaCwYUBDbRGmrdBhQC6qz3mU8GFArcEzP1UQYkALNgf87y9iQPzmMrlkT2JAAAu/grNuYkCPDdNn3I1iQC9TtXrfrGJAKOXK0LzLYkA8BpeCdOpiQMCyuqsGCWNAKw70anMnY0DrwB3iukVjQG5JLjbdY2NAz0M3j9qBY0D+q2QYs59jQK0e/P9mvWNA0B1cd/baY0AbXvuyYfhjQHYjaOqoFWRAMbNHWMwyZEB041U6zE9kQFPQZNGobGRA579cYWKJZEBiMMvaqOZjQFlO62deBWRAnDOFXgAkZEAW6kTejkJkQAuvoggKYWRA9YPkAHJ/ZED6+h/sxp1kQNxHPPEIvGRA9J70ODjaZEBM7drtVPhkQM71WjxfFmVAT+G9Ulc0ZUCZUC5hPVJlQJkBvZkRcGVA/BpmMNSNZUCqMxdbhatlQL0utlElyWVAOAcpTrTmZUC+ql6MMgRmQFoGWUqgIWZAXm04yP0+ZkCkh0hIS1xmQNP6Dg+JeWZAlAlcY7eWZkAAbF2O1rNmQEyus9vm0GZAJ26KmejtZkBZ3LMY3ApnQMv3x6zBJ2dAGglIrJlEZ0ChsVm2uelmQOBJNUsbCGdAzEyPeXQmZ0Co6hh3xURnQIDrnnsOY2dA0xYmwU+BZ0C83AqEiZ9nQFKmJAO8vWdAzj/tf+fbZ0BC3qw+DPpnQIdTq4YqGGhAMhZnokI2aEAZ2dLfVFRoQG+GmpBhcmhA6o1wCmmQaEAblGSna65oQIuzRMZpzGhAkqUKy2PqaEC6UlYfWghpQKV29zJNJmlALzOIfD1EaUBZnxp6K2JpQIOP+7EXgGlAfQKNswKeaUC0xToY7btpQGL8i4TX2WlAkDhUqcL3aUBotQZFrxVqQFnuLSWeM2pA+y4JKJBRakD8Gt97R2ZqQMA01fIbhWpAJQiHBPKjakBeGEwsysJqQLZKMuyk4WpANrZQzYIAa0BfcxRgZB9rQHr7gzxKPmtAkOB0AjVda0CQyq5ZJXxrQPi69fEbm2tAcqb0ghm6a0BSjADMHtlrQG9rq5Ms+GtApOgdp0MXbED/US7ZZDZsQMUOLAGRVWxAsa9X+ch0bECU5AGdDZRsQNbDTsZfs2xAwyOfS8DSbECfPKf8L/JsQPQzQJ+vEW1AwikJ7D8xbUAKTvOK4VBtQCij2g+VcG1AA4BR91qQbUAEzcajM7BtQEKvLVsf0G1AuI5IRR7wbUBGzJ1jdA9uQC89QItVL25AsYbVpj9PbkBJpvrRMm9uQH1h3B8vj25ANVr+mjSvbkA/Sh5FQ89uQMFCNBdb725AjeGPAXwPb0BHhBHspS9vQACmfbbYT29A6dLnOBRwb0AgATJEWJBvQJyrnKKksG9AoMhjGPnQb0Arn2RkVfFvQOBJZKDcCHBAYZ/YMRIZcEAeO/E/SylwQPOws6KHOXBATxUYMcdJcEAAK1PBCVpwQLouGylPanBAncPmPZd6cECHuiXV4YpwQHSdc8Qum3BAahDE4X2rcEDlOYkDz7twQNV91AAizHBAhOhxsXbccECOdgYBEupwQNuKPMhB+nBAnO7SsHIKcUCXXvinpBpxQBf83ZrXKnFAC8bCdgs7cUDUE/4oQEtxQEUYCZ91W3FAaHWHxqtrcUBY606N4ntxQK4tbuEZjHFAGewysVGccUAVGy/riaxxQD2KPX7CvHFAnNWFWfvMcUBkv39sNN1xQAr/9aZt7XFAc5II+ab9cUBCnS5T4A1yQNDhN6YZHnJApd5N41IuckCemvT7iz5yQD4pC+LETnJA5+/Lh/1eckAVtMzfNW9yQAR6/txtf3JAeTqtcqWPckDVdX+U3J9yQAKqdTYTsHJAKLDpTEnAckBECcyr3M1yQNT9zbj+3XJAUsx6TyDuckDIIr9pQf5yQKEpuAFiDnNAtbqzEYIec0BEjzCUoS5zQOhl3oPAPnNAViGe295Oc0DM4IGW/F5zQNcSza8Zb3NAOIP0IjZ/c0B2ZJ7rUY9zQK1VogVtn3NAL2UJbYevc0BREA4eob9zQOhAHBW6z3NAv0jRTtLfc0Bt2/vH6e9zQMUGnH0AAHRAJSrjbBYQdEDo7DOTKyB0QBs0Iu4/MHRApBdze1NAdEAF1xw5ZlB0QMXNRiV4YHRArGdJPolwdEDOFK6CmYB0QG49L/GokHRA2DW4iLegdEDX1I6sPa90QPZz0SNCv3RA5kew4EXPdEB3ztrkSN90QGZoKzJL73RAXDanykz/dEC38n2wTQ91QNDHCeZNH3VAeyLPbU0vdUBWgHxKTD91QKM56n5KT3VAPkYaDkhfdUBV/Tf7RG91QHTPl0lBf3VAd/q2/DyPdUDtNjsYOJ91QHhe8p8yr3VAqArSlyy/dUDIK/cDJs91QCOXpege33VAHIxHShfvdUCgL20tD/91QED9y5YGD3ZAcS0+i/0edkAzEMIP9C52QJxbeSnqPnZAf22o3d9OdkCbf7Ux1V52QJ/NJyvKbnZATqymz75+dkC0AhUMEo52QAbeCjEBnnZAEjFjE/CtdkCtIrG63r12QBF2qC7NzXZA+gAcd7vddkBlBfybqe12QMVtVKWX/XZAo+pKm4UNd0Cy8ByGcx13QGOWHW5hLXdAL1CzW089d0DgilVXPU13QFgjimkrXXdASLvimhltd0DP6vnzB313QL9OcH32jHdA3HPpP+Wcd0BonwhE1Kx3QJ51bZLDvHdAGX+wM7PMd0BOjl8wo9x3QKMG+pCT7HdAAAftXYT8d0DoeY+fdQx4QM0NHl5nHHhAPBi3oVkseEA8Z1ZyTDx4QGkE0dc/THhAgu3Q2TNceED4Hk/O4Wt4QA7BoKnSe3hAbJtwGcSLeECKTzomtpt4QPN/Tdioq3hAB//IN5y7eEAk95VMkMt4QKgRYx6F23hAtqKftHrreEDQ33YWcft4QNYny0poC3lA4mIxWGAbeUDpgOxEWSt5QPQd6RZTO3lAvFK5001LeUCguJCASVt5QHSnQCJGa3lAtbM0vUN7eUBIc29VQot5QHWOh+5Bm3lAfSKli0KreUCPen8vRLt5QEwjW9xGy3lAZFwIlErbeUAm6+FXT+t5QBlQzChV+3lA+2A1B1wLekClRxTzYxt6QKjl6etsK3pAiJvB8HY7ekDmsLM8MUt6QNDqPOc2W3pAbRtfZz1rekC62Wi9RHt6QMbTT+lMi3pA5Byx6lWbekBfvNHAX6t6QKJ7n2pqu3pAV/Kx5nXLekCHzkszgtt6QI9WXE6P63pAQiKBNZ37ekBmCAjmqwt7QFU98Vy7G3tAdJ/xlssre0DYLXWQ3Dt7QHKloUXuS3tA6UBZsgBce0Aplz3SE2x7QM2UsqAnfHtAX4zhGDyMe0CPWbw1UZx7QICTAPJmrHtAdso6SH28e0A+zckylMx7QNTy4aur3HtAA2WQrcPse0DKaL4x3Px7QLKhNDL1DHxAQ02eqA4dfECwxrkemix8QMJj/dmrPHxAOA5x1b1MfEBPQMsN0Fx8QHsHs3/ibHxA82bBJ/V8fEDPuIICCI18QBANeAwbnXxA0IUYQi6tfEAPsNKfQb18QG/YDSJVzXxAXlsrxWjdfEA98IeFfO18QPDufF+Q/XxAjY9hT6QNfUC+I4xRuB19QIZJU2LMLX1AHBcPfuA9fUCrPxqh9E19QK8w08cIXn1A1Ced7hxufUAoQeERMX59QIx9Dy5Fjn1ATMGfP1mefUDMyhJDba59QFQh8zSBvn1A5fvVEZXOfUAqIFzWqN59QIq5Mn+87n1AaigUCdD+fUCLgXwSNw5+QA+cxxhCHn5AnvBd4kwufkA33dFuVz5+QFuXxr1hTn5ACDfwzmtefkDzvROidW5+QG0bBzd/fn5AjCyxjYiOfkDxuAmmkZ5+QPJrGYCarn5AQ8r5G6O+fkAiJNV5q85+QOaD5pmz3n5AK5l5fLvufkBNoOohw/5+QIVGporKDn9AVYopt9Eef0CJmAGo2C5/QJWly13fPn9AdMM02eVOf0Dns/ka7F5/QCm35iPybn9AF1fX9Pd+f0CnLraO/Y5/QOStfPICn39AOdoyIQivf0AvC+8bDb9/QIOj1eMRz39Aq8YYehbff0BvIttbju5/QNQkwLyL/n9Ay4NObEQHgEDrh3PZQg+AQGXJkydBF4BAt5d9WD8fgEDUfwhuPSeAQFXgFGo7L4BARHmLTjk3gEBi91wdNz+AQPN6gdg0R4BA8hn4gTJPgEC6XcYbMFeAQA+896ctX4BAoQudKCtngED188ufKG+AQNBYng8md4BAKMExeiN/gEC3uabhIIeAQEEzIEgej4BAp9zCrxuXgED6eLQaGZ+AQKQxG4sWp4BA4uQcAxSvgEC+cN6EEbeAQMv6ghIPv4BA1zQrrgzHgEDtnvRZCs+AQO3G+BcI14BAF+LS1SfQgEA3diEX9NeAQPGNognv34BAdkXRA+rngEAsGqYI5e+AQFjmGRvg94BAMN0kPtv/gEDlf7101geBQLGL18HRD4FAouFiKM0XgUBDaEqryB+BQOnnck3EJ4FAGOK5EcAvgUCdZPT6uzeBQCzZ7Qu4P4FAHNJmR7RHgUA31ROwsE+BQE0lnEitV4FAtYuYE6pfgUBkIpITp2eBQOUfAUukb4FADKZLvKF3gUCTlMRpn3+BQLpgqlWdh4FA9fIlgpuPgUAAjEnxmZeBQDmyD6WYn4FAsChan5engUDO8PDhlq+BQOZXgW6Wt4FAoxGdRpa/gUBL7+wfaceBQCKDeTRmz4FAWteffmPXgUD6rcUAYd+BQC47Pr1e54FAbv5ItlzvgUBOoRDuWveBQP3cqWZZ/4FAvWcSIlgHgkBR6y8iVw+CQKMFz2hWF4JAqlSi91UfgkCwjkHQVSeCQP+nKPRVL4JACge3ZFY3gkDkxy4jVz+CQBIQtDBYR4JAanNMjllPgkDXat48W1eCQJjdMD1dX4JAm73qj19ngkBkt5I1Ym+CQOj1ji5ld4JAkvoke2h/gkC5iXkbbIeCQGyrkA9wj4JAqcBNV3SXgkDIrHPyeJ+CQM0SpeB9p4JAUqZkIYOvgkDaCh7jTbeCQNfh5KtPv4JAUdimq1HHgkD1hBjjU8+CQPHO2VJW14JAFqp1+1jfgkDM3WHdW+eCQAbX/vhe74JAaIWXTmL3gkCuQ2HeZf+CQHrLe6hpB4NAezTxrG0Pg0Dy/rXrcReDQIQpqWR2H4NAMVKUF3sng0BP4isEgC+DQE5FDyqFN4NABirJiIo/g0BPzs8fkEeDQHdUhe6VT4NAViI49JtXg0CFSSMwol+DQFb4bqGoZ4NAFvMwR69vg0AjFW0gtneDQFTZFSy9f4NAMOkMacSHg0B5siPWy4+DQHUCHHLTl4NAdKaoO9ufg0C8t9Ual6eDQOEi+8uar4NAZrDWk563g0BAp4xyor+DQAA8OWimx4NAp4vwdKrPg0Cbmb6YrteDQNpQp9Oy34NAR4imJbfng0AjCrCOu++DQKmerw7A94NAtRmJpcT/g0CEaxhTyQeEQGi0MRfOD4RAdVuh8dIXhEAPKCzi1x+EQEdej+jcJ4RA9t2ABOIvhECHRK815zeEQE0RwnvsP4RAYcxZ1vFHhEDcLxBF90+EQGVTeMf8V4RA7dkeXQJghECIIYoFCGiEQD11OsANcIRAuECqjBN4hEDDRU5qGYCEQGTTlVgfiIRAfv7qViWQhECnJaul25eEQFOdcprdn4RA12Pojt+nhEDPGc+D4a+EQGO26Hnjt4RAyUr2ceW/hECwxbds58eEQLW262rpz4RA8BFPbevXhECw85x07d+EQIZkjoHv54RAox3alPHvhEC4TTSv8/eEQGJeTtH1/4RAObrW+/cHhUCik3gv+g+FQH2s22z8F4VAvh6ktP4fhUAOJnIHASiFQJ7q4WUDMIVAHE2L0AU4hUAUtAFICECFQKra08wKSIVA4qCLXw1QhUB53a0AEFiFQHYxurASYIVAfN0qcBVohUD4mHQ/GHCFQENrBh8beIVAwYZJDx6AhUDmte+V2oeFQBjxM+rZj4VAuR4SQdmXhUBWvR6c2J+FQLJE7fzXp4VAF6IPZdevhUBIsxXW1reFQEzAjFHWv4VAQfT+2NXHhUB71fJt1c+FQCK96hHV14VAkk5kxtTfhUDC7teM1OeFQPM7uGbU74VA8oVxVdT3hUA3R2la1P+FQCaf/XbUB4ZAzs2ErNQPhkBhsUz81BeGQM9FmmfVH4ZAuCap79UnhkAiFKuV1i+GQDV6x1rXN4ZASvwaQNg/hkC3A7dG2UeGQIVSoW/aT4ZAfJrTu9tXhkDCGDss3V+GQFo2uMHeZ4ZAzi0efeBvhkA=", "dtype": "f8" } }, @@ -1804,7 +1810,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1853,7 +1859,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1871,7 +1877,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1887,7 +1893,7 @@ "dtype": "f8" }, "y": { - "bdata": "AAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC43GK0hpWiPBJWoCPuHqM8vInc3demozzNv99JOS2kPOXOCe0HsqQ8LU0jbDk1pTxMTiyMw7alPDyeKDOcNqY8DmnpaLm0pjzlP9RXETGnPJ9rp02aq6c83H07vEokqDxYEUI6GZuoPKiqAYT8D6k8taoOfOuCqTyZRAEs3fOpPJloKMXIYqo8U5Y5oaXPqjxtiP1CazqrPESs+VYRo6s8blgWtI8JrDwOtUFc3m2sPFhJD331z6w8tCFUcM0vrTyCgr+8Xo2tPGMbcBai6K08iK+FX5BBrjynJ6+oIpiuPGcCtTFS7K48pxgAahg+rzw0v2+XF87TPA/rrAOaDtQ8j5ZfCoxN1DxnDvXC6IrUPDawdWSrxtQ8aHDkRc8A1Ty44ZveTznVPBC3qMYocNU8sLght1Wl1TzKJX2K0tjVPN574zybCtY8dp1/7Ks61jzoUczZAGnWPCYY32eWldY8wEawHGnA1jx4c2ChdenWPAMde8K4ENc8tZE2cC821zw1DrG+1lnXPGAPK+are9c81dI+Q6yb1zzcARVX1bnXPISClsck1tc8HGubX5jw1zxZFBcPLgnYPLpGQevjH9g8/n+8Lrg02DyWTbk5qUfYPHW5FpK1WNg8l8Z/49tn2Dyr/bck2dXPPI7ocsnFmdA8rjjAmlNH0TyP6J99iPPRPCDGUwRXntI8N4cP3bFH0zwIrwLTi+/TPP8wYM/XldQ8eLxj2og61TzqnFQckt3VPFwaht7mftY8JUZVjHoe1zwqICS0QLzXPAYBUggtWNg8wDUxYDPy2Dzgufm4R4rZPP78uDZeINo8EqE+JWu02jwVHwb5YkbbPLU/HVA61ts8I1YH8+Vj3DxOK53VWu/cPAKI6ReOeN08zkwCB3X/3TyqBt4dBYTePNLvJQY0Bt88V0wEmfeF3zw5iffvogHgPFNnt4oKP+A8Jtrw0i174DxrmVePYoThPOytVB9hOeI89qrQ4PPs4jxG8f3SDJ/jPIAPhRKeT+Q8HAGa2pn+5DyZCw+G8qvlPG8kZZCaV+Y8n8rZloQB5zy+PnJZo6nnPL0EBLzpT+g8spo6x0r06DxKUJqpuZbpPLwqgLgpN+o8NMEecY7V6jwM/nd523HrPFmxU6EEDOw8i+Ey4/2j7Dwqxz9luzntPARhOnoxze08OI5holRe7jwnnFiMGe3uPCk2CRZ1ee88ytLAJq4B8DxSqOc4YkXwPK6z6nnRh/A8t9aPu/bI8Dx1qFjpzAjxPMTe5whPR/E8Vq5kOniE8TyDAkl4Uj30PCymcgFElPQ8x26/uJrp9Dwci5P2Tz31PHEq4TNdj/U8lMuqCrzf9Tzv94I2Zi72PIhgCZVVe/Y8SVNlJoTG9jzxfr0N7A/3PGD8rJGHV/c8HJS1HFGd9zwkN689Q+H3PGeiNKhYI/g8TyQNNYxj+DxLfJPi2KH4PCTMGdU53vg8bZNKV6oY+TyBrYbaJVH5PKNKQPenh/k8QN1SbSy8+Txs9Fckr+75PPv8+CssH/o83+I9vJ9N+jygjNg1Bnr6PAsrbSJcpPo8g1fXNJ7M+jx1+2tJyfL6PO/7N2baFvs8UKQ7u844+zx8Ig0ZNUsAPS4E6VVIaQA9iMr79BOGAD3og263laEAPVQ+I3jLuwA9b9nfK7PUAD2a03bhSuwAPRAP7sGQAgE9+4ujEIMXAT2XFHArICsBPcTYx4pmPQE9Z/bYwVROAT1N7Kd+6V0BPT/1KYojbAE9V0ldyAF5AT2VQ184g4QBPRBqgPSmjgE9IVdWMmyXAT03gstC0p4BPQLnLJLYpAE99Yk1qH6pAT022RcoxKwBPTrphNCorgE9g4yxeyyvAT0aRlkfT64BPYYWv8wQrAE9NCOssHGoAT1pOGwTcqMBPQcmyFgSnQE9j/f9/1KVAT1X/s0+XuUGPbz3pnga4wY9hj7NzQ3fBj3+tRePONkGPUDe9zCb0QY9tb9wSzbIBj1zEAuaCr0GPY2UxvsYsAY9U7oIc2KhBj0EdIgl6JAGPWNQN1yrfgY9EdQng61qBj2ZFXEp8FQGPXKeDwF1PQY9W5PD3j0kBj3BJuy5TAkGPfpXYKyj7AU9aQJF8kTOBT3eP+DpMq4FPZYhahNwjAU9l8PaEP9oBT1WvrWl4kMFPar60rYdHQU9bOwkSrP0BD05OHyGpsoEPRjJSLP6ngQ931pYOLNxBD11fpKd00IEPUsdsopfEgQ9cIH8xlrgAz1vNucNajYHPeQ6p6pG+wY9/zgmgFi+Bj2H07xOpH8GPVBfK/ouPwY9oEY4if38BT1wsUslFbkFPU56CBp7cwU97Xfi1DQsBT2mI7LkR+MEPVilRfm5mAQ9Uk3v4pBMBD0XhRGS0v4DPRdAqBaFrwM9mPXPn65eAz0xLUp7VQwDPZOn/xSAuAI9Ti2A9jRjAj2xDYDGegwCPeFXU0hYtAE9fdhmW9RaAT1r5rb69f8APWMJRDzEowA9QIWFUEZGAD3OqbMDB8//PF1A6mcGD/885G+bxplM/jznRw1J0If9PDKcsEe5wPw8zq3uSGT3+zw2JJP8F04DPTziT1+H0AI9GxMqKn9RAj2yYQ9FCdEBPeamcbQvTwE94+9+mPzLAD2nWlcsekcAPWmxgYplg/88bM+xo2F1/jyVoIiy/WT9PD/2ufROUvw8mdm71Wo9+zzU8RrtZib6PEB6y/xYDfk81Ol271by9zwebsbWdtX2PKFbqunOtvU8DbaegnWW9Dza8uwdgXTzPBkZ61cIUfI8e2E46yEs8TzAefeu5AXwPNYdDSrPvO08p4NqUINr6zyMU/EUFBjpPB4SO+avwuY8+q7xWYVr5DzojS0pwxLiPGCZoVkwcd88xhzAs2a62jybk36Nu5rqPIs/zI8AzOc8sF0RhGr75Dy5F0ubMSniPCmkQE4cq948jsP6KnEB2TzOG1vY0lXTPC3SyhFlUcs8m1nbNAbqvzzaK39Zil2iPPGNGldmGqu8RrNHfg4kwrxivfFBGYDNvBJG6I3rbNS8RypuujIY2rxxjdL6cMHfvHBI/qUatOK800AhbgeG5bwxBRuKRlbovETttc+fJOu88gmfOtvw7bziM2J4YF3wvO8CWKMMwfG8PJXvYVYj87wf34oTIoT0vCGsVjVU4/W8MNJvZNFA97xL5wVgfpz4vOxOewtA9vm84HSCcPtN+7z4rqjpOxzyvBLB/vlinvO85lHtZAIf9bxW+UQs/J32vIxyt3IyG/i8dcorfoeW+bxfzw+63Q/7vHGTprkXh/y8/9NTOhj8/bzSF+Qlwm7/vHeraEp8bwC9Rv9BaE8mAb0dEsgqzNsBvbhd92rkjwK9slCZHYpCA71ZqVxUr/MDvcGP6z5GowS9Qln/K0FRBb3233GKkv0FvdVYTOosqAa9Y5PT/QJRB73yjZGaB/gHvc9JXLotnQi93spZfGhACb1ILgEmq+EJvVDEGCTpgAq9ZxmxCxYeC73p2hybJbkLvUqE5boLUgy9esG8frzoDL3jYZ0FFjIDvZ5VghiB3QO9PNv8mV+HBL13KfhKpC8FvcaMVAxC1gW9NVnt3yt7Br3fSZzpVB4Hvcg5OnCwvwe9ECKd3jFfCL3GSZPEzPwIvZ2T29d0mAm9T9Ya9R0yCr1xLM4gvMkKveQoOohDXwu9KN1WgqjyC71Fn7iQ34MMvQJ9dWDdEg29pkoHy5afDb2JOyrXACoOvSnzt7kQsg69qP1+1rs3D73fnhbB97oPvcdz1x7dHRC9OIDuoPxcEL2YzbF61ZoQvdy8e9li1xC9OP5/BKASEb1A1CldiEwRvaRLeF8XhRG9Y2BYoki8Eb1dVErrPTYCvTHEBKMXvgK9IkPoMntEA72f7ikgXskDvatT/Q22TAS9akxjvnjOBL3KdvYSnE4FvVY0tQ0WzQW9ayPJ0dxJBr1SAkyk5sQGvdHsCe0pPge9GeVAN521B70emV0yNysIvaRVtbLungi9exg9sroQCb2osz1RkoAJvWzzBNds7gm9XLmTskFaCr3z/kh7CMQKvUmyifG4Kwu93l9l/0qRC72PnDe5tvQLvUAjRl70VQy9vplbWfy0DL3p8F5BxxENvUpU59lNbA29h53ME4nEDb19QLQNchoOvfSkmhQCbg69U+NYpDK/Dr0bTMWcox/QvAUwc1fRNdS8aXy4nWtK2LwTzEj6IF3cvED/0w7QNuC8prRA8ss94rwizP2uW0PkvMgOBOlWR+a8I3rXY5VJ6Ly8e6oF70nqvFB4fto7SOy8PmBBF1RE7ryCCXQOCB/wvOepwj2kGvG8toiu+uoU8rwv4vnAyA3zvNzSjCgqBfS8IsH45vv69LysdvnQKu/1vLHL89uj4fa8PMZxH1TS97zND5zWKMH4vO6jsGEPrvm8dZp2R/WY+ryE8K42yIH7vH8zggd2aPy8b/HqvOxM/bya0hyGGi/+vEJA6L/tDv+83nwa9lTs/7wbRZqm2Aj8PAwmlrgcefo8SRvBT1Dn+DyWQivBklP3PCM7qYgDvvU88KNfRsIm9DxRxUu87o3yPL+Wycuo8/A86qQu5iCw7jzTkK2Vi3brPAdFGQfSOug86Zc7xjT95DyvW5aE9L3hPGHNryik+tw8yB6axhx31jwyBETXqePPPFU47Yad1sI8T1bKlGQgpzyKAVeeehutvPuQFTBFVcS80Eol6Aqx0Lw/z+wBJjbXvK+fL71xud28xRvvCjYd4rwTYRebSVzlvLR+XsCymei8UttSzTDV67zei846gw7vvNu+f9a0IvG85R82/NG88ry2fJaFykb2PAizq2TjzPM8jbgK/nBR8TxW2SC+SantPJiEHmBhreg8EeLfYIyv4zzdZUHLXGDdPBCog2RWX9M8Zo8Ghpq5wjx7AFiz2M6EvFWpPKZbU8W8nX5SBBCs1LzHlpuI1azevIkUxlebVeS8NKo7/DVT6by2uP8Q107uvFbyZ44NpPG8vQnMak8f9LzmQhiU/5j2vOXUC6DsEPm8R4WTR+WG+7yOYaFquPr9vNy2AIoaNgC9qX2VPpVtAb16LgcJtKMCvQVVb7pe2AO9wKPrQH0LBb33dH6p9zwGvSjj7CG2bAe9W1Oa+qCaCL27lwtVSbjhvPFWr1fhr+e8K9SvfaCl7bzca1zmh8zxvB6ATjzcxPS8AKdM9pG797z1LUrqbbD6vNVGLBM1o/28tB6yStZJAL3JN8PhzMABvTfWbhFhNgO9iE/9t3WqBL3sdJ/R7RwGvdnLsXqsjQe9ckT98ZT8CL24QPWaimkKvcu/8v9w1Au9rIBs1Cs9Db0v8Cv3nqMOvQ1bPzrXAxC9x1oyRJ+0EL21Kl3QGWQRvZJyry85EhK9uXkrzu++Er0INvUzMGoTvRopXwbtExS9Dvf0CBm8FL3eoYMep2IVvdRUH0qKBxa9l6smsLWqFr1p3sOPS94IvU6G6y1+cQq9mLpc6aACDL3MnUJ6lJENvaXmYsQ5Hg+9lnbF7DhUEL11kPz9DhgRvQVcYdCP2hG907MaOaybEr3KehopVVsTvUg6Sq57GRS98H219BDWFL3u1bFHBpEVvZZoBBNNSha9kvwE5NYBF73IZL5qlbcXvZA3DHt6axi9+7q1DXgdGb3874VBgM0ZvcWmYFyFexq9jIZUzHknG72U86koUNEbvSG+7jL7eBy9noX+120eHb1Kuwcxm8EdvQcwjYR2Yh69TxlkR/MAH71sea4dBZ0fvbHr6O1PGyC9vRm1w9tmIL2gQllrNScRvWzr+0z74BG9X13KRFyZEr2uXgjySVATvYPC7RC2BRS9Iy3De5K5FL3of/wr0WsVvffWUDtkHBa9+gLQ5D3LFr0SafWFUHgXvb0zuJ+OIxi9VL+Y1+rMGL0yLav4V3QZvbIIn/TIGRq9eunD5DC9Gr27/goLg14bvVNvBdOy/Ru9AHvf0rOaHL0CSVjMeTUdveRQtq34zR29XEq4kiRkHr10kYLF8fcevXrsiL9UiR+9vlA6FSEMIL2yZINwV1IgvYVn+/dHlyC9a4RmS+3aIL0ErlwkQh0hvV7sslZBXiG9NZ/i0OWdIb0PNaeMRfUOvaqoWluPJxC9pPubcjnTEL2OIyypk30RvV3IULaQJhK9PtqJbCPOEr16opi6PnQTvTighKzVGBS96xyebNu7FL0dZH5EQ10VvcCKBZ4A/RW9HrJVBAebFr3hssskSjcXvckc9c+90Re94neD+lVqGL1FtDy+BgEZvZW16FrElRm90+c7N4MoGr0Sy77hN7kavSNkshHXRxu9VYDxp1XUG727us6vqF4cvawx71/F5hy9atshG6FsHb0oaTNxMfAdveenvh9scR698k75EkfwHr31K31muGwfvQOdDWa25h+9lqQsxxsvIL1fElt2Wt8HvWA+fkVqVgm9qpj4RIDLCr0pjOlcfz4MvUHCJp9Krw29Y6t9ScUdD73szPhj6UQQvQohe1ur+RC9BjrTchqtEb2wcPurKF8SvTliciTIDxO9cx5QFuu+E70gG1nZg2wUveDWDuSEGBW9hBa+zODCFb2sp4pKimsWvc2TeDZ0Ehe9+K5yjJG3F73lbU5s1VoYvfbuzBoz/Bi9PCKZAp6bGb2a/EK1CTkavXGiN+xp1Bq9hXa2ibJtG733+cKZ1wQcvXNqE1PNmRy9DAz8F4gsHb1NDFd3/LwdvYLsaC0fSx69aWHBJOXWHr0JNmFF6G4Lve0BrZUPvwy9YajFCfkMDr0EatGXilgPvXsfXzLVUBC9Uv8iYx/0EL3GXHciF5YRvW6OA8+vNhK9OFzP4tzVEr3X/zz0kXMTvTXvALfCDxS9j10X/WKqFL0OYLe3ZkMVvf6iQ/jB2hW9uZw48WhwFr3jKxj3TwQXvWSOUoFrlhe9HJ8sK7AmGL1PSKO0ErUYvQoZTAOIQRm9++syIwXMGb2CjrRHf1Qavd5WVszr2hq9sJiaNUBfG70859ExcuEbvR8V6Zl3YRy9X+EzckbfHL0RQjTr1FodvQQ9XmIZ1B29Lj/YYgpLHr058wXhJAIOvU/FlzLmYQ+9tLkdhJpfEL0+7F4S+wwRvbEC8z4HuRG9OYZIn7FjEr221GTk7AwTvevN7durtBO9MEUxceFaFL0lIyqugP8Uvf0ig7x8ohW9PBeX5shDFr3moW6YWOMWvWFMu2AfgRe9auvP8RAdGL3BO5YiIbcYvWSkge9DTxm9eAt/e23lGb0Wq+EQknkavZTTTCKmCxu9DYmaS56bG70o6r5SbykcvWZOqCgOtRy9ewoc6m8+Hb15yY/gicUdveJp/4JRSh697E2/drzMHr2RDkuQwEwfvVeBENRTyh+9boCbO7YiIL0=", + "bdata": "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", "dtype": "f8" } }, @@ -1920,7 +1926,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1938,7 +1944,7 @@ "dtype": "f8" }, "y": { - "bdata": "uP+HFlceQsDKBOpiWh5CwCRwS69dHkLAyEGs+2AeQsC3eQxIZB5CwO4XbJRnHkLAcRzL4GoeQsA+hyktbh5CwFhYh3lxHkLAvI/kxXQeQsBrLUESeB5CwGcxnV57HkLAsJv4qn4eQsBGbFP3gR5CwCijrUOFHkLAWEAHkIgeQsDWQ2Dcix5CwKKtuCiPHkLAu30QdZIeQsAltGfBlR5CwNxQvg2ZHkLA5FMUWpweQsA7vWmmnx5CwOOMvvKiHkLA2sISP6YeQsAiX2aLqR5CwLxhudesHkLApsoLJLAeQsDjmV1wsx5CwHHPrry2HkLAUmv/CLoeQsB43i+XJ+M2wF1L+Agy4zbAHvS7ejzjNsC/2HrsRuM2wEn5NF5R4zbAwVXqz1vjNsAu7ppBZuM2wJfCRrNw4zbAAtPtJHvjNsB2H5CWheM2wPinLQiQ4zbAkGzGeZrjNsBGbVrrpOM2wB2q6Vyv4zbAHiN0zrnjNsBO2Pk/xOM2wLXJerHO4zbAWff2ItnjNsBAYW6U4+M2wHEH4QXu4zbA8ulOd/jjNsDLCLjoAuQ2wAFkHFoN5DbAmvt7yxfkNsCfz9Y8IuQ2wBTgLK4s5DbAAS1+HzfkNsBttsqQQeQ2wFx8EgJM5DbA1n5Vc1bkNsBCjbN/l7UdwObXwTsYth3AYWKi9Zi2HcAFSVWtGbcdwB6o2mKatx3A/JsyFhu4HcDjQF3Hm7gdwB6zWnYcuR3A7Q4rI525HcCZcM7NHbodwFv0RHaeuh3AdLaOHB+7HcAf06vAn7sdwJJmnGIgvB3AB41gAqG8HcCuYvifIb0dwLsDZDuivR3AXYyj1CK+HcC+GLdro74dwAzFngAkvx3Abq1ak6S/HcAJ7uojJcAdwP+iT7KlwB3AcuiIPibBHcB/2pbIpsEdwEaVeVAnwh3A3TQx1qfCHcBc1b1ZKMMdwNiSH9uowx3AZYlWWinEHcBy3cQun+ULwPvkz4LD5wvAwrnHrOfpC8DRCbasC+wLwH5/pIIv7gvAa8GcLlPwC8CFcqiwdvILwA0y0Qia9AvAlZsgN732C8AER6A74PgLwJXIWRYD+wvA4LBWxyX9C8DUjKBOSP8LwLrlQKxqAQzAPEFB4IwDDMBjIavqrgUMwJsEiMvQBwzAs2XhgvIJDMDgu8AQFAwMwL56L3U1DgzAUhI3sFYQDMAQ7+DBdxIMwNR5NqqYFAzA7xdBabkWDMAfKwr/2RgMwJYRm2v6GgzA/SX9rhodDMBvvznJOh8MwIcxWrpaIQzAVcxngnojDMDIdwz6GLcAwFJfBN6rugDAPi60/j2+AMBou5hcz8EAwOVYLvhfxQDAxdTw0e/IAMDVeVvqfswAwGQQ6UEN0ADABN8T2ZrTAMBJq1WwJ9cAwIm6J8iz2gDAlNICIT/eAMBzOl+7yeEAwCK7tJdT5QDASqB6ttzoAMDzuCcYZewAwEBYMr3s7wDAH1YQpnPzAMAAEDfT+fYAwIVpG0V/+gDAMc0x/AP+AMAdLe74hwEBwJ0DxDsLBQHA+FMmxY0IAcALq4eVDwwBwPUfWq2QDwHAxVQPDRETAcAcdxi1kBYBwNdA5qUPGgHAtPjo340dAcBUl+P00FP4v4A/YH2iXfi/lwCYEnBn+L8tn0u5OXH4v21fMnb/evi/mB/6TcGE+L8nckdFf474v5W3tWA5mPi/xDfXpO+h+L8XOzUWoqv4vyEjULlQtfi/DYOfkvu++L+lN5Kmosj4vw5/jvlF0vi/JRDyj+Xb+L+fMRJugeX4v7/QO5gZ7/i/1JezEq74+L9aBLbhPgL5v918dwnMC/m/fWYkjlUV+b8/OuFz2x75vwuayr5dKPm/VmX1ctwx+b+nzW6UVzv5v61qPCfPRPm/Ok5cL0NO+b/VF8Wws1f5vy8IZq8gYfm/OBQnL4pq+b8y68K3k730v6u+BRIXyfS/2utDD5TU9L+A8f65CuD0v32Fmxx76/S/vQJiQeX29L8R1X4ySQL1v/viAvqmDfW/c/Xjof4Y9b/EHf0zUCT1v24ZD7qbL/W/OLTAPeE69b9oKJ/IIEb1vzB9HmRaUfW/ZOOZGY5c9b92EFTyu2f1v8KXd/fjcvW/SEIXMgZ+9b+9ZC6rIon1vxc0oWs5lPW/lhg9fEqf9b8//7jlVar1v/eptbBbtfW/H/695VvA9b/YUUeNVsv1v9+3sa9L1vW/G0pIVTvh9b/UckGGJez1v7E0v0oK9/W/YXHPqukB9r+kN7WdnYLzv4RBamPajvO/X9a6hQ+b87/4tuISPafzvy2m8Rhjs/O/aCbMpYG/87/7MizHmMvzv4D1oYqo1/O/Z3eU/bDj87+1T0Itsu/zvxdNwias+/O/ZxwE954H9L+269CqihP0v+kJzE5vH/S/E4Nz70wr9L+GuSCZIzf0v8r7CFjzQvS/ghc+OLxO9L9Q6a5Fflr0v9HpJ4w5ZvS/urdTF+5x9L8+n7vym330v7AeyClDifS/jWjBx+OU9L/e4s/XfaD0vzik/GQRrPS/Ju4xep639L9CpTsiJcP0v/HGx2elzvS/1txmVR/a9L+hydygM0fzvzByjgWWU/O/fMS9f/Bf87/5eYUeQ2zzvzmA0PCNePO/ostaBdGE8797JbJqDJHzv3n1Ni9AnfO/6AYdYWyp87+ASWwOkbXzvyGOAUWuwfO/dD+PEsTN87+YFp6E0tnzvwHMjajZ5fO/h8SVi9nx87/ausU60v3zv2RlBsPDCfS/sBgaMa4V9L93Zp2RkSH0v1O5B/FtLfS/Ue2rW0M59L9R5bjdEUX0v1sdOoPZUPS/BToYWJpc9L/jlBloVGj0vyvG4r4HdPS/lyv3Z7R/9L+ObLluWov0v7H7a975lvS/2pUxwpKi9L83g0uPvX/zvxKI0CH8i/O/adKTDTOY87/mkNtgYqTzv0bHwSmKsPO/vAw1dqq8879DRvlTw8jzv/JcqNDU1PO/XPCy+d7g879DBWHc4ezzv3ew0oXd+PO/Pr4AA9IE9L8dVr1gvxD0v02btKulHPS/zElt8IQo9L89UEk7XTT0v45mhpguQPS/mqE+FPlL9L+7A2m6vFf0v3YK2pZ5Y/S/QDlEtS9v9L+LoTgh33r0vwdoJ+aHhvS/QEdgDyqS9L+3DxOoxZ30v1ElULtaqfS/a/oIVOm09L+AiBB9ccD0v2jGG0Hzy/S/VhzCqm7X9L+X182pvPnzvwvZv6GwBfS/gfEte50R9L+LhcFCgx30v9ed/gRiKfS/xYBEzjk19L/iSM6qCkH0v0V4s6bUTPS/8IjozZdY9L9Dej8sVGT0v5FbaM0JcPS/89PxvLh79L9Yp0kGYYf0vwA5vbQCk/S/SAt6052e9L8LPY5tMqr0v3YE6Y3AtfS/gCdbP0jB9L8KcpeMycz0v6kpM4BE2PS/QX+mJLnj9L9q/kyEJ+/0v7H6ZamP+vS/w/oUnvEF9b+aIWJsTRH1v5yVOh6jHPW/0eVwvfIn9b89bb1TPDP1v0e0vup/PvW/Z9D5i71J9b84swnvhJj0v6GB1/QcpPS/wl8we66v9L+EBPWMObv0v+3u5zS+xvS/HtutfTzS9L8gNc5xtN30v12Jsxsm6fS/EvOrhZH09L+EiOm59v/0v0HFgsJVC/W/SPJyqa4W9b9MjJp4ASL1v/invzlOLfW/Y1SO9pQ49b+p+5i41UP1v67BWIkQT/W/NOEtckVa9b8sB2B8dGX1v12sHrGdcPW/aW2BGcF79b87YYi+3ob1v+FtHKn2kfW/2ZsP4gid9b/vZx1yFaj1v4wT62Ecs/W/rPMHuh2+9b9kvu2CGcn1vwTXAMUP1PW/75iQiADf9b/vkaocEjv1v6ZVso1RRvW/o8qDD4tR9b+3tnmrvlz1v9Vl1mrsZ/W/XwPEVhRz9b/O8VR4Nn71v8sghNhSifW/pWE1gGmU9b9ZujV4ep/1vw63O8mFqvW/Hbrne4u19b+wSsSYi8D1v/9hRiiGy/W/H7fNMnvW9b+TCaXAauH1v39qAtpU7PW/k4QHhzn39b+54sHPGAL2v5I1K7zyDPa/sZcpVMcX9r+y0I+fliL2vyaXHaZgLfa/bNF/byU49r9W1VAD5UL2v9imGGmfTfa/kjVNqFRY9r9ZmVLIBGP2v7xNe9Cvbfa/kmwIyFV49r8NcKrHucD1vysz6T+0y/W/IzhQM6nW9b/45imqmOH1v3z6q6yC7PW/PMj3Qmf39b8nhxp1RgL2vwKVDUsgDfa/nbq2zPQX9r/ubugBxCL2v/MYYvKNLfa/f1DQpVI49r/qHc0jEkP2v6044HPMTfa/7UR/nYFY9r8GEA6oMWP2vwTM3prcbfa/KUoyfYJ49r94NDhWI4P2v0lGDy2/jfa/7YPFCFaY9r9xcVjw56L2v21Itep0rfa//iy5/vy39r/dYTEzgML2v597247+zPa/KJNlGHjX9r89d27W7OH2v2Hdhc9c7Pa/1pEsCsj29r+lXMyENRn2v/qqaR0EJPa/UWUzcs0u9r8D+tOKkTn2vz5P425QRPa/gAHnJQpP9r8CoVK3vln2vyPuhypuZPa/xxTXhhhv9r/B5n7TvXn2vzoVrRdehPa/L2l+WvmO9r8A+/6ij5n2vwNpKvggpPa/Ug3sYK2u9r+aMh/kNLn2vyJIj4i3w/a/7BT4VDXO9r8R6gVQrtj2v0HUVYAi4/a/f8x17JHt9r8X6OSa/Pf2v8WHE5JiAve/MIZj2MMM97+TZSh0IBf3v8J8p2t4Ife/aiMYxcsr97+t3aOGGjb3vwWHZrZkQPe/hHxuWqpK97+S0br6PUv2v8RQGl70Vfa/4wGooKVg9r+GRLrJUWv2v6UJluD4dfa/TQ1v7JqA9r98D2j0N4v2v/kLk//Plfa/TnHxFGOg9r/LVnQ78ar2v7ux/Hl6tfa/rolb1/6/9r/oK1Jafsr2vwRekgn51Pa/xY++627f9r8SDGoH4On2vzMpGWNM9Pa/QnhBBbT+9r/j80n0Fgn3vzcuizZ1E/e/Fn5P0s4d97+cK9PNIyj3v/mbRC90Mve/l3zE/L8897+S7WU8B0f3v42rLvRJUfe/2zgXKohb978DBgvkwWX3v7OZ6Cf3b/e/DbiB+yd6978w+Z6H+2n2v8zM10CjdPa/Vacn7kV/9r/SZrOW44n2vyUej0F8lPa/FUy+9Q+f9r97ETS6nqn2v4lm05UotPa/NE9vj62+9r+8DsutLcn2v3Bamveo0/a/j4uBcx/e9r9k0BUokej2v5hc3Rv+8va/wphPVWb99r8uUdXayQf3v+/jyLIoEve/K25244Ic97/D+Btz2Cb3vzek6WcpMfe/3dMByHU79798WHmZvUX3vySaV+IAUPe/d8GWqD9a979F4CPyeWT3v4QZ38Svbve/vsibJuF497/JqCAdDoP3vwT6J642jfe/8Kdf31qX97/gLJNB4YX2v3KZZ857kPa/dPXqYRGb9r+wihYDoqX2v0Bm07gtsPa/S436ibS69r/qMFV9NsX2vyfhnJmzz/a/Qb975Sva9r8Jr4xnn+T2v4WHWyYO7/a/x0JlKHj59r8ALRh03QP3v88S1A8+Dve/6W7qAZoY97/tlp5Q8SL3v5XnJQJELfe/OfCnHJI397+WnT6m20H3v/hj9qQgTPe/uWjOHmFW978Yq7gZnWD3v3QsmpvUave/6hdLqgd1979Y6ZZLNn/3v7+TPIVgife/H6fuXIaT97+4dVPYp533v7Y4Bf3Ep/e/ZTSS0N2x97/yG9WIGKb2v6jjeweksPa/l37ZoSq79r9HbbZerMX2v2uRy0Qp0Pa/FmDCWqHa9r8ZEzWnFOX2v5PZrjCD7/a/xges/ez59r8bRpoUUgT3v3W/2HuyDve/wk64OQ4Z97/Nq3tUZSP3v2+XV9K3Lfe/+wZzuQU4978OT+cPT0L3v6RNwNuTTPe/lZP8ItRW979mjY3rD2H3v4GrVztHa/e/wIkyGHp1979zFumHqH/3v7m4OZDSife/WHbWNviT97/vGGWBGZ73v6xSf3U2qPe/YOKyGE+y978jt4FwY7z3v1MTYoJzxve/Iq++U3/Q97+Y0DppAcr2vyiH1FF81Pa/powLbfLe9r9I33PBY+n2v2yGklXQ8/a/E8LdLzj+9r+cOb1Wmwj3v8YpitD5Eve/8pGPo1Md97+yYArWqCf3v6ufKW75Mfe/tp4OckU89791Hs3njEb3vxZ6a9XPUPe/k9DiQA5b979BLR8wSGX3v76v/6h9b/e/S7NWsa5597+F9elO24P3v4i8cocDjve/g/ydYCeY97+5fAzgRqL3v/L7UgtirPe/YFT653i297/9nn97i8D3v2JWVMuZyve/Fnne3KPU979gq3i1qd73v5hYclqr6Pe/99MP0ajy978xcb7QQ+32v1FxmqKu9/a/uu0FvRQC9783LWMmdgz3v9scBuXSFve//Hw0/yoh97+EDSZ7fiv3v4y5BF/NNfe/SMLssBdA979F6ex2XUr3vw+aBreeVPe/FxMud9te978bjkq9E2n3v85nNo9Hc/e/+Ea/8nZ9978AQ6btoYf3v9EJoIXIkfe/OQVVwOqb97+0f2GjCKb3v6zIVTQisPe/J1i2eDe697/z8ft1SMT3v1DIkzFVzve/Bp7fsF3Y978S6DX5YeL3v8Du4Q9i7Pe/T+4j+l32978iNzG9VQD4v2xNNF5JCvi/dAhN4jgU+L9Q1I65Sgv3v+3tmf6nFfe/Lxp8ngAg978Gq26fVCr3v6MYnQekNPe/iywl3e4+97/hKxcmNUn3vxUBduh2U/e/9WQ3KrRd978JB0Tx7Gf3v2S1d0Mhcve/yoOhJlF8979N8oOgfIb3v0QT1bajkPe/vLA+b8aa979QcV7P5KT3v3b8xdz+rve/RB77nBS597+q6ncVJsP3vyHgqkszzfe/4Qn3RDzX97+KIbQGQeH3v1iwLpZB6/e/1C+o+D31978PKlczNv/3v1xZZ0sqCfi/oMf5RRoT+L8q7SQoBh34vw7P9PbtJvi/Ih1rt9Ew+L8V7lLISCH3v9dH/jacK/e/rmyoDes197+rdm1SNUD3v7UAXAt7Sve/H1B1PrxU97+ifa3x+F73v6ud6yoxafe/FugJ8GRz979E39VGlH33v592EDW/h/e/gThuwOWR97+Ya5fuB5z3v6M3KMUlpve/usmwST+w97/zd7WBVLr3v5jkrnJlxPe/wCAKInLO979yziiVetj3v0ZCYdF+4ve/hKT+237s97/DEUG6evb3vxu7XXFyAPi/zgV/BmYK+L+OqsR+VRT4vzfUQ99AHvi/MT4HLSgo+L9PUg9tCzL4v01GUqTqO/i/2ji818VF+L/nyCeGEi/3v8Mqb9NfOfe/r3HbkKhD978dunbE7E33v7zYPXQsWPe/OYMgpmdi979eeAFgnmz3v5entqfQdve/zVcJg/6A97/ATbb3J4v3v73xbQtNlfe/ynTUw22f97869YEmiqn3v7+iAjmis/e/7uHWALa99782b3ODxcf3v12BQcbQ0fe/a+ueztfb978qPt6h2uX3vxTpRkXZ7/e/zVoVvtP5978oIXsRygP4v7AIn0S8Dfi/ujudXKoX+L8IYYdelCH4v/q5ZE96K/i/TkAyNFw1+L91w+IROj/4v3oFX+0TSfi/hNeFy+lS+L8=", + "bdata": "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", "dtype": "f8" } }, @@ -1954,7 +1960,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2824,7 +2830,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2842,7 +2848,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2891,7 +2897,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2909,7 +2915,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2925,7 +2931,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2958,7 +2964,7 @@ "dtype": "f8" }, "y": { - "bdata": "D0lIYhM95D97V/tU5nrzP150E++WZQFASMQoHSF5CUDrbuvmXNUQQKPCX2Yo9BRAb8x9F8EVGUBsxy0UtjgdQON0bmQhriBAtzauGfi/IkDXoqE0t9EkQJxkbnhB4yZAgaTK73/0KEDBvz6GXwUrQN42zqfPFS1AIHAfbcElL0Bbg3OLk5owQByBB9z5oTFA6mk9fg2pMkAXM/KAyK8zQEUtQB4ltjRA/zW/sR28NUDicnOxrME2QBn6majMxjdA3TXIM3jLOEAbSf/9qc85QLHVcb5c0zpAi+/NNovWO0ATN+oxMNk8QJYuvoJG2z1Anz2UA8ncPkCm3q3BPDo0QHnf9m354zRAOTvSFVWONUDrJd1NWDk2QAd0dVsL5TZAixMPMXaRN0CIKMpqoD44QLORR0uR7DhAFhC6uE+bOUDznTI64ko6QEa1JvVO+zpA8mUvq5usO0DaKwC4zV48QL55lA/qET1AlOqSPPXFPUAMAuVe83o+QP9XgiroMD9AuPtt5tbnP0DAZfI14U9AQDq23ZJWrEBAQz/1h0wJQUCLzKPbw2ZBQHrHtBy9xEFA7TVbojgjQkCOyUyMNoJCQCMv8MK24UJA/8md97hBQ0AbBfKkPKJDQCtiMA9BA0RAV262RMVkREBDrLdP820wQBMRPKa1AzFA+gMbGI2dMUB/MrT4YzsyQDKMylgk3TJAuERrHLiCM0DABV4MCSw0QG6w0eMA2TRAlbLkWomJNUAv/5MujD02QDvfiCbz9DZA1HksGaivN0D6VFjulG04QKk67aCjLjlA5tSNP77yOUCS3a/szrk6QKfILd6/gztAmjF7XHtQPEBH55fB6x89QKQN2Hf78T1AlE2T+JTGPkCKUMnKop0/QLxY48CHO0BAnYLp3WKpQEC9RXcQWBhBQFA10rBciEFAin76Gmb5QUAQTy2uaWtCQFBCdcxc3kJANURJ2jRSQ0D6zv7lA4k0QAeswPmGNjVAUKOCs+blNUDWYcuWD5c2QJmbWX/uSTdAU1g0lnD+N0Cs5h5Ig7Q4QCmGRD0UbDlAIIP1URElOkC6cVSQaN86QOWC1ioImztAv6p9d95XPEANjrbr2RU9QJf7xhjp1D1AvyW8qPqUPkDY7Mlb/VU/QHUvBwPwC0BA6BPXxkhtQEB5BqB0AM9AQAhhP48OMUFAbLecoGqTQUA9Ej45DPZBQD8m9e/qWEJAEeWiYf67QkC1EA8xPh9DQMq+0QaigkNAJfNMkSHmQ0BUrbSEtElEQKXxI5tSrURAf369lPMQRUCfXuqp448yQFrCxEru/TJAREtXVztsM0A6qkyzwNozQKHiVFd0STRARyLXT0y4NEDMetW7Pic1QBH9/MtBljVAvF7dwUsFNkCE40PvUnQ2QDfDtbVN4zZAT7QGhjJSN0Diowjg98A3QJ74UVKULzhA8wgYev6dOEDOrRsDLQw5QKkUpqcWejlATyaUMLLnOUAWBG919lQ6QMhEkFzawTpACb1Q21QuO0DfvUD2XJo7QD7PaMHpBTxAmwSSYPJwPEAWH5UHbts8QOjDr/pTRT1Ayh7fjpuuPUBHVz8qPBc+QHpNb0Qtfz5A7B74ZmbmPkCMOO9dinIsQBHbQU4r5ixAro/pcUFZLUAAO3+ywsstQAnAIRSlPS5A44NHtd6uLkBh66DOZR8vQDUpCrMwjy9ACtyKzzX+L0D3D7HVNTYwQITrDnTkbDBAQwXeICKjMEBZr2pH6tgwQDnWZ2A4DjFAvvML8gdDMUC0RTGQVHcxQEvteNwZqzFAyKRwhlPeMUBuv7pL/RAyQBAuOPgSQzJAQEg0ZpB0MkAxH5J+caUyQA4k+ziy1TJAo+8OnE4FM0Am/ZO9QjQzQEUtqcKKYjNA4On33yKQM0CuxeZZB70zQKp1zIQ06TNAjQQjxaYUNEADfT5OU1AlQAbaWbq9iCVAB0Bgr2bAJUCipxFjSfclQO5zhyBhLSZAyuNKSKliJkBelm5QHZcmQEXLqsS4yiZAgw18Rnf9JkCw/kONVC8nQGr9a2ZMYCdAOmeJtVqQJ0DzOoN0e78nQNzkuLOq7SdA9wEqmuQaKEBs655lJUcoQHTe0WppcihAVZiYFa2cKECyQA7p7MUoQFt/vX8l7ihA+pzKi1MVKUBvkB3XczspQL/ci0ODYClAVSUCy36EKUBHYK1/Y6cpQACQI4wuySlAJ++LM93pKUBFe8bRbAkqQNzLktvaJypALiW23iRFKkDnzqMd1s8fQLX6jd+9/h9Anbvi3SMWIEDjSYwCOCwgQHyzkJiZQSBA9Rg07EZWIEBSOUNbPmogQPQ+JVV+fSBAs73tWgWQIEBY0W7/0aEgQOBMS+fisiBAZewIyTbDIEC0fCJtzNIgQM7sGa6i4SBArz6KeLjvIEDITTnLDP0gQJ9iKbeeCSFABYyqX20VIUAut2v6dyAhQPuAi8+9KiFAi7uoOT40IUARpPKl+DwhQK3FOJTsRCFA3ob6lhlMIUDkX3ZTf1IhQDC5uIEdWCFAuHGq7PNcIUDFDR9yAmEhQIuP4gJJZCFAo/vGosdmIUCkrsZskpQXQL+SM/nmnxdATgFOlTyqF0AvaME6k7MXQGB3GADruxdA+oDVGETDF0B9GIvVnskXQBTu9KP7zhdAU+MQD1vTF0DJVzi/vdYXQFGsOXok2RdAtvxxI5DaF0DhD+e7AdsXQCF/YWJ62hdAcRWHU/vYF0AmaPXphdYXQFaqXJ4b0xdAm7yaB77OF0C6etbabskXQI5Im+svwxdAad/0KwO8F0CzXIus6rMXQP2Rv5zoqhdAIZbHSv+gF0ATlssjMZYXQA/jArSAihdAgjrRpvB9F0CXQuTGg3AXQIs0Uf48YhdAE6yyVh9TF0AUIv6KPYIRQGfig/YWfxFAJfmIp3R7EUB40WEWWXcRQFHUe9HGchFAtgw9fcBtEUBkF+DTSGgRQN8aTKViYhFAHYHo1hBcEUDRKGxjVlURQJbAp1o2ThFAm/pK4bNGEUDZQ6Qw0j4RQCumWpaUNhFAJXkhdP4tEUDKgWU/EyURQDAe84DWGxFAiRaV1EsSEUBcqqvodggRQKJtu31b/hBAW4fzZf3zEED34KqEYOkQQFvU082I3hBAZOVlRXrTEEAhE73+OMgQQIhN7hvJvBBAPJ0QzS6xEEALjXpPbqUQQLFn8+yLmRBAZ+DX+ouNEEDPwr39y40LQDbSj5WUjgtAXJd/en2PC0Cz3UB+i5ALQJ5b2GDDkQtAHPHBzimTC0BlDRdfw5QLQMJytpGUlgtAK5xuzaGYC0AmEyxe75oLQP0NLXOBnQtABbY7HVygC0Dfe/BMg6MLQLLj/dD6pgtAUjWHVMaqC0BTfINd6a4LQKhBLktnswtAqmOHVEO4C0CZauOGgL0LQCCujcQhwwtAv5R9wynJC0DNJyAMm88LQJkmN/h31gtAWbDOscLdC0AeiEoyfeULQE7fi0Gp7QtAt3owdUj2C0Ax7OsvXP8LQGR/+6DlCAxAdVu1w+USDEDWyirxSX8JQJhEyLBamwlASSvK8dK3CUCNmINWr9QJQAKxzmDs8QlABSy5c4YPCkCn0TTVeS0KQGWcyq/CSwpAmTtPFF1qCkAixJf7RIkKQBJuLUh2qApAMVD/x+zHCkBjHBE2pOcKQNPyJTyYBwtAQHRmdMQnC0CiTgFrJEgLQK6RxZ+zaAtA1Sq2h22JC0AT+pWOTaoLQOIBbBhPywtAJEX/gm3sC0Cp9UknpA0MQM+k41ruLgxAJjZicUdQDEAZYbG9qnEMQHybYJMTkwxAIFLnR320DEC0X98z49UMQOK7NbRA9wxA12VRK5EYDUCvIPNS41ELQKfqezhHfQtAAzmFo3+oC0CBs4HhhtMLQHmKCFlX/gtA8SxxiusoDEBRAWQQPlMMQADVYKBJfQxAZK47CwmnDEDgo5A9d9AMQG5RL0CP+QxA631+OEwiDUBOeNhoqUoNQO+s4DCicg1AgOrSDTKaDUDFxsyaVMENQBGLEZEF6A1AqAlJyEAODkCgtbk2AjQOQG1QfvFFWQ5ApXm3LAh+DkB+Z7k7RaIOQIwINpH5xQ5A6MljvyHpDkB5NyF4ugsPQEGnFY3ALQ9AvhvP7zBPD0Amhd2xCHAPQN+E6wRFkA9AzNLUOuOvD0Ag5GmWJ3UNQE5+qTxAmw1AqPYBn7zADUCAacq+meUNQCDAJsHUCQ5Aki307motDkB+NbW0WVAOQIhCfaKecg5ADM7bazeUDkD2F8fnIbUOQJlqhhBc1Q5Au+ObA+T0DkDAua0BuBMPQHzxbm7WMQ9AUHeH0D1PD0BDjHvR7GsPQA52kj3ihw9AfF+8Ax2jD0D9VHc1nL0PQN5HswZf1w9ASwG1zWTwD0CK9nuBVgQQQGpRh6AbEBBAoAlBooEbEED5ntd1iCYQQLepURswMRBA2RJ7o3g7EEB7ZNEvYkUQQJYib/LsThBA8hv2LRlYEEA1Z/rKhqANQNvo8yTvuQ1ASkcIw73SDUDKnr2m8uoNQBWkIO+NAg5AOQGG2I8ZDkDatkm8+C8OQI1ijBDJRQ5ATUruZwFbDkAHDUhxom8OQLrXYPesgw5Ah/6h4CGXDkDN2McuAqoOQHO/j/5OvA5APwxjhwnODkBS+f4aM98OQLs/GSXN7w5AYVQBK9n/DkChIj7LWA8PQEwkKL1NHg9ADbd/0LksD0Cvj//snjoPQEcs6xH/Rw9A7iaZVdxUD0BpS/nkOGEPQA9TFgMXbQ9ACCuTCHl4D0BfqiNjYYMPQE6eAJXSjQ9A0BRXNM+XD0CwFP4NHjkMQHpBPndRTQxAfzN88kJhDEAcSmKx83QMQCIDRu9kiAxARHGo8JebDEArErUCjq4MQCATv3pIwQxA2hS9tcjTDECLgMMXEOYMQKOBfQsg+AxAg7mkAfoJDUDWw3dwnxsNQMOjL9MRLQ1A3DN0qVI+DUBBtM92Y08NQMeTIcJFYA1AvZIQFftwDUBFX3z7hIENQLPM7gLlkQ1A1MgMuhyiDUCFMwewLbINQBu+C3QZwg1Alfm1lOHRDUDXu4Cfh+ENQBAFOCAN8Q1Axo9roHMADkDnNuKmvA8OQBZeDrfpHg5APomDUPwtDkA62DQbuCsLQN9pW+EYRwtAC8tzhoBiC0D5gxYe7n0LQGWawbNgmQtA2Dn6Ste0C0DnG3HfUNALQLiaKWXM6wtAkFejyEgHDECtXgbvxCIMQCixUbY/PgxAXx2M9bdZDEDlTfd8LHUMQNv2RBackAxATgnOhAWsDEAA1MuFZ8cMQBH5ktDA4gxAyh/QFhD+DEDsScYEVBkNQNezjkGLNA1AGSdab7RPDUD5prMrzmoNQN9exA/XhQ1AnrqYsM2gDUD3kGafsLsNQO1I1Gl+1g1A5OJAmjXxDUDUzgy41AsOQEV540daJg5AJHkFzMRADkATG9OWYaILQFCaMaIZyAtAOkJi9L/tC0CmcTwCURMMQMaKrkbJOAxAGaVXQyVeDECMdRyBYYMMQCmCt5B6qAxAvbdEC23NDEDIeMiSNfIMQMs9stLQFg1AQ99agDs7DUBbon5bcl8NQBwhsy5ygw1ARCfZzzenDUCmnIogwMoNQL+VhA4I7g1AAaMNlAwRDkDKdli4yjMOQJ754o8/Vg5AkuPRPGh4DkBx8UjvQZoOQETLv+XJuw5ARbFTbf3cDkC4Axbi2f0OQA+5V69cHg9AN9XxT4M+D0AN9IpOS14PQB/42UWyfQ9ACu7l4LWcD0DkfqrWV/EMQNu2XuqxGQ1A8vnbTLJBDUAgFlNsVWkNQPBRZs2XkA1Ax+hfC3a3DUARL2XY7N0NQBeKpv34Aw5Ad2OMW5cpDkBdPeHpxE4OQC0J+bd+cw5At9/V7MGXDkDmNkrHi7sOQJ6uGJ7Z3g5AmIsR4KgBD0Dt9C0U9yMPQLcGqdnBRQ9A58kW6AZnD0CgH3kPxIcPQGSsUjj3pw9Amc23Y57HD0BCol2rt+YPQBOX06CgAhBAlk7YuJwREECUVaxPTyAQQJcZpKO3LhBAC/R7/9Q8EEBSG1q6pkoQQGyozzcsWBBAT7DY52RlEEAqkKhK67oNQFx4kPIS3g1APdYdu7kADkD15XGH3SIOQIPOOVR8RA5ADO2rN5RlDkDipoNhI4YOQJzE+xoopg5ANlfHxqDFDkCJJgnhi+QOQDynSf/nAg9AxXRr0LMgD0AjS54c7j0PQLp6UMWVWg9Ats8exal2D0B65cIvKZIPQLfd/zETrQ9A5HGNEWfHD0AtVQEtJOEPQCvctvtJ+g9AhW/aBmwJEEAi5cgFZxUQQK7oKtsVIRBAXZutc3gsEECNTRbIjjcQQFujMN1YQhBA9q67w9ZMEEBH+VWYCFcQQJJxaIPuYBBAVDwQuYhqEEDNH34uqXQNQLWVCGiYkQ1AfC/0uhWuDUCCPSdaIMoNQDHwroy35Q1ATNWgrdoADkDKuforiRsOQALqgIrCNQ5A8smaX4ZPDkCovi1V1GgOQNRhdiisgQ5AHfjfqQ2aDkC9Itq8+LEOQKXErFdtyQ5AXhNKg2vgDkDMyx5b8/YOQN6C4AwFDQ9AUApa2KAiD0Ca4TUPxzcPQFmrxhR4TA9AgJ/NXbRgD0Ds8j5wfHQPQA4tBOPQhw9AtmS8XbKaD0BFXXqYIa0PQN19gFsfvw9AlJz6fqzQD0AAmLXqyeEPQBC61JV48g9AqG9Cw1wBEEDpIzSgVq0MQK2JWMm/yAxA1qE2sODjDEDYIdSvuP4MQCr7HC5HGQ1AssLLm4szDUDuD1F0hU0NQPrVuT00Zw1AQriUiJeADUDXXNbvrpkNQFi+vBh6sg1AM3+xsvjKDUBTQCt3KuMNQAn9jSkP+w1AYW4Kl6YSDkDbd3yW8CkOQMifSAjtQA5An5U41ptXDkCzyFbz/G0OQN8RyVsQhA5A3XKqFNaZDkAw7uMrTq8OQLZ6BLh4xA5AHxYY2FXZDkDA+X2z5e0OQG71vXkoAg9AUPRcYh4WD0C9r7CsxykPQICUsp8kPQ9APN/RiTVQD0AXwqg0Dz8MQJ8qaCmqXQxAl0lzoBN8DEA+00UCSpoMQM5xr75LuAxADO/2TBfWDEDCLfwrq/MMQAX1WOIFEQ1A/o6A/iUuDUDzPN4WCksNQAeC8smwZw1AMkZvvhiEDUDX0lKjQKANQC6qATAnvA1AujpfJMvXDUDab+VIK/MNQHQgu25GDg5An1zJbxspDkAgm88uqUMOQG/HdpfuXQ5A7DBjnup3DkDbW0VBnJEOQJy06YYCqw5AmyVHfxzEDkBJkIxD6dwOQHkpLfZn9Q5ATLnrwpcND0D5vuTedyUPQIp4l4gHPQ9Anc7tB0ZUD0C3AbG4SnIMQO2fjwhSlAxA8+dEbxq2DEDko+WJodcMQGXxIgLl+AxA9UeDjuIZDUA7C5nylzoNQLS3Nv8CWw1AoLegkiF7DUAk7byY8ZoNQAb+Pwtxug1AhmzY8Z3ZDUBBiFdidvgNQEpB2ID4Fg5ABefjfyI1DkCK25Sg8lIOQMZDtzJncA5A8bvnlH6NDkA4F7A0N6oOQP0woo6Pxg5AaNVwLobiDkB+xgavGf4OQGrim7pIGQ9AC2/IChI0D0CJjpZodE4PQOjfkaxuaA9Agk7Vvv+BD0B9EheXJpsPQCXksjzisw9AlmOyxjHMD0A=", + "bdata": "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", "dtype": "f8" } }, @@ -2976,7 +2982,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2992,7 +2998,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3865,7 +3871,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3883,7 +3889,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3932,7 +3938,7 @@ "dtype": "f8" }, "y": { - "bdata": "D0lIYhM95D9mZGDYzGLkP5RUE+Os0+Q/iuLaOKyP5T/gwAf0wJbmP/xcz+3h6Oc/5CJyaguG6T+6mTIPRW7rPzPT6Rapoe0/1ua8WTYQ8D+pKq2/dHXxP8IwTejTAPM/PDuX0bSy9D8BZFjUmov2P7RbO+swjPg/mPLVRE61+j+KMX+J+Qf9P2gvrh9qhf8/kWx3VoMXAUCtHwYTMIMCQDSYHIOUBgRA0aqyYJSiBUApCO0WFlgHQAmufyj6JwlAaYJivhITC0B8KRNlHBoNQAV3o9C4PQ9A/HVtDza/EEDYgGVMTu4RQMAFGEdKLBNAW6g500J5FECc5Eywv3oUQOJozD9YvBVAa1Q7SIwKF0ATjb/7ZmUYQJqop+7rzBlA8mDuIxhBG0BitlEm48EcQKRxcBVATx5APAzalh7pH0AiHljRtccgQO4nvhQJoSFAETt5yn2AIkAn394TCGYjQEAOv6CbUSRAqyslxitDJUAnelOMqzomQHwIH7YNOCdAS1V0w0Q7KEB62nHwQkQpQK1qNDL6UipA6J8sMlxnK0CrypxIWoEsQJTDsnbloC1AzAqPYO7FLkCt9HBHZfAvQHNJFgIdkDBAjI8AAa4qMUBmWO4c3ccxQMqBCZehZzJA8R9Ec/IJM0AtlwtWFtIwQLwcAVrAVTFAbDHjuQPbMUBPjBdD1mEyQMvGeZ8t6jJAQDelV/9zM0AAutTUQP8zQFaOamLnizRAoHkwL+gZNUD1Xl5OOKk1QAeEc7jMOTZAPObsS5rLNkDhV+HNlV43QNyhiuqz8jdAWZrBNemHOEBlA3IrKh45QJURCjBrtTlAMa7okKBNOkD53cyEvuY6QIwoSCy5gDtAymg1koQbPEBVEDWsFLc8QCCcL1tdUz1A77rea1LwPUD7dV2X540+QI2Fv4MQLD9AYt2vxMDKP0DQMgvu9TRAQKJhYp3ChEBA9wKVIMDUQEAG7qSyYxRAQKfS7wnWXEBAS9HCQlSlQEDoC+mF2O1AQNXzofpcNkFA4/AVx9t+QUAd5MgQT8dBQDX2Cv2wD0JAhRFosftXQkCCWRZUKaBCQIrkYww06EJAp/EjAxYwQ0D4yRtjyXdDQJJ0b1lIv0NAB1wOFo0GREAc/h/MkU1EQHG4cLJQlERA57/eA8TaREBBTMf/5SBFQPf9c+qwZkVA74CIDR+sRUBbbHC4KvFFQKZdzUDONUZAkUrlAgR6RkAVBRFixr1GQFTqKskPAUdA3bT9qtpDR0C5abOCIYZHQO9WRNTex0dAzRnmLA0JSEDOmoJTyZFHQPkkS/eRzkdAvvi4yr4KSEBuIo3jSkZIQK/ckmMxgUhAs18DeW27SEDjv+he+vRIQEXgf13TLUlAO3uZyvNlSUBPQ/oJV51JQKMcuo3400lArG6i1tMJSkAgjYt05D5KQFs2uQYmc0pAxCQ2PJSmSkBusC7UKtlKQJp9Sp7lCktAgjQFe8A7S0B/PgZct2tLQHaEd0TGmktAMSpbSenIS0BHQuCRHPZLQCV2tldcIkxAqJ1g56RNTEDcQYag8ndMQGcGRPZBoUxAXvV6b4/JTEApqR6n1/BMQH1QgkwXF01AbYikI0s8TUBibc2jKOdMQJHCnl8kCU1ApHB5XhIqTUDmbETo70lNQFX1c1q6aE1ArCBFKG+GTUAq+ffaC6NNQAwhCBKOvk1A7v9jg/PYTUATeKL7OfJNQPciN15fCk5AZxSlpWEhTkCyI7DjPjdOQIC6jEH1S05ANykOAINfTkDQgNN35nFOQGrychkeg05A87SjbSiTTkCXcWYVBKJOQOE3LMqvr05Arvr7XSq8TkB0l5a7csdOQIVpmeaH0U5AcWuf+2jaTkDF6GAwFeJOQOLC0dOL6E5A5Es+TsztTkDnumYh1vFOQFw9meio9E5AY6nKWET2TkCLtItC8atOQOynjzcNq05AIP6VK/ioTkA8P/JIsqVOQK2bA9M7oU5Al3Y6JpWbTkBoNhy4vpROQJhaRRe5jE5AX9Vp64SDTkDrp1P1InlOQHC/3w6UbU5A/xD5KtlgTkDN8ZFV81JOQDSpm7PjQ05AKjn8gqszTkCbWYIaTCJOQFGi1+nGD05Ar95weR38TUC2hXxqUedNQBdQz3Zk0U1AYOXOcFi6TUBSmFpDL6JNQJopsvHqiE1AGIdal41uTUDJfABoGVNNQEtLWa+QNk1AsRYB0fUYTUANH1dIS/pMQMSyV6iT2kxASslzm9G5TEBvix4r5W1MQLR8HkZjS0xAXWYX8uInTEDwREUfZwNMQAbjkdLy3UtAxklRJYm3S0ClzvtELZBLQEq/5XLiZ0tAMq30A6w+S0DWW1JgjRRLQP1UHQOK6UpANCgXeqW9SkCDW1Bl45BKQOkU0nZHY0pAeoVFctU0SkB7IJkskQVKQHeqo4t+1UlAtS3FhaGkSUBc44Uh/nJJQPYhM3WYQElA+GN6pnQNSUB1egLqltlIQPoBA4MDpUhACDHawr5vSEBuGaEIzTlIQCx3vsAyA0hA9ih4ZPTLR0Dmb4N5FpRHQOEUlJGdW0dAiZPqSY4iR0CREROe4s1GQA4oP6TQk0ZAp7Fe2jVZRkCGfdLuFh5GQOxwZJl44kVA44Liml+mRUD4rbm80GlFQLHjkNDQLEVAVwzkr2TvREDxHJ87kbFEQAxMuVtbc0RARm3Q/sc0REBZesQZ3PVDQMZPU6ectkNAHqK0pw53Q0BNMDYgNzdDQGc22Bob90JAzCPqpb+2QkDXlqfTKXZCQLKf1bleNUJAYktgcWP0QUC3d/gVPbNBQGrwscXwcUFAXNWhoIMwQUC/SX3I+u5AQLJrOGBbrUBA2JOli6prQEBQ3BRv7SlAQCnd511S0D9AcS/c3sVMP0BOS3ljbJI+QNjO87qnDj5Aq4c5Mf2KPUDCptQNdwc9QIKrl5QfhDxApm7cBAEBPECaj8OYJX47QAtMdISX+zpA3slc9WB5OkBs3HIRjPc5QFhOdfYidjlA6rktuS/1OEBk+rJkvHQ4QDhBrPnS9DdAhNqUbX11N0CyrACqxfY2QH5/4Yu1eDZABxfN4lb7NUD1L0Rws341QAJq+ubUAjVAjC4f6sSHNEAWoacMjQ00QNqnmdA2lDNAvRpYpssbM0AYJ/DrVKQyQA33Z+zbLTJAGqsO32m4MUCutM3mB0QxQLmgexG/0DBABWEwV5heMEAzLJkL514vQKIfFQicfi5Ad43+C86gLUAWcudujsUsQEb8xlXu7CtAtoatsf4WK0CEZnw+0EMqQIaqoYFzcylABefXyPilKEA2KeoocNsnQH0tfHzpEydAHPPWYnRPJkCrx7k+II4lQDTkLzX8zyRAjrVqLBcVJED66KDKf10jQL1V8nREqSJA3ttQTnP4IUC9T242GkshQM6Jr8hGoSBAPmJJtgz2H0DbrQ37y7AeQN/xdfDkch1A5/60lnA8HEDml4Jbhw0bQCrYQhhB5hlAIQk5ELXGGECqDcbu+a4XQGKHssUlnxZATdmEC06XFUAKZsK/tZoTQH5Uvdw2ohJAi31E3f2xEUDE/UPkHcoQQJDTNt5S1Q9AwYdUqGQnDkBs39KCk4oMQFyGI3YA/wpAcqSfNMuECUCMJAoYEhwIQNjhLB/yxAZAKvCQ64Z/BUDIMVK/6ksEQKpqDns2KgNAuv7vm4EaAkBJhtQ54hwBQI5hjwVtMQBA+uKQjmqw/j/LM+65mSL9P6Rc83GIufs/VNGSwVR1+j9IDJbXGVb5PytJeATwW/g/g+96uOyG9z9j1/OBItf2P4mN1QuhTPY/CLdxHHXn9T/Ir3WUqKf1PxV6IW5CjfU/ZBC5vEaY9T+VdUe4gAfyPwxrc0ddW/I/v8f0/87U8j8Q2VyAznPzPy2HNXRROPQ/PwuqlEoi9T8YFG6pqTH2P/xR44lbZvc//lp9HkrA+D9W0mNiXD/6P+i1UmV24/s/Xq64TXms/T8QNxNbQ5r/Pxo2RPRX1gBAdiPft8vxAUD5g/fFZx8DQK9FnX4VXwRAbhwa1rywBUDqntZWRBQHQB5cXSORiQhAebl7+IYQCkAIZ4AvCKkLQP8zl8D1Ug1ADAtCRS8OD0B7bXd9SW0QQK4W1eL+WxFAVBV3mSVTEkDO40a+qlITQCXr3cV6WhRA8NgWfoFqFUA/I+iDNpkVQH0pZALUuBZANS4v/XHgF0BMJYu9+Q8ZQI5x+etTRxpA3EIckmiGG0CfdqUcH80cQBrEUl1eGx5AJf32jAxxH0BqFcimB2cgQD8mNdYlGSFAcT8nEtPOIUAqKN9PAYgiQBWDnT2iRCNAgUvMQ6cEJEBvDi6GAcgkQOfAEuWhjiVAkRSS/nhYJkB5K8svdyUnQLaLKZaM9SdAgDOvEKnIKEAlrkNBvJ4pQDQKCI61dypAEJGvIoRTK0AgIN3xFjIsQJYDhbZcEy1A8jJT9UP3LUAJzxX+ut0uQKDBK+2vxi9AK697VghZMECis5cdIpQwQO5NSbLvCzFAOhVPJtqEMUDMpWkW2P4xQMnxfQngeTJA+hlZcej1MkCc7HWr53IzQB34wwHU8DNAvB9wq6NvNEAroK7NTO80QGByhnzFbzVA2PqduwPxNUCz8wh//XI2QCCAF6yo9TZAqVcmGvt4N0AC+G+T6vw3QCPM3tVsgThAdjfgk3cGOUACdDh1AIw5QJQy1xf9ETpA6OusEGOYOkD40YDsJx87QI5QxzBBpjtAdQx5XKQtPEBqUOroRrU8QD/XokoePT1AieI18h/FPUBFjRpNQU0+QOhJhMZ31T5AY3s7yLhdP0BwoozKDKg/QBXORnAHGEBAyCV+Xf9bQEB2jKTl6J9AQBf5iMK+40BAhZV8r3snQUCjCr5pGmtBQB+g5LCVrkFAfidLR+jxQUAdqnryDDVCQNrRlHv+d0JAOwS+r7e6QkDnJ4dgM/1CQFEMV2RsP0NAiWvTll2BQ0BFfknZAcNDQAUaFhNUBERAnlENMk9FREAskOEq7oVEQK4mivkrxkRAjkSpoQMGRUBZU/EucEVFQBCuibVshEVAXqxyUvTCRUBL+ugrAgFGQM40yHGRPkZA2sPsXZ17RkCB6pQ0IbhGQNIFwUQY9EZAMvOS6H0vR0Do9uZW/UpHQKr190gchUdAAmAgtp2+R0B5/WYqffdHQI37bD62L0hAKgjHl0RnSEDcbVXpI55IQOEqm/NP1EhAMPwThcQJSUDjVYl6fT5JQEBCZr92cklA3SAKTqylSUB6PxowGthJQBRG0n68CUpAA3BTY486SkDhi/IWj2pKQDS8hOO3mUpAxfKqIwbISkDTIBxDdvVKQEgW7r4EIktAOArdJa5NS0Agx5EYb3hLQE515klEoktAGv4pfyrLS0CdAmKQHvNLQLhgi2gdGkxAU0HZBSRATEDNqvJ5L2VMQNKSLuo8iUxAvmrOj0msTEAQwwczUq9MQPazbjVC0ExAFUqjGCvwTECFP8NoCg9NQGCLjsbdLE1AavOX56JJTUBGCHSWV2VNQC6I5rL5f01ALSQOMoeZTUAtpI4e/rFNQA5muZhcyU1AXzS01qDfTUA5cZ4kyfRNQAuStOTTCE5AMelxj78bTkBgurCzii1OQAaXyPYzPk5A9P+qFLpNTkDHSf7fG1xOQJbBNkJYaU5AqQ+uO251TkAa1rjjXIBOQGGJumgjik5A74A3EMGSTkApPuU2NZpOQDbouFB/oE5APvvz6J6lTkC+KS+ik6lOQPNuYzZdrE5ASFHxdvutTkBBQKs9yo9OQOxkP7n+jk5AeQMnVgmNTkDYwotE6olOQOK0tsuhhU5AJz8MSjCATkBhPgY1lnlOQHNkLBnUcU5A/NAKmupoTkDJ5CZy2l5OQG1Q8nKkU05Arl68hElHTkBce6GmyjlOQHH3eO4oK05AlwvBiGUbTkAXGom4gQpOQK0xWtd++E1AodIdVV7lTUDP9wK4IdFNQHNlYZzKu01Alj+btFqlTUBH6vzI041NQNE1m7c3dU1AVtkvdIhbTUBcPvQHyEBNQOufepH4JE1AJICFRBwITUA1d91pNepMQM5eJV9Gy0xAU92sllGrTEBL/RObz2tMQLN84b3CSUxA4MkNYrkmTECi3BpMtgJMQEMk7VO83UtATheUZM63S0CFShF875BLQCATHqsiaUtAhrjvFGtAS0DVOfruyxZLQKSrsYBI7EpAoDJKI+TASkC/n3ZBopRKQMqyJVeGZ0pAUwg+8ZM5SkAZuFitzgpKQAupejk620lAXqDMU9qqSUDxEFLKsnlJQMewnnrHR0lAC9qKURwVSUCQveZKteFIQIdsLHGWrUhAgb8w3cN4SEDCINO1QUNIQBBArC8UDUhAS7a7jD/WR0AenxQcyJ5HQEQviTmyZkdA401VTQIuR0CFZms+FdZGQNofLBopnEZATujH3bFhRkA7GXshtCZGQG+74oc060VAwSehvTevRUDZ6AF5wnJFQAzlnHnZNUVALdf4h4H4REBrHS11v7pEQCjlghqYfERAFLsVWRA+RECahnMZLf9DQPD3O0vzv0NACHC/5GeAQ0DLaZ3ij0BDQPxrYkdwAENAMYslGw7AQkBogyVrbn9CQMJwZUmWPkJA7S5JzIr9QUDhZjEOUbxBQJVSFy3uekFAUz4oSmc5QUBlz2CJwfdAQM8XKBECtkBA137qCS50QEAmhrSdSjJAQHXmmu+54D9AF8qjiNRcP0AAtIkJN5s+QBqcsQowFz5AqERO8kCTPUCOBEobdA89QFFHnt3TizxAjuGHjWoIPEDQyLt6QoU7QJQ9nO9lAjtAYnZuMN9/OkC82pB6uP05QL7csQP8ezlAM4AH+bP6OEDdnYd+6nk4QLfxIK6p+TdA3QL1lvt5N0DH85I86vo2QHpJM5Z/fDZARrj0jcX+NUCUBBoAxoE1QEcGSbqKBTVAF93Keh2KNEBDZM3vhw80QOTzpbbTlTNAGH4VWwodM0AdFo5WNaUyQHnveQ9eLjJACOOD2I24MUDlh+HvzUMxQNTtnn4n0DBA1wbsl6NdMECIAKPBYlwvQGO4SL7Cey5A+ksmSqOdLUATW+nWFcIsQGQRbqIr6StAkyJutfUSK0CfFDTihD8qQO/vUsPpbilAOmxiujShKEAfsb/uddYnQA7BUky9DidAyaRYghpKJkCwbTICnYglQH0kOf5TyiRAGLqWaE4PJECjDyTymlcjQLEqTAlIoyJARqr02GPyIUDikGtH/EQhQJd3WvUemyBAc3t+ebLpH0D+kNRfcKQeQMzKBDGRZh1A98Mc7S0wHEA71gj/XgEbQASLvjo82hlAvuFy29y6GEBUjdyBV6MXQNdJgjLCkxZAlmoVVDKMFUC9pGMrfZMTQB7IfRKMmxJAUbLlSumrEUDgKG3Cp8QQQB7TrX2zyw9AqlzxuCEfDkAgNtUZvIMMQGBViCuj+QpArGHNHvaACUDoB6vH0hkIQILGN5tVxAZAxlWBrZmABUDFz4+vuE4EQDa5hO3KLgNA5wrWTOcgAkCbWaVKIyUBQF04M/qSOwBA3d7dBpLI/j9SQEVDrT79P4DYd0SX2fs/uGlix2yZ+j9YCAepR375P+ZjuuQ+iPg/XKOakma39z/C7T/mzwv3PxG0pi2JhfY/Kc1T0J0k9j+UcLJOFun1P2QYrEH40vU/M056Wkbi9T8=", + "bdata": "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", "dtype": "f8" } }, @@ -3950,7 +3956,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3966,7 +3972,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3999,7 +4005,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -4017,7 +4023,7 @@ "dtype": "f8" }, "y": { - "bdata": "D0lIYhM95L8SiR2PWj3kvw3Ggn2MPuS/0OtL6JpC5L/Ej/QdwEzkv1s0YjR1YeS/LiFy4FqG5L+5sKkiDcLkvw8uMz3bG+W/Ug5QVWKb5b9KGpnEEUjmvwoIzgeqKOe/7f6qnM1C6L9bGlNpuZrpv+sKB+IvM+u/HvJ8ypMN7b/j6CcUJCrvvziL3B8jxPC/YUBqrWcT8r/bm/TjIILzv8OpAgR+D/W/SzOJd6y69r/c6aDi4YL4v4k7orVhZ/q/ETh3qX9n/L+a2p9DoIL+v29bHBgcXADAxZfHfuWDAcCd0UTJdLgCwDR3+EqY+QPARSmdciNHBcDlhQQsmzL7v7bWYQQb5fy/NePo6c2o/r9nMDzouj4AwP0QJt9uMQHA7I1sYGwsAsDZYDR9oC8DwEBbvmT7OgTAAiKXBHBOBcAg+WC082kGwC6dGux9jQfAVkK2Awi5CMACrtv6jOwJwAbmxEcJKAvA2EE/rHprDMBxrPYP4LYNwBY/TF85Cg/AhmcJt8MyEMBtgNHuZeQQwN1j5oIEmhHArPse8KBTEsCQcwL7PBETwOiqcafa0hPAa4EYMXyYFMClh4sEJGIVwByz+rjULxbA8i5lCpEBF8BFVT3UW9cXwH1ebgw4sRjAM3S3viiPGcBZhvwvxZf/v80XRBq8WgDAPr/BgPjvAMDRgksU2YsBwGY7EM+dLgLAHyCPJ4XYAsAxogrky4kDwC84T/asQgTAcIB1X2EDBcDsDyAbIMwFwFlBlxEenQbAa3QQEI52B8Bb82HGoFgIwPBNYMmEQwnAPkokmWY3CsCQVYCqcDQLwPda+HLLOgzA3tSddp1KDcDMtEJXC2QOwDNfh+Q3hw/Ax9UsFiJaEMCY/cXFp/UQwBrKHd87lhHANxnmd+w7EsAm/yXlxuYSwHpej8LXlhPAbYps+SpMFMCPnx7HywYVwL7EKMPExhXA9WPH5B+MFsAdWekRczv/vyyTkcqBNADAUpic/sbWAMBgLSoKlIQBwMsM5UDqPQLA1lgjMcMCA8CjHE5OEtMDwGiXCm7GrgTAuGJQEsuVBcBfsCB/CYgGwAXr2Z1phQfAhRtEstKNCMDyr6DmK6EJwN3efbRcvwrAAAoCME3oC8Au7QQ75hsNwEZ5v6QRWg7AI2A6OrqiD8DoMoDl5XoQwILNf5KZKRHAmOf8BG/dEcC/uTWQXZYSwIWctPBcVBPAcHtPQmUXFMB1FKr1bt8UwAfSkMVyrBXA/nJrrGl+FsAp5PTZTFUXwMHOV6kVMRjAlq7El70RGcCP1xh7RpT/vzJ35YKYYADAvjjelzL/AMD6sWncyqUBwPASk7U5VALAFowGSlcKA8CKy2YV/McDwEK1blcBjQTAzBQzZEFZBcBXg73alywGwC/z2MbhBgfAMuRgsv3nB8DnMc2py88IwF05HTctvgnAY1q3VQWzCsCpylJhOK4LwEd4kwGsrwzADYGiE0e3DcAph8CS8cQOwNZGkICU2A/Ar67S5gx5EMDPo10htggRwB+5bLU7mxHASJdIv5MwEsCNDDiotMgSwHDnWR2VYxPA290gBywBFMBuRW+BcKEUwBnYTdRZRBXA5gs3bd/pFcC97grquvP+v9PNhJrp5f+/dnutz25wAMBfO++0MfIAwF2ArvojeAHAsBdJhywCAsDD8I/EMpACwDuo3bIeIgPAs9rG9di3A8Cv4IXbSlEEwELTImBe7gTAFnk3Lf6OBcBGrg6XFTMGwFwOwZeQ2gbA1bXVyFuFB8DlFtZbZDMIwM4eLxKY5AjACiKoNOWYCcDh+aiKOlAKwFknfFGHCgvAmWGvM7vHC8CnZ6xAxocMwNf4nOSYSg3A+zyn4CMQDsBIbYtDWNgOwC4HqGInow/AmoizaUE4EMAgbYoyLqAQwBiAjw1TCRHAR6zcE6lzEcCoAzw9asb9v9+aRq2Qf/6/tZAP20c9/799CXtucP//v6vD/r/1YgDAJd5oU03IAMCgU6cBsC8BwB7P9yIPmQHAol3JWVwEAsBARLKTiXECwMopcQmJ4ALAlNInPk1RA8Bbnff9yMMDwL5bIlzvNwTAuRDNsLOtBMDfln2WCSUFwFsraOfknQXAf1SeujkYBsAwiS1h/JMGwCtYOWMhEQfA1ogafZ2PB8DTv4qcZQ8IwJCO4t1ukAjAZHRuia4SCcBeMd4QGpYJwFXW0AynGgrAGDR/OkugCsDMpoV5/CYLwIW0zcmwrgvAxYqXSV43DMALqvW+iln8v9DWg81C5Py/zX63HD5x/b/Ds1f4aAD+v+e3bfGvkf6/9C4n4f8k/78R4tDqRbr/v0WChb63KADAoGAqKTV1AMC25YQ4ksIAwFTidBXGEAHAlUcfDshfAcDoDFqVj68BwGHv+EEUAALA+RYCzk1RAsC8uNAVNKMCwBzwKhe/9QLAz0RP8OZIA8AQpP3eo5wDwLT5fj/u8APAYQ6ui75FBMCw2QNaDZsEwBQQqVzT8ATAP1uOYAlHBcDAXoxMqJ0FwJxojCCp9AXAGnW69ARMBsBH/cD4tKMGwNjeDnOy+wbAMIonwPZTB8AE43mugsP6v2OaM1D8KPu/llCGRXKP+795v+cx2Pb7v9A+P+YhX/y/p71wYUPI/L/rqa/QMDL9v46XoY/enP2/sbhXKEEI/r8vgyVTTXT+v9Y1Wvb34P6/vlHiJTZO/7/8idUi/bv/v8uSei0hFQDAcSoPtH1MAMDHxdkHD4QAwK7F/yDQuwDADDjKDLzzAMCbXVTtzSsBwNYJOvkAZAHAk5ZGe1CcAcCBByXSt9QBwNXfEXAyDQLAmBWP2rtFAsC8eRqqT34CwG/a5onptgLAuRWYN4XvAsC5RAKDHigDwEEc7E2xYAPAVJXUizmZA8Bt+eiDaA35v9Edxj5fVfm/6DaBZKqd+b80ImLmQub5v8sh39YhL/q/onSwaUB4+r9EAtbzl8H6v2jykOshC/u/OtxS6NdU+79qD6Sis577v1NSAvSu6Pu/VEy51sMy/L9BsrVl7Hz8v+YrVNwix/y/Xs0slmER/b845dsOo1v9v3vIyOHhpf2/VTDryRjw/b9pqY+hQjr+vyODG2JahP6/P53QI1vO/r9WY5EdQBj/vy05paQEYv+/vo59LKSr/7+2yHtGGvX/vzcQ3FAxHwDAKstkhbxDAMAvhce1LGgAwJPDfOV/jADAjeNrJrSwAMDNN2TUhkj3v1UYE8G9eve/3PpZ8hOt97/QBt6iht/3v2jFMyUTEvi/dMC747ZE+L/vaXpgb3f4v/6w6zQ6qvi/Y6DSERXd+L+eWQW//Q/5vyC4NRvyQvm/veC2G/B1+b+Q+j/M9aj5v3hIrE4B3Pm/etS42hAP+r8j2b+9IkL6vzEQclo1dfq/bAmOKEeo+r+wqJW0Vtv6v4LmgZ9iDvu/Yut0nmlB+78lm2p6anT7vxSj5w9kp/u/NhunTlXa+79ZyUY5PQ38v2sS8uQaQPy/d6ULee1y/L8f6tUutKX8v207GlFu2Py/9fbOOxsL/b9BuFc0MqX1v7z4tUYjy/W/t9FzHlvx9b+4JEki2hf2vzYpzL6gPva/kQHhZa9l9r+sjCiOBo32v62zbrKmtPa/bHIYUZDc9r9p2JHrwwT3v+0+vAVCLfe/XPBcJQtW97+Be4zRH3/3v5LsJpKAqPe/xyQ97y3S97/zh4dwKPz3v2g22pxwJvi/Pwib+QZR+L+SfTkK7Hv4v9TVqE8gp/i/+H7cR6TS+L9zC0dteP74v33cWzadKvm/L6wTFRNX+b9hIXR22oP5vx2VGsLzsPm/0i/KWV/e+b8Sgv2YHQz6v/K6e9QuOvq/tJvxWZNo+r/yMMF8boH0v/qAdqlLpvS/nui/PMjL9L8ZDLAO5fH0v/QB1duiGPW/jUfrRAJA9b/jrp/OA2j1v6cXYOGnkPW/Arg6ye659b8crMu12OP1v593OLplDva/7hg5zZU59r+xQy7JaGX2vwZPRGzekfa/dFuiWPa+9r+OLaUUsOz2vy40JQsLG/e/CizHiwZK979pzlbLoXn3v8H1KuTbqfe/3aCS1rPa978wPEqJKAz4v6OY+Mk4Pvi/xPeyTeNw+L+hloexJqT4v7giDnsB2Pi/7ob9GHIM+b8zgsbjdkH5v9V8Mh4Od/m/NxYG9jWt+b+MppXC3zD0vyWxEraOXPS/G2ViKA6J9L/LHe8/XLb0v58Q4fx25PS/OhKfOlwT9b/VUVWxCUP1v6lAgPd8c/W/fvR5g7Ok9b/zbwitqtb1v8tW665fCfa/zLFnqM889r+lgtCe93D2v5sFC3/Upfa/vZsNH2Pb9r+IdFg/oBH3v68pZ4yISPe/H5oaoBiA978SaxoDTbj3v+etLS4i8fe/jkCKi5Qq+L+8kxp4oGT4v8qVuURCn/i/6ZNkN3ba+L/c82KMOBb5vzO4Y3eFUvm/j86QJFmP+b9ENJi5r8z5v7AIq1aFCvq/VK5yF9ZI+r+dLDSJzn70v9FKI7cqsPS/VK73KDni9L8ZgrsT9hT1v9XFL59dSPW/M4Nw52t89b/I3of+HLH1vznj7+1s5vW/KwIDuFcc9r+zYFtZ2VL2v0kcIcrtifa/UclH/5DB9r8Mfrvrvvn2v6zLfYFzMve/yxOzsqpr97/qsqByYKX3v9iAnLaQ3/e/Pi7udjca+L8kC6OvUFX4v37FVGHYkPi/VrDjkcrM+L/nJCVNIwn5vzWOhqXeRfm/Qq6ltPiC+b+yqd6bbcD5v7Zj0IQ5/vm/g7DXoVg8+r+N4IEux3r6v3oi92+Bufq/3zRdtYP4+r9hvD38us30v4uM8Lq9/vS/bWm8vUAw9b92ww/ZQGL1v95WzOS6lPW/QWD5vKvH9b8CdmlCEPv1vwWEVFvlLva/K2nm8ydj9r81t8L+1Jf2v2QVfnXpzPa/hMUNWWIC979dyS2yPDj3v1IkvpF1bve/OLIXEQql978tCVlS99v3v9bYq4A6E/i/RDWD0NBK+L8KONN/t4L4v5JdQtbruvi/hwBVJWvz+L/KUJPIMiz5v9seqiVAZfm/cNCGrJCe+b9nzm7XIdj5vwW4EivxEfq/VqOdNvxL+r9JrsCTQIb6v1Mgu+a7wPq/W1hf3mv7+r9s7xKIpcv0vxyCx5NA+fS/LehHB04n9b9CTEhYzFX1v+WTLP65hPW/Z/0mchW09b+wiFIv3eP1vxdkybIPFPa/k5W3e6tE9r+iF2oLr3X2v0mgWuUYp/a/J0c4j+fY9r97Pu2QGQv3v1TRoXStPfe/4Ne8xqFw978J0eEV9aP3vxLP7PKl1/e/RGPs8LIL+L8asxmlGkD4v4XfzqbbdPi/iuV7j/Sp+L+NHZr6Y9/4vxh9noUoFfm/U73qz0BL+b/Ohr16q4H5v6jBISlnuPm/lifdf3Lv+b/vM14lzCb6v1CMqcFyXvq/GvtG/mSW+r+7HFrA0Zz0v0UUGDzLyPS/0Wo11FH19L/TAX3sZCL1vxPo2twDUPW/ZVdp8S1+9b+uVIBq4qz1v7/cx3wg3PW/W4hMUecL9r/mkJYFNjz2vy8fw6sLbfa/Q82fSmee9r9eRMjdR9D2v67fxVWsAve/8DwxmJM197/wo9V//Gj3vyMu1tzlnPe/4ZfUdE7R978jpRkDNQb4v/sDvziYO/i/gJfavHZx+L9KFqssz6f4vzboxRug3vi/si9GFOgV+b9f6/yWpU35v20dohvXhfm/vOYGEXu++b9yhEjdj/f5vzMfBN4TMfq/DVyLaAVr+r/5b7ioCYv0vz+T01znuPS/PPFMcXPn9L9K6mm1rBb1vw7IvuCRRvW/PlvNkyF39b+WtKdYWqj1v0dWlqM62vW/+kHB08AM9r8GT9sz6z/2v+k7z/q3c/a/RvZtTCWo9r+MnB06Md32v+3EiMPZEve/Pp1N1xxJ97/Wf6xT+H/3v4qhNQdqt/e/wYR1sW/v97+t5Z8DByj4v9zaOKEtYfi//uy7IOGa+L+B70AMH9X4v1BqHuLkD/m/ZmuJFTBL+b/QnDIP/ob5v2+B4C1Mw/m/5b8GxxcA+r8paFonXj36v5MkY5Mce/q/r0sJSFC5+r9FcdTYbrH0v4VPXA9h4vS/YMwLewYU9b8I8fexXEb1v/d4oDVhefW/HcERdBGt9b+AJwLJauH1v+RH6n5qFva/vpQX0A1M9r/T3bjnUYL2v+Zm5OIzufa//kCX0bDw9r8HqK23xSj3v5g01I1vYfe/w75xQqua97/x2om6ddT3v5/kl9LLDvi/+ZRiX6pJ+L8pLMguDoX4v1A8gwj0wPi/KSzorlj9+L+pjZvfODr5vzBqQVSRd/m/xqolw161+b97xt3fnfP5v3/k41tLMvq/C6Ir52Nx+r84rrAw5LD6v3tv/+bI8Pq/n+e3uA4x+79CLSn5huf0v/o541+LGfW/xEj76y1M9b/44xi+a3/1v2q4rexBs/W/UQfyhK3n9b+32NeLqxz2v3Tk9P44Uva/WTRj1VKI9r+ejZgA9r72v865NG0f9va/W9DGA8wt97/YqYmp+GX3v3ysF0Ginve/dicWq8XX978md9jGXxH4v2cw+3JtS/i//JP3jeuF+L+wja/21sD4v2aE8ows/Pi/Q0H7Mek3+b/QNOfICXT5v/JgJzeLsPm/Gi7rZGrt+b+AcYU9pCr6vwfpy681aPq/C3Bxrhum+r/dLlswU+T6v+QE8TDZIvu/RWtpsKph+78oXeBjTfv0vyUir3LuK/W/vlP90xld9b/lzuAfzY71v6sJaOkFwfW/os44v8Hz9b+PDygs/ib2v8jpyre4Wva/JPwA5+6O9r/HMng8nsP2vzYxKjnE+Pa/XYbTXF4u97/m2GQmamT3v388bhTlmve/TOKEpczR978TWKNYHgn4v2uKhK3XQPi/rL75JPZ4+L+VuTtBd7H4vz1HN4ZY6vi/qljVeZcj+b956j6kMV35v2HnHJAkl/m/KTjUym3R+b9tMb7kCgz6v3COXXH5Rvq/kyaQBzeC+r+uib1Bwb36v/ytAr6V+fq/o9haHrI1+7+K+p/DOeb0vxXaaOTrFPW/4CAM1yZE9b+XLwzj6HP1v4F5l0gwpPW/4/3xQPvU9b8nl9v+Rwb2v+Mc864UOPa/RVkWeF9q9r/L1b57Jp32vySGW9Zn0Pa/slqnnyEE97+bxvzqUTj3v1tHpsf2bPe/q/0rQQ6i978RaZ5fltf3v/dY3ieNDfi/+ibim/BD+L9mT/i6vnr4vzl9B4L1sfi/9B/M65Lp+L9yoRPxlCH5v8BS9Yj5Wfm/nyYJqb6S+b+ZUJxF4sv5v2nf41FiBfq/KWktwDw/+r+R3w2Cb3n6vw+ijoj4s/q/TeNYxNXu+r/a0++Hasb0vyvAzg909PS/+r79PxMj9b+vQ6GdRlL1v42kq6AMgvW//shVtGOy9b89JZc3SuP1v/TMnH2+FPa/dms/zr5G9r8g9XdmSXn2vyjq0nhcrPa/nQfiLfbf9r+9R6ykFBT3v+0WHPO1SPe/eqZrJth9978PSo9DebP3vybQnUeX6fe/Hck2KDAg+L+Ls+bTQVf4vxUHiTLKjvi/5BmoJcfG+L/j3tqINv/4v0N9IDIWOPm/jMM58mNx+b93egCVHav5vwidvOFA5fm/E313m8sf+r9G3EyBu1r6vwgDuk4Olvq/T9/qu8HR+r8=", + "bdata": "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", "dtype": "f8" } }, @@ -4033,7 +4039,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -4886,4 +4892,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/python/gtsam/examples/Gal3ImuNEESReset.ipynb b/python/gtsam/examples/Gal3ImuNEESReset.ipynb new file mode 100644 index 0000000000..218fc45cb8 --- /dev/null +++ b/python/gtsam/examples/Gal3ImuNEESReset.ipynb @@ -0,0 +1,2218 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Gal3 IMU EKF: NEES With vs. Without Reset\n", + "\n", + "This notebook compares NEES (Normalized Estimation Error Squared) for the Gal3 IMU EKF when the measurement update **does** and **does not** perform the reset (covariance transport) step.\n", + "\n", + "We keep the setup simple and focus on the impact of the `performReset` flag in `updateWithVector`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9343b3c0", + "metadata": {}, + "outputs": [], + "source": [ + "# Install GTSAM from pip if running in Google Colab\n", + "try:\n", + " import google.colab # type: ignore\n", + " %pip install --quiet gtsam-develop\n", + "except Exception:\n", + " pass # Not in Colab\n", + "\n", + "import numpy as np\n", + "import plotly.graph_objects as go\n", + "\n", + "import gtsam\n", + "from gtsam import Gal3\n", + "from gtsam import ConstantTwistScenario, ScenarioRunner" + ] + }, + { + "cell_type": "markdown", + "id": "2c7a5da0", + "metadata": {}, + "source": [ + "### NEES: theoretical introduction\n", + "\n", + "The Normalized Estimation Error Squared (NEES) is\n", + "\n", + "$$\n", + "\\mathrm{NEES} = e^T P^{-1} e,\n", + "$$\n", + "\n", + "where **e** is the estimation error in the current tangent space and **P** is the filter covariance.\n", + "For a consistent filter with correct noise modeling, the **expected** NEES equals the **state dimension** (here 10).\n", + "In practice, we estimate this expectation by **Monte Carlo averaging** over multiple simulated runs.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9123d34f", + "metadata": {}, + "outputs": [], + "source": [ + "def nees(error, covariance):\n", + " \"\"\"Compute NEES = e^T P^{-1} e.\"\"\"\n", + " return float(error.T @ np.linalg.solve(covariance, error))" + ] + }, + { + "cell_type": "markdown", + "id": "88a2f083", + "metadata": {}, + "source": [ + "### Scenario: steady yaw rate with constant body-frame velocity\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e3b400b9", + "metadata": {}, + "outputs": [], + "source": [ + "radius = 30.0\n", + "angular_velocity = np.pi # rad/sec\n", + "w_b = np.array([0, 0, angular_velocity]) # body yaw rate\n", + "v_n = np.array([radius * angular_velocity, 0, 0]) # world-frame velocity\n", + "\n", + "scenario = ConstantTwistScenario(w_b, v_n)\n", + "\n", + "# Simulation parameters\n", + "dt = 1.0 / 180.0 # 1 degree per step\n", + "T = 6.0 # total duration (s)\n", + "N = int(T / dt)\n", + "\n", + "# IMU params (NED)\n", + "params = gtsam.PreintegrationParams.MakeSharedD(9.81)\n", + "params.setAccelerometerCovariance(np.diag([2e-1] * 3))\n", + "params.setIntegrationCovariance(np.diag([2e-1] * 3))\n", + "params.setGyroscopeCovariance(np.diag([2e-2] * 3))\n", + "\n", + "runner = ScenarioRunner(scenario, params, dt,\n", + " gtsam.imuBias.ConstantBias(np.zeros(3), np.zeros(3)))\n" + ] + }, + { + "cell_type": "markdown", + "id": "4c22b95b", + "metadata": {}, + "source": [ + "### Monte Carlo analysis of running the EKF" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ce1ed85c", + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "def run_one_filter(times, params, X0, P0, R, measurements, true_states, perform_reset):\n", + " \"\"\"Run one EKF filter over the given measurements and return NEES values.\"\"\"\n", + " nees_vals = np.zeros(len(times))\n", + " ekf = gtsam.Gal3ImuEKF(X0, P0, params)\n", + "\n", + " for k, t in enumerate(times):\n", + " if k > 0:\n", + " omega_meas, acc_meas = measurements[k][\"imu\"]\n", + " ekf.predict(omega_meas, acc_meas, dt)\n", + "\n", + " if measurements[k][\"has_meas\"]:\n", + " predicted_position = ekf.state().position()\n", + " H = measurements[k][\"H\"]\n", + " z = measurements[k][\"z\"]\n", + " ekf.updateWithVector(predicted_position, H, z, R, perform_reset)\n", + "\n", + " X_true = true_states[k]\n", + " err = ekf.state().localCoordinates(X_true)\n", + " nees_vals[k] = nees(np.asarray(err).reshape(-1), ekf.covariance())\n", + "\n", + " return nees_vals\n", + "\n", + "\n", + "def run_one_trial(\n", + " times, scenario, runner, params, P0, init_sampler, pos_sampler, pos_std, M\n", + "):\n", + " measurements = []\n", + " true_states = []\n", + " R = np.eye(3) * (pos_std**2)\n", + "\n", + " for k, t in enumerate(times):\n", + " X_true = scenario.gal3(t)\n", + " true_states.append(X_true)\n", + "\n", + " if k == 0:\n", + " xi0 = np.asarray(init_sampler.sample()).reshape(-1)\n", + " X0 = X_true.retract(xi0)\n", + "\n", + " if k > 0:\n", + " omega_meas = runner.measuredAngularVelocity(t - dt)\n", + " acc_meas = runner.measuredSpecificForce(t - dt)\n", + " else:\n", + " omega_meas = np.zeros(3)\n", + " acc_meas = np.zeros(3)\n", + "\n", + " has_meas = k % M == 0\n", + " if has_meas:\n", + " z = X_true.position() + np.asarray(pos_sampler.sample()).reshape(-1)\n", + " H = np.zeros((3, 10))\n", + " H[:, 6:9] = X_true.attitude().matrix()\n", + " else:\n", + " z = None\n", + " H = None\n", + "\n", + " measurements.append(\n", + " {\"imu\": (omega_meas, acc_meas), \"has_meas\": has_meas, \"z\": z, \"H\": H}\n", + " )\n", + "\n", + " nees_reset = run_one_filter(\n", + " times, params, X0, P0, R, measurements, true_states, True\n", + " )\n", + " nees_no_reset = run_one_filter(\n", + " times, params, X0, P0, R, measurements, true_states, False\n", + " )\n", + "\n", + " return nees_reset, nees_no_reset" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "4973d2b3", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize EKFs\n", + "init_sigmas = np.array([0.1, 0.1, 0.1, 0.4, 0.4, 0.4, 2.0, 2.0, 2.0, 0.1])\n", + "P0 = np.diag(init_sigmas ** 2)\n", + "P0[9, 9] = 2.5e-1 # time variance (0.05^2)\n", + "\n", + "# Noise samplers\n", + "pos_std = 20.0 # m measurement noise (more conservative)\n", + "\n", + "pos_sampler = gtsam.Sampler(np.array([pos_std] * 3), 25)\n", + "init_sampler = gtsam.Sampler(init_sigmas, 23)\n", + "\n", + "times = np.linspace(0.0, T, N + 1)\n", + "\n", + "num_mc = 100\n", + "nees_reset_mc = np.zeros((num_mc, len(times)))\n", + "nees_no_reset_mc = np.zeros((num_mc, len(times)))\n", + "\n", + "M = 50 # measurement cadence\n", + "for mc in range(num_mc):\n", + " nees_reset_mc[mc], nees_no_reset_mc[mc] = run_one_trial(\n", + " times, scenario, runner, params, P0, init_sampler, pos_sampler, pos_std, M\n", + " )\n", + "\n", + "nees_reset = nees_reset_mc.mean(axis=0)\n", + "nees_no_reset = nees_no_reset_mc.mean(axis=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "cf993f72", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "line": { + "color": "#0fae66" + }, + "name": "With reset", + "type": "scatter", + "x": { + "bdata": "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", + "dtype": "f8" + }, + "y": { + "bdata": "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", + "dtype": "f8" + } + }, + { + "line": { + "color": "#d62728" + }, + "name": "Without reset", + "type": "scatter", + "x": { + "bdata": "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", + "dtype": "f8" + }, + "y": { + "bdata": "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", + "dtype": "f8" + } + }, + { + "line": { + "color": "black", + "dash": "dash" + }, + "name": "Expected NEES (dim)", + "type": "scatter", + "x": { + "bdata": "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", + "dtype": "f8" + }, + "y": [ + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10 + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "NEES comparison: reset vs. no reset" + }, + "xaxis": { + "title": { + "text": "Time (s)" + } + }, + "yaxis": { + "title": { + "text": "NEES" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot NEES for both filters\n", + "dim = 10 # Gal3 tangent dimension\n", + "fig = go.Figure()\n", + "fig.add_scatter(x=times, y=nees_reset, name='With reset', line=dict(color=\"#0fae66\"))\n", + "fig.add_scatter(x=times, y=nees_no_reset, name='Without reset', line=dict(color='#d62728'))\n", + "fig.add_scatter(x=times, y=[dim] * len(times), name='Expected NEES (dim)',\n", + " line=dict(color='black', dash='dash'))\n", + "fig.update_layout(title='NEES comparison: reset vs. no reset',\n", + " xaxis_title='Time (s)', yaxis_title='NEES')\n", + "fig.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "a3255b3c", + "metadata": {}, + "source": [ + "## Interpreting the results\n", + "\n", + "These curves are **Monte Carlo averages**, so they are much closer to the expected behavior than a single run.\n", + "The dashed line at 10 is the theoretical mean NEES for a 10‑D state.\n", + "\n", + "In this plot, both filters remain **above 10**, meaning they are still somewhat **over‑confident**.\n", + "The **no‑reset** curve is consistently higher, showing worse inconsistency when covariance is not transported after retraction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Takeaway.** The reset-enabled filter keeps the covariance aligned with the current tangent space, \n", + "leading to a NEES trace that is better behaved and closer to the expected value. Without reset, the \n", + "covariance is not transported after retraction, so NEES can become inconsistent over time.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py312", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python/gtsam/examples/NavStateImuASVExample.ipynb b/python/gtsam/examples/NavStateImuASVExample.ipynb index 6a3184e7f1..2845ec4850 100644 --- a/python/gtsam/examples/NavStateImuASVExample.ipynb +++ b/python/gtsam/examples/NavStateImuASVExample.ipynb @@ -29,7 +29,13 @@ ] }, "source": [ - "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\nAtlanta, Georgia 30332-0415\nAll Rights Reserved\n\nAuthors: Frank Dellaert, et al. (see THANKS for the full author list)\n\nSee LICENSE for the license information" + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" ] }, { @@ -42,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 1, "id": "e1b272ef", "metadata": { "tags": [ @@ -61,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 2, "id": "fdd02b60", "metadata": { "tags": [ @@ -100,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "88e15df8", "metadata": { "tags": [ @@ -149,7 +155,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "6a6557a9", "metadata": {}, "outputs": [ @@ -205,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 5, "id": "735490dc", "metadata": { "tags": [ @@ -227,996 +233,10 @@ "mode": "lines", "name": "Delta (s)", "type": "scatter", - "y": [ - 0.01, - 0.01, - 0.009999999999999998, - 0.010000000000000002, - 0.010000000000000002, - 0.009999999999999995, - 0.010000000000000009, - 0.009999999999999995, - 0.009999999999999995, - 0.010000000000000009, - 0.009999999999999995, - 0.009999999999999995, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999981, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999981, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999981, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999981, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999953, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999953, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999953, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999953, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999898, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999898, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999898, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999898, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999787, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999787, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999787, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999787, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.010000000000000009, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.020000000000000018, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.03000000000000025, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.010000000000000231, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.02999999999999936, - 0.020000000000000462, - 0.03000000000000025, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.03000000000000025, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000000675, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.009999999999999787, - 0.010000000000001563, - 0.009999999999999787, - 0.009999999999999787 - ] + "y": { + "bdata": "exSuR+F6hD97FK5H4XqEP3oUrkfheoQ/fBSuR+F6hD98FK5H4XqEP3gUrkfheoQ/gBSuR+F6hD94FK5H4XqEP3gUrkfheoQ/gBSuR+F6hD94FK5H4XqEP3gUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP3AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP3AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP3AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP3AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD9gFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD9gFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD9gFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD9gFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP0AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP0AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/QBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/QBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD8AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEPwAUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/ABSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD8AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEP4AUrkfheoQ/gBSuR+F6hD+AFK5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEP4AUrkfhepQ/ABWuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFa5H4XqEPwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AH4XrUbiePwAUrkfheoQ/ABWuR+F6hD8AFK5H4XqEPwAVrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAehetRuJ4/ABWuR+F6lD8AH4XrUbiePwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/AB+F61G4nj8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAWrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABauR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFq5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABiuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAYrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AFK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8AGK5H4XqEPwAUrkfheoQ/ABSuR+F6hD8=", + "dtype": "f8" + } } ], "layout": { @@ -1399,57 +419,6 @@ "type": "heatmap" } ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], "histogram": [ { "marker": { @@ -1650,6 +619,17 @@ "type": "scattergl" } ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], "scattermapbox": [ { "marker": { @@ -2104,7 +1084,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 6, "id": "9c6085bd", "metadata": {}, "outputs": [], @@ -2129,7 +1109,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 7, "id": "7698e840", "metadata": {}, "outputs": [], @@ -2141,7 +1121,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 8, "id": "98ea7672", "metadata": {}, "outputs": [], @@ -2226,7 +1206,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "b16a8666", "metadata": { "tags": [ @@ -2248,1987 +1228,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -140.44530741128023, - -140.43802556799068, - -140.43058696876915, - -140.42296913583576, - -140.41514529213285, - -140.40719060168055, - -140.39911589315605, - -140.39091390106367, - -140.38256770300802, - -140.37412348875338, - -140.3655880550165, - -140.35695383005708, - -140.3482013497324, - -140.33934478907594, - -140.330402285441, - -140.3214295332546, - -140.31247163645924, - -140.30354253346013, - -140.29463989148502, - -140.28582616907488, - -140.27710136849743, - -140.26845503426648, - -140.25993094754432, - -140.2515017917551, - -140.2431561070601, - -140.2349129642713, - -140.22677298317015, - -140.21878118065527, - -140.21094192791685, - -140.20328724864262, - -140.19583645967674, - -140.18862578776944, - -140.18170803576513, - -140.17510474566154, - -140.16882384354776, - -140.1628838903079, - -140.15731341705725, - -140.15215446679076, - -140.1474300592102, - -140.14312589741067, - -140.13928369038396, - -140.13594775991004, - -140.13316229175848, - -140.13094825603477, - -140.1293411293648, - -140.12832175823507, - -140.12782891491213, - -140.12784558198692, - -140.12832760459622, - -140.12925966536517, - -140.1306166672335, - -140.13235567170932, - -140.1344211485966, - -140.13671413659011, - -140.13918651419297, - -140.1418001994604, - -140.1444709356088, - -140.14716142313173, - -140.1498527703393, - -140.15254913143283, - -140.15526694468969, - -140.15801555633203, - -140.16077594926742, - -140.16353655312406, - -140.16631451823403, - -140.169122431169, - -140.17196931370154, - -140.17485562640667, - -140.17777979829725, - -140.18074025823938, - -140.1837218583272, - -140.1867087927068, - -140.18968586352673, - -140.19264970647666, - -140.19557994236592, - -140.19845875286097, - -140.20127835361123, - -140.2040273208427, - -140.20668224366761, - -140.2092211775817, - -140.21163793095803, - -140.2139094261936, - -140.21601437665333, - -140.21793655546307, - -140.21965513712146, - -140.2211140680823, - -140.22229612380528, - -140.22316826220887, - -140.22372466675333, - -140.22394753235525, - -140.2238180649877, - -140.22331205190065, - -140.22239592510567, - -140.22106234660282, - -140.21930689438187, - -140.21713346560108, - -140.2145885654898, - -140.21165088648834, - -140.2083436273481, - -140.20452710139577, - -140.20026512773404, - -154.4307873445, - -154.42514776672965, - -154.41913291952457, - -154.4126908121984, - -154.4059231378581, - -154.3988964447161, - -154.3915247048955, - -154.38393846064693, - -154.37619447253093, - -154.36819572391823, - -154.3599262627184, - -154.35141146217114, - -154.34272110976934, - -154.33397778387956, - -154.3250531144311, - -154.31594805530725, - -154.30686263029853, - -154.29775067572416, - -154.28851539716806, - -154.2792449335626, - -154.2700697373793, - -154.26090866334835, - -154.2516752200971, - -154.24255816372832, - -154.2335650319768, - -154.2246696150427, - -154.21589559635854, - -154.20730525199406, - -154.1988945058123, - -154.19065649422225, - -154.18262248273936, - -154.17478392885263, - -154.16713807161676, - -154.15971278025606, - -154.15250496082186, - -154.14551310206693, - -154.1387365092719, - -154.1321950955421, - -154.12589134571817, - -154.11982177383186, - -154.11394594805847, - -154.10830245073782, - -154.10290380451448, - -154.0977366942624, - -154.09277442553653, - -154.08801808203802, - -154.08348983692417, - -154.079231665917, - -154.0752173310441, - -154.07143048453764, - -154.0679066981397, - -154.06466265536773, - -154.06169510483377, - -154.05899562628838, - -154.05655086975347, - -154.0543588036911, - -154.05242763712823, - -154.0507521804114, - -154.04932782042266, - -154.04814031290897, - -154.04719436363143, - -154.0465005317911, - -154.046041760246, - -154.04580435217858, - -154.0457903796802, - -154.04596306643336, - -154.04628383659275, - -154.04675024776571, - -154.04734343662528, - -154.0480134823979, - -154.04872625888362, - -154.0494459357773, - -154.05011285800376, - -154.05065922020094, - -154.05102279257454, - -154.05112632235287, - -154.0509313736102, - -154.05041891892222, - -154.04957163575958, - -154.04841565026538, - -154.0469852484025, - -154.04529035624688, - -154.04334124015, - -154.0411532551366, - -154.0387167224269, - -154.03603747720618, - -154.03313470608683, - -154.03000814090132, - -154.0266464991681, - -154.02306229356228, - -154.01926516101125, - -154.01523023949042, - -154.01096147387338, - -154.00646885577788, - -154.00175059101548, - -153.99680013514228, - -153.99162123045426, - -153.98621576055987, - -153.98057895534566, - -153.97471464292937, - -168.50766407182348, - -168.50192280260006, - -168.49619361662533, - -168.4904682334591, - -168.48473918114976, - -168.47898392500866, - -168.47318793213728, - -168.46733892301927, - -168.4614069034179, - -168.45538157379505, - -168.44924433253436, - -168.4429635059288, - -168.4365046431807, - -168.42983623175763, - -168.42291840369504, - -168.41565043021464, - -168.40802645709286, - -168.4000269507829, - -168.3916071180483, - -168.38274841993058, - -168.36305728977078, - -168.35259893845907, - -168.34158201108656, - -168.33000140700935, - -168.31787706754466, - -168.30525403839954, - -168.29216649573746, - -168.2786337967332, - -168.2646918810557, - -168.25039121755148, - -168.23575667231853, - -168.2208401138845, - -168.20567291254858, - -168.19029353352815, - -168.17472927407437, - -168.1590139206751, - -168.14316599645974, - -168.12720203703088, - -168.1111415380594, - -168.09498969611022, - -168.0787512393181, - -168.0624416213785, - -168.04607809565394, - -168.02968068233733, - -168.01327173384522, - -167.99687894486775, - -167.98050919158837, - -167.9642083290215, - -167.94801049926275, - -167.93191728029342, - -167.91593928170713, - -167.9001069871023, - -167.88443798740386, - -167.8689280745351, - -167.8535757291685, - -167.83839849707584, - -167.8234064628018, - -167.80860321502888, - -167.79401055969686, - -167.7796498597418, - -167.76554706029557, - -167.75173825700466, - -167.73824926200945, - -167.72509700606975, - -167.71230262913497, - -167.69995499961126, - -167.68806161222366, - -167.6766320464454, - -167.66566114647037, - -167.6551481016334, - -167.6450993760696, - -167.63551181833768, - -167.62636291096425, - -167.61765734942014, - -167.60940032861535, - -167.60158808999688, - -167.59421648805838, - -167.58728150378514, - -167.58077554233628, - -167.57469462921478, - -167.56903958633464, - -167.56381232020294, - -167.55903175104828, - -167.55470280326136, - -167.55082514033828, - -167.54740238150742, - -167.54443603223461, - -167.54192219634976, - -167.53986120184817, - -167.53825483767974, - -167.53709784152062, - -167.53637284705195, - -167.5360856314804, - -167.5362441388156, - -167.53685005879336, - -167.53790217444623, - -167.53938021406802, - -167.5412945250222, - -167.54364350466645, - -167.54641309178012, - -171.21296208405587, - -171.21578169635876, - -171.21894347921517, - -171.22242799208274, - -171.22621857084215, - -171.23030711242697, - -171.23469578603962, - -171.2393797950287, - -171.24433658918213, - -171.24955486093845, - -171.25504737484854, - -171.26085002649208, - -171.26698678494373, - -171.27345909848316, - -171.28022284022347, - -171.2872382881181, - -171.29452863655632, - -171.30208862462797, - -171.30990843756834, - -171.31800768487335, - -171.32637748756787, - -171.33499804102945, - -171.34383525218098, - -171.3528703386256, - -171.36203759108247, - -171.3712378992225, - -171.38049867401455, - -171.38976944641624, - -171.39900874248934, - -171.408245055514, - -171.41751964221874, - -171.42683747259696, - -171.43620607924925, - -171.4457069007229, - -171.45534993160697, - -171.46511371638974, - -171.47506932685627, - -171.48521930208216, - -171.4955218224276, - -171.50594008713898, - -171.51649125161606, - -171.5270961533, - -171.537661590083, - -171.54818602557657, - -171.55859027417836, - -171.568809234548, - -171.57879034808664, - -171.5884754390142, - -171.59781695686382, - -171.60678033694413, - -171.61529699299277, - -171.62336781725355, - -171.63100763471684, - -171.63816762785368, - -171.6448859584501, - -171.65126811332786, - -171.65739921929153, - -171.6633710940472, - -171.66929796845312, - -171.6752545589196, - -171.68125983730465, - -171.68737402193008, - -171.6936578234792, - -171.7001089617738, - -171.70673097266612, - -171.7135314524235, - -171.72053427878924, - -171.72760007993057, - -171.73472168769067, - -171.7418943222727, - -171.74902195030936, - -171.75606661458227, - -171.763066102431, - -171.7700165357659, - -171.7768579453617, - -171.7836931458375, - -171.79060016838102, - -171.79745051073155, - -171.80430176307632, - -171.8111838679384, - -171.81808822026443, - -171.825031201374, - -171.83206287609696, - -171.83919290297877, - -171.84633623217138, - -171.85349656739734, - -171.86067400956506, - -171.86779504630707, - -171.8748346162676, - -171.88178403760404, - -171.90122381636044, - -171.90750550084502, - -171.91356374528536, - -171.9193697022125, - -171.92489099168841, - -171.9301343441666, - -171.93510354667566, - -171.9398037535304, - -171.94426093347153, - -171.94848370494392, - -173.23755373925465, - -173.24112039265367, - -173.2444974635708, - -173.247691052805, - -173.25070119796925, - -173.2535322498298, - -173.25620347293747, - -173.25871285920638, - -173.2610572036155, - -173.26326394877492, - -173.2653340932405, - -173.267264383391, - -173.26907808320314, - -173.27079354796768, - -173.2724092502899, - -173.27392071447466, - -173.27540504288373, - -173.27685337229642, - -173.2782741512884, - -173.2795876195203, - -173.2807683686538, - -173.28182618022964, - -173.2827668503907, - -173.28358555334398, - -173.2842841884288, - -173.28487309305225, - -173.2853940594531, - -173.28585368392987, - -173.28624747248335, - -173.2865969938708, - -173.28692268225626, - -173.28723276129335, - -173.2875407790851, - -173.28789684291775, - -173.28828945159412, - -173.2887084341462, - -173.28909472826456, - -173.28942724526664, - -173.28971501689975, - -173.28996927802507, - -173.29019744692215, - -173.29039868929377, - -173.2905684185785, - -173.29074837534188, - -173.29093502635203, - -173.29111624953094, - -173.29129946779585, - -173.29148732595704, - -173.29166200656002, - -173.29181346301368, - -173.29195435044898, - -173.29207966011012, - -173.29222266523368, - -173.292359670186, - -173.29254766993668, - -173.29273820813916, - -173.29293414755858, - -173.2930604704043, - -173.29313203114302, - -173.29310746375467, - -173.29300763651239, - -173.29277758083828, - -173.29244854748785, - -173.29197667150552, - -173.29141910637307, - -173.2907481007024, - -173.29001289369887, - -173.28916452197583, - -173.28824367053906, - -173.28718842897857, - -173.2859856919621, - -173.28458548369917, - -173.283044303766, - -173.28133358753993, - -173.27949704295958, - -173.27752918737562, - -173.27550009906648, - -173.27339369741395, - -173.27125363780286, - -173.2690465211445, - -173.26684808764014, - -173.2647086232003, - -173.2626148825804, - -173.2605541492793, - -173.25852557688552, - -173.25653146778293, - -173.25460530379146, - -173.2527548651827, - -173.25098623408823, - -173.24929973858465, - -173.24769067482882, - -173.24614276642987, - -173.24464194930508, - -173.2431750609216, - -173.2416995676113, - -173.24015833237607, - -173.23848466316022, - -173.23663652477282, - -173.23454085579883, - -173.23208356991285, - -174.16356111934024, - -174.1559732430338, - -174.1472716012053, - -174.1373271899791, - -174.12595144323538, - -174.11297439809925, - -174.0982925338214, - -174.0817548007068, - -174.06311947660132, - -174.04233277635055, - -174.01937079038947, - -173.93451875853745, - -173.86743503119447, - -173.75625076784857, - -173.71693469541535, - -173.67748797949935, - -173.63803437225576, - -173.59893819883555, - -173.56073345938444, - -173.52373223438738, - -173.48816140493292, - -173.4544118809086, - -173.4228954133966, - -173.39368446136348, - -173.367062093369, - -173.34336145274656, - -173.3227027776772, - -173.30514634554106, - -173.29087789800238, - -173.28000672158123, - -173.2724220125043, - -173.2681679473191, - -173.26728634651022, - -173.26973072548128, - -173.2754072968774, - -173.28418963149764, - -173.2959657266582, - -173.31056092328984, - -173.3278129414913, - -173.3474829372097, - -173.36945310776733, - -173.39342764693427, - -173.41910158049225, - -173.4463233227824, - -173.47478466762036, - -173.5042674295559, - -173.53434245546117, - -173.5648590443198, - -173.59544680494707, - -173.62585122380904, - -173.65598005288086, - -173.68560578441608, - -173.71441289852805, - -173.74219798071428, - -173.768854820832, - -173.79410935393778, - -173.81772455582623, - -173.83968253500956, - -173.8597928355572, - -173.87792903870871, - -173.894232496846, - -173.90873287441767, - -173.92146538758493, - -173.93248614535295, - -173.9419666256791, - -173.94998807579123, - -173.95664999544306, - -173.9620020030163, - -173.9661466685636, - -173.96925728134119, - -173.9715117184183, - -173.97304146016523, - -173.97403093760346, - -173.9746705633896, - -173.9748706129647, - -173.97472317718947, - -173.9743758704326, - -173.97391430610304, - -173.97342947698743, - -173.9729887754401, - -173.97263450971957, - -173.9723845854464, - -173.97230843212733, - -173.9724696798152, - -173.9727732936993, - -173.9732365840808, - -173.973909099184, - -173.97477738516204, - -173.97572990810895, - -173.97679061457868, - -173.97796848156202, - -173.97898125988644, - -173.97976926076555, - -173.9802871650707, - -173.98030851378238, - -173.97962163531778, - -173.97835296910912, - -173.9765571776469, - -173.9740235581223, - -173.9708706448225, - -174.52965887653406, - -174.52421086907464, - -174.51800148722717, - -174.51114311054656, - -174.5036440524094, - -174.4953782787449, - -174.48643754024565, - -174.4768915537856, - -174.46656283464586, - -174.4554579201734, - -174.44363238114246, - -174.43108933129585, - -174.41791787125703, - -174.40434374999734, - -174.39053423934948, - -174.37645985914597, - -174.36231155481946, - -174.34826013657215, - -174.33433008940676, - -174.3206247079833, - -174.30727306859941, - -174.29436479854343, - -174.2819835732635, - -174.2702298755544, - -174.25918881762647, - -174.24901000237213, - -174.2397810468529, - -174.23153561191182, - -174.2243855517915, - -174.21840860823113, - -174.21356239483282, - -174.20976427037846, - -174.20718403898445, - -174.20565645330194, - -174.2050055451597, - -174.20530740280637, - -174.20649666870003, - -174.20846281408288, - -174.2111356225615, - -174.21454926621277, - -174.21850500697383, - -174.22274047652644, - -174.22739048601628, - -174.23223000959268, - -174.2370396838693, - -174.2418058081674, - -174.24653245661662, - -174.25987842835474, - -174.26326753636965, - -174.2660902506908, - -174.26845189222226, - -174.27029894044347, - -174.27147147071327, - -174.27194502884947, - -174.27183695044505, - -174.2710324286745, - -174.26947629909782, - -174.26730664479362, - -174.2644644447683, - -174.26090899582445, - -174.25671899936557, - -174.25194198521854, - -174.2465604443894, - -174.2406080904638, - -174.23424140568366, - -174.22746147059166, - -174.22030213585276, - -174.21281648089231, - -174.20504306638935, - -174.1970127146945, - -174.18878976695416, - -174.18044243841385, - -174.17197620829427, - -174.16342994168056, - -174.15485522911766, - -174.14627140200102, - -174.13771643036654, - -174.1291941988468, - -174.12070072209556, - -174.1122750024226, - -174.10395373813148, - -174.09574306700424, - -174.08767901118418, - -174.07979823524488, - -174.07206870744054, - -174.064506556876, - -174.05715866708726, - -174.05003993165982, - -174.04315584785152, - -174.03653411758094, - -174.03019268541615, - -174.0241253006321, - -174.01834346001775, - -174.01285813647968, - -174.00767453979225, - -174.00279568286635, - -173.99822433578876, - -173.99395762137777, - -173.9899710300505, - -173.98626403309694, - -174.4094743970129, - -174.406038193447, - -174.40293376947193, - -174.40014780779782, - -174.39769074235713, - -174.3955853805658, - -174.39378574122614, - -174.39223818173437, - -174.39092204262369, - -174.38979396366184, - -174.3888201856616, - -174.3879910783474, - -174.38730232138417, - -174.38673540831405, - -174.386291417054, - -174.386017959125, - -174.38588567513668, - -174.38584382166263, - -174.38587469822193, - -174.3859662090483, - -174.38608920903323, - -174.38622348025504, - -174.38635755152342, - -174.38643519555208, - -174.38639206920598, - -174.38620052193485, - -174.38580962610664, - -174.38518061883008, - -174.38428853862985, - -174.3831180845332, - -174.381657984282, - -174.37990226503038, - -174.3778541017177, - -174.37551368606285, - -174.37288378975575, - -174.3699680819806, - -174.36680096976806, - -174.36340667396118, - -174.35976879961538, - -174.35584784849928, - -174.35164938609984, - -174.34719421825088, - -174.3425174086159, - -174.3376488115195, - -174.33261310477687, - -174.32743742572248, - -174.322137723832, - -174.31676039606987, - -174.31135773506918, - -174.30596919485606, - -174.30063763657216, - -174.29541077296503, - -174.2903065628569, - -174.28532737054334, - -174.280500553782, - -174.27583296487424, - -174.2712480877448, - -174.26673057214197, - -174.26228690820537, - -174.25783188659068, - -174.25335797234428, - -174.24886333432846, - -174.24433308525622, - -174.23975650626633, - -174.23513678539754, - -174.23046653870222, - -174.2256775723209, - -174.22075822265518, - -174.21570214308585, - -174.21044360369802, - -174.20493617011468, - -174.19917113576616, - -174.19315719457032, - -174.18685838438918, - -174.18027301605048, - -174.1734093941328, - -174.1662168734882, - -174.158711143946, - -174.15090624513596, - -174.14277011979075, - -174.13428063092616, - -174.1254543183013, - -174.11630188831842, - -174.1067981720532, - -174.09695226290995, - -174.0867689093806, - -174.0762211608296, - -174.06529658434124, - -174.0539938733308, - -174.04227379116816, - -174.03009542402398, - -174.01745822930985, - -174.0043620219391, - -173.9907713634875, - -173.97669713604617, - -173.96215813613182, - -173.94715581342288, - -173.93167897905104, - -173.91575110740737, - -173.89940378548027, - -174.2321009538363, - -174.2141415355978, - -174.1958353145472, - -174.17718491376985, - -174.15820520230213, - -174.13892646522035, - -174.11937503558, - -174.09957239466456, - -174.0795539362621, - -174.05936559966756, - -174.0390773768505, - -174.01870407183551, - -173.99826792967693, - -173.97780202691118, - -173.9573244068303, - -173.93685897369622, - -173.9164119691729, - -173.8960057695931, - -173.87566899163403, - -173.85544800441798, - -173.8353855585174, - -173.8154961385924, - -173.79578190246687, - -173.7762595547425, - -173.756977983746, - -173.73794196504022, - -173.71915245346145, - -173.70064903374924, - -173.68243934265777, - -173.6645261316482, - -173.64695882050069, - -173.6297794832723, - -173.61300202249168, - -173.59663941941946, - -173.5807604111328, - -173.56535578090524, - -173.55041375456287, - -173.53597143687801, - -173.5220265193826, - -173.50856293427643, - -173.49559591653946, - -173.48315431096125, - -173.47122862300395, - -173.45980095695506, - -173.44891871635832, - -173.4385222557485, - -173.42857347127537, - -173.41909925208088, - -173.41009900731424, - -173.4015608221825, - -173.3934994583194, - -173.38599652364945, - -173.37904378285637, - -173.37263815290248, - -173.36682750758493, - -173.36166376620517, - -173.35715880968436, - -173.35332404851502, - -173.35021506444602, - -173.34783157676074, - -173.34615789449222, - -173.3452673632013, - -173.34514988773924, - -173.34576029514955, - -173.34707715014602, - -173.34903028379878, - -173.35152544372633, - -173.35453204262512, - -173.35807232210468, - -173.36210651539196, - -173.36659734819906, - -173.37154260395008, - -173.3769320582986, - -173.3827367150326, - -173.38893721572512, - -173.39553187486416, - -173.40249971655567, - -173.40981318933677, - -173.41750072262565, - -173.42555675712208, - -173.4339755509984, - -173.44277788039514, - -173.45198761706337, - -173.46160044514474, - -173.47161490176714, - -173.48206828918677, - -173.49294945073694, - -173.5042447466352, - -173.51596037350032, - -173.52809998080238, - -173.5406765811386, - -173.55370074303443, - -173.56719630075622, - -173.58114985389997, - -173.59553015449453, - -173.61034902357457, - -173.62554902488375, - -173.641080941107, - -173.65691807792754, - -173.67302539948565, - -173.97717329871293, - -173.99331539577727, - -174.0095754015346, - -174.02589245645353, - -174.0421870446551, - -174.05845580219201, - -174.07466548870636, - -174.09074069153343, - -174.10660788444483, - -174.12218240708228, - -174.1373992917977, - -174.15220194292783, - -174.16655297023425, - -174.1804177164791, - -174.1937862900818, - -174.20665871566973, - -174.2189803615935, - -174.23072385995488, - -174.24187952353347, - -174.25253669864622, - -174.2627049492652, - -174.27239932348138, - -174.2816113477083, - -174.2903421333912, - -174.29860964029965, - -174.3063944482402, - -174.3136256088321, - -174.3202524658604, - -174.32624713499197, - -174.33151202535677, - -174.33601783478514, - -174.3397451370935, - -174.34264413566066, - -174.3446595218435, - -174.3457725901223, - -174.34598108604828, - -174.34520249290404, - -174.3434245039418, - -174.34066094664627, - -174.33687045057408, - -174.33205620853806, - -174.32625304500576, - -174.31945996585156, - -174.31161984727126, - -174.30274314930242, - -174.292874458598, - -174.28194143777355, - -174.26995845535365, - -174.2569564954026, - -174.24291243768926, - -174.22782806202162, - -174.21172088865865, - -174.19461118010338, - -174.17648746880604, - -174.15736169150128, - -174.13725806942665, - -174.11620601657853, - -174.09425037659517, - -174.0715052147596, - -174.04808120779927, - -174.0240566600068, - -173.9995753003705, - -173.97479226238437, - -173.94986045322207, - -173.92486875688115, - -173.89991608129813, - -173.87518991657743, - -173.8508529651568, - -173.82704819728528, - -173.80394132084814, - -173.78168028079682, - -173.76034559394125, - -173.74013505059696, - -173.72110237695728, - -173.70329768233086, - -173.68670486604879, - -173.6712874526833, - -173.65697263473098, - -173.6435263339209, - -173.6308109020502, - -173.6186961636522, - -173.6070597235101, - -173.59576570387136, - -173.5846911454818, - -173.5736523914928, - -173.5625014526679, - -173.55110837421563 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -4240,1987 +1248,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -212.91937284174156, - -212.91245336787324, - -212.9053771362611, - -212.89812166912535, - -212.8906601894083, - -212.8830678611301, - -212.87535551296796, - -212.8675158794263, - -212.85953203810965, - -212.85145017878241, - -212.84327709816134, - -212.83500522450612, - -212.8266150936741, - -212.81812088069876, - -212.80954072293346, - -212.80093031480519, - -212.79233476025655, - -212.78376799769273, - -212.7752276943416, - -212.766776308744, - -212.75841384316772, - -212.75012984212668, - -212.74196808678312, - -212.73390126056128, - -212.72591790362242, - -212.71803708677857, - -212.7102594298112, - -212.70262994961897, - -212.69515301739204, - -212.68786065681823, - -212.68077218474167, - -212.67392382791272, - -212.66736838917572, - -212.66112741052848, - -212.65520881806006, - -212.6496311726546, - -212.64442300542754, - -212.63962635937366, - -212.63526425419496, - -212.63132239298645, - -212.62784248473994, - -212.62486885123542, - -212.62244567824263, - -212.62059393586688, - -212.61934910073424, - -212.61869201933115, - -212.6185614639242, - -212.61894041710443, - -212.61978472400858, - -212.62107906726186, - -212.62279834980396, - -212.62489963314306, - -212.62732738708317, - -212.62998265031905, - -212.63281730135392, - -212.6357932582429, - -212.63882626420252, - -212.64187901972636, - -212.64493263312448, - -212.64799125859835, - -212.6510713344253, - -212.65418220682744, - -212.6573048587125, - -212.66042771970865, - -212.66356794014794, - -212.66673810660217, - -212.66994724084378, - -212.67319580344804, - -212.67648222342768, - -212.67980492964887, - -212.68314877420573, - -212.68649795124443, - -212.68983726291356, - -212.69316334490279, - -212.69645581802146, - -212.69969686393614, - -212.70287869829613, - -212.70598989732756, - -212.7090070501427, - -212.7119082122373, - -212.7146871919844, - -212.71732091178103, - -212.71978808499222, - -212.7220724847438, - -212.7241532855344, - -212.72597443381792, - -212.72751870505402, - -212.72875305716119, - -212.7296716735997, - -212.73025674928627, - -212.73048949019392, - -212.73034568357266, - -212.72979176143411, - -212.72882038577836, - -212.72742713459513, - -212.72561590504273, - -212.72343320235063, - -212.72085771895908, - -212.71791265361955, - -212.7144583196587, - -212.71055853617935, - -198.46969889952283, - -198.46461444620184, - -198.45916904676992, - -198.4533092477254, - -198.44713555998248, - -198.4407146090222, - -198.43396207723973, - -198.42701087205862, - -198.4199210728342, - -198.41260102809923, - -198.40504145156032, - -198.3972748445516, - -198.3893791359111, - -198.3814879115405, - -198.37348295060468, - -198.36537482833288, - -198.35737591422517, - -198.34945135878348, - -198.34151341257655, - -198.33365963517485, - -198.32603266051035, - -198.318557202668, - -198.31115029335123, - -198.3040122743059, - -198.2971516798754, - -198.29053886564256, - -198.28419940162829, - -198.27819620625786, - -198.2725144277711, - -198.2671350757002, - -198.26209434234676, - -198.25736658284362, - -198.2529284699943, - -198.24880472439494, - -198.2449788127228, - -198.24142486292854, - -198.23812498650574, - -198.23509572277112, - -198.2323136707953, - -198.22974818039955, - -198.22736142007795, - -198.22517062306798, - -198.22316254678452, - -198.22131620453357, - -198.2195989075104, - -198.21798869861092, - -198.21649013424314, - -198.21516068644485, - -198.21395580265857, - -198.21284177436286, - -198.21186928936967, - -198.21105424473217, - -198.2103808831059, - -198.20984323745427, - -198.20944971052407, - -198.20919041175048, - -198.20906652034387, - -198.20910637047774, - -198.2093057875319, - -198.20964814199164, - -198.21015645995118, - -198.21085672788146, - -198.2117281903217, - -198.21275748510786, - -198.213973088982, - -198.2153345071911, - -198.21680002258233, - -198.21838404899893, - -198.2200711300436, - -198.2218067186477, - -198.223559141358, - -198.22530051981684, - -198.22696359845, - -198.22847651894455, - -198.22978923792652, - -198.2308245968242, - -198.2315450581829, - -198.23193744873998, - -198.23199783024901, - -198.23175553678692, - -198.23124476297, - -198.2304808742689, - -198.22947393211248, - -198.22823650880892, - -198.2267523497893, - -198.22502352103615, - -198.2230651741132, - -198.22086863325063, - -198.21841105162972, - -198.21570067376038, - -198.21274247669143, - -198.20949297753467, - -198.205950752166, - -198.20212216239713, - -198.19799235970703, - -198.1935425722549, - -198.18877464607914, - -198.18368678784273, - -198.1782528193795, - -198.17247737662257, - -183.58482906858202, - -183.57801358858467, - -183.57073682730984, - -183.5630110680447, - -183.55482353016598, - -183.546114111362, - -183.53690533421374, - -183.52723029998003, - -183.5170219158749, - -183.5063208669109, - -183.4951708785398, - -183.48355639217908, - -183.47146363692454, - -183.45892950744314, - -183.4459725960365, - -183.43247753521032, - -183.4185155414971, - -183.40414098706952, - -183.38932696742782, - -183.37411347537, - -183.34212174757795, - -183.32577213784774, - -183.30909286124395, - -183.2921212146991, - -183.27486515312557, - -183.25740128552405, - -183.23979190899112, - -183.22205609250423, - -183.20422715444968, - -183.18637008230823, - -183.16851833829514, - -183.15069122580144, - -183.1329271915773, - -183.11526429111635, - -183.09770463713278, - -183.08026739205198, - -183.06296926146786, - -183.04581724416693, - -183.02880589041328, - -183.01194060034075, - -182.9952282941795, - -182.9786547688927, - -182.96223542455604, - -182.94599080350056, - -182.92992738928956, - -182.91405880863604, - -182.8983917567139, - -182.88296137765744, - -182.86776996990346, - -182.85281123183069, - -182.83808957153568, - -182.82361569835868, - -182.80939438789565, - -182.79541068316885, - -182.78165408961488, - -182.7681288560015, - -182.75484019617113, - -182.74178853785008, - -182.72898279084626, - -182.71643944186744, - -182.7041783564949, - -182.69222887808593, - -182.68061088546574, - -182.6693391776409, - -182.6584324215272, - -182.64797107158446, - -182.63796226295105, - -182.62841530326014, - -182.61932018907692, - -182.610671351908, - -182.6024716545702, - -182.59471610327566, - -182.5873826854716, - -182.58047071412994, - -182.57398221229758, - -182.56791405387594, - -182.5622621720414, - -182.5570231252885, - -182.5521926630287, - -182.54776782581013, - -182.54374812355562, - -182.54013728595902, - -182.5369502679731, - -182.534189487839, - -182.53185273370028, - -182.52994018757346, - -182.52844871548405, - -182.52737045038478, - -182.5267015729076, - -182.52643827286516, - -182.52657016241892, - -182.5270741597879, - -182.52795321225224, - -182.52921309841233, - -182.53085423978192, - -182.53287536679437, - -182.53525393848375, - -182.53800186852183, - -182.541119623416, - -182.5445978574841, - -179.14184587928648, - -179.14684507683558, - -179.15214960777195, - -179.1577469524017, - -179.16362560372534, - -179.169787308115, - -179.17624710187224, - -179.1830052066407, - -179.19004530717137, - -179.19737535132154, - -179.20501347222094, - -179.21300049306538, - -179.22137516132952, - -179.23015117569162, - -179.239286988993, - -179.2487473304023, - -179.25857904355098, - -179.268774175535, - -179.27932001548427, - -179.29025481254877, - -179.30157303977262, - -179.31324976179081, - -179.32525490087673, - -179.33758713419306, - -179.35017522373278, - -179.36291622229126, - -179.3758707830285, - -179.38899097456854, - -179.40223469993072, - -179.41565689809278, - -179.42932545767565, - -179.4432480623459, - -179.457442887595, - -179.47205935662262, - -179.48711587881996, - -179.5025978013361, - -179.51864371823547, - -179.53529288707188, - -179.55251006796274, - -179.57029481241955, - -179.5887470649726, - -179.60779118957598, - -179.62732920535515, - -179.64747406721142, - -179.66815658013326, - -179.68929212457013, - -179.7108768068106, - -179.73291491956007, - -179.75531658233598, - -179.77799787634225, - -179.80100078575512, - -179.8242535146992, - -179.84767527209365, - -179.87125212807715, - -179.89496173740608, - -179.91876882091523, - -179.9426763133384, - -179.9667816619376, - -179.99104434880564, - -180.01537366388592, - -180.03983873628215, - -180.06435571676352, - -180.08881439959202, - -180.11317094327288, - -180.13738599465486, - -180.16131126416738, - -180.18484519504162, - -180.20794819014614, - -180.2304889224611, - -180.2523569604118, - -180.27354530874098, - -180.29400045434625, - -180.31366536684814, - -180.33251977779886, - -180.3505591513645, - -180.36776917685268, - -180.38414049879046, - -180.39967356169637, - -180.41436678207847, - -180.42819576252023, - -180.4412252842219, - -180.45353691460147, - -180.4651553988039, - -180.47610722783236, - -180.4864621478253, - -180.4962053898013, - -180.50534262823282, - -180.51392423739614, - -180.5219630508612, - -180.52945334363633, - -180.547401702112, - -180.55290306564567, - -180.55798758583367, - -180.56264210642692, - -180.56684608643224, - -180.57066060773226, - -180.57413393607854, - -180.57728122674663, - -180.58015030266262, - -180.58279782863085, - -179.36918714118192, - -179.37167169280576, - -179.37404022679388, - -179.37630467195766, - -179.37845706779564, - -179.38051506748286, - -179.38252616235, - -179.38447563891432, - -179.38634970100287, - -179.38821381496774, - -179.39005913203212, - -179.39186994231451, - -179.3936873041553, - -179.3955424530066, - -179.39742145683323, - -179.39931388309893, - -179.40132127908532, - -179.40340818017242, - -179.40555833646684, - -179.4076896953097, - -179.40975365030795, - -179.41172880356032, - -179.41360268597404, - -179.41535934276573, - -179.41696652857567, - -179.41840649929438, - -179.4196968120142, - -179.4208229662296, - -179.421769163622, - -179.4225438525814, - -179.42315221638842, - -179.42360011629103, - -179.4239019153861, - -179.4240989059167, - -179.42418911739136, - -179.42417525043766, - -179.42399256669285, - -179.42362130947456, - -179.42308097604618, - -179.42238456073125, - -179.42152592053742, - -179.42051618849914, - -179.41936478072543, - -179.41809115014638, - -179.4167042433695, - -179.41521062749905, - -179.41361354470138, - -179.41191547261516, - -179.41012610588777, - -179.4082588169178, - -179.4063059225483, - -179.40429476839864, - -179.40229272953002, - -179.40027083663443, - -179.39830963435392, - -179.39640293977146, - -179.39457897956095, - -179.39276125727238, - -179.3910051532143, - -179.38930689646998, - -179.3876626491186, - -179.38604805604177, - -179.38452922623568, - -179.3830652488485, - -179.38171767640645, - -179.38048885795433, - -179.3794478119715, - -179.37852319936283, - -179.37777520148458, - -179.37715452167313, - -179.37662996871606, - -179.3761476862743, - -179.3757700738594, - -179.37546266688744, - -179.3752493992244, - -179.37512066394126, - -179.3751417164182, - -179.37527652341186, - -179.3755608508956, - -179.375954942394, - -179.376515130298, - -179.37727968308297, - -179.37824003329393, - -179.37937143297415, - -179.38062658668974, - -179.38197582008652, - -179.3834317624373, - -179.38496548713138, - -179.3865639300902, - -179.3882255254405, - -179.38991238294884, - -179.3915418059377, - -179.39313209709687, - -179.39471080357254, - -179.39620860736244, - -179.39763636585897, - -179.39902088642665, - -179.4004156029837, - -179.40186568557638, - -179.40341174132107, - -179.1566684604053, - -179.16294691832715, - -179.17002254604805, - -179.17802072632747, - -179.18710407818307, - -179.19745955568385, - -179.20926884026562, - -179.22266012010948, - -179.23781157936187, - -179.25486707787402, - -179.27382451579803, - -179.34544120341994, - -179.4025415569315, - -179.49930898023476, - -179.5337959737375, - -179.56872949590456, - -179.6039292210959, - -179.63904611668235, - -179.6735823592524, - -179.70713509449476, - -179.73957856710084, - -179.77040889577512, - -179.7993074277075, - -179.82614009404017, - -179.8506332202702, - -179.8725490351608, - -179.8917124050351, - -179.90800073925834, - -179.9212896034709, - -179.93147391317228, - -179.93856736285545, - -179.9425114367093, - -179.94321582112644, - -179.94072489705098, - -179.93506509174398, - -179.92617798035113, - -179.9141231790221, - -179.8990381917054, - -179.88111850402038, - -179.86055889431577, - -179.83760231280237, - -179.81250868762245, - -179.78557336951073, - -179.75712490253738, - -179.72735154370363, - -179.69674734853226, - -179.66547112272337, - -179.63371218492273, - -179.60179833896387, - -179.5701786709099, - -179.53911959524072, - -179.50894868918706, - -179.48001901590885, - -179.45258322667033, - -179.4267745029728, - -179.4028565934482, - -179.38103880463697, - -179.36128815909603, - -179.34373063730936, - -179.32849800450435, - -179.31572746704197, - -179.30540843340444, - -179.2976278422799, - -179.29236648703878, - -179.28949758725852, - -179.28898664489253, - -179.29073185292378, - -179.29445972169773, - -179.3000029227916, - -179.30724678245082, - -179.31604577837317, - -179.3262447116913, - -179.33772669953464, - -179.35035728766061, - -179.3638744511261, - -179.37812383699404, - -179.39298158647938, - -179.40840959829632, - -179.42442275137208, - -179.4408937465358, - -179.4577119411826, - -179.47507680770198, - -179.49292317258656, - -179.5111779975633, - -179.5299574033584, - -179.5493105994577, - -179.56917630076165, - -179.58959101205403, - -179.61072064374494, - -179.63250193900356, - -179.65484990212218, - -179.6778906205584, - -179.70153620439376, - -179.72565002468411, - -179.75018004538722, - -179.77503385015913, - -179.8001676156637, - -179.8255735934286, - -179.85144231646777, - -179.87776401084128, - -179.6411021620947, - -179.66914825575145, - -179.6976113604409, - -179.72637458736298, - -179.75533900879958, - -179.7844627962425, - -179.8135450948113, - -179.84236050459145, - -179.87086026539998, - -179.89881027001417, - -179.92595342505209, - -179.9521745862708, - -179.9774158018222, - -180.00162433159198, - -180.02470988831422, - -180.04659926719123, - -180.06719721499192, - -180.0864080776119, - -180.10410486352475, - -180.12018164468896, - -180.13454107222483, - -180.1470811430811, - -180.15769974150075, - -180.16634779001058, - -180.17299057552333, - -180.17754925462737, - -180.1799976938645, - -180.18031503613278, - -180.1784854628188, - -180.17448239982394, - -180.16832774304072, - -180.1600488333088, - -180.14960275163594, - -180.13703629875133, - -180.12244227056013, - -180.10582215495614, - -180.0872940461167, - -180.06711167546948, - -180.0454050506618, - -180.02220741099086, - -179.9977201235717, - -179.97208936724934, - -179.94531571021534, - -179.91755311599684, - -179.8890270790619, - -179.85983938088296, - -179.83011938050757, - -179.737600258234, - -179.70743296384825, - -179.67759263704096, - -179.64812475931004, - -179.61916251820924, - -179.5908614668939, - -179.56331081973713, - -179.53654801388325, - -179.5107197841061, - -179.48598743875075, - -179.46226699879855, - -179.439634265375, - -179.41819626630505, - -179.3979845296682, - -179.37898947150182, - -179.36127487222382, - -179.34489415889527, - -179.3298265762019, - -179.3160975361294, - -179.30372851278207, - -179.29263393512363, - -179.28277922361048, - -179.274138534627, - -179.26667414407066, - -179.26033131222337, - -179.25503130718863, - -179.2507090778299, - -179.24730132149196, - -179.24472931270222, - -179.24292100458325, - -179.24177995900595, - -179.24121503667035, - -179.24116146405188, - -179.2415531341846, - -179.24234368988763, - -179.24347785537654, - -179.2449009037603, - -179.2465341419946, - -179.2483314928833, - -179.25026274717567, - -179.25228759735896, - -179.25438753311485, - -179.25653184062563, - -179.25868600891326, - -179.26084493227253, - -179.26298746432454, - -179.26509292537298, - -179.2671580741867, - -179.26918359743553, - -179.2711594530281, - -179.27307851800254, - -179.27493494385536, - -179.27672701823795, - -179.12886019914845, - -179.13079770724, - -179.13260047566905, - -179.13427722380888, - -179.13585912932254, - -179.13738113047165, - -179.1388325516521, - -179.14019876081764, - -179.14146089240091, - -179.1426137780734, - -179.14366280194525, - -179.14461224402731, - -179.14547584746785, - -179.14628180409738, - -179.1470731737071, - -179.1478975543174, - -179.14877652477142, - -179.1497082375881, - -179.15068485672737, - -179.15172540736134, - -179.15284395981962, - -179.15404651201848, - -179.1553300289172, - -179.15667758849125, - -179.15806013575244, - -179.15944640544566, - -179.16081066519362, - -179.1621350990947, - -179.1633964522748, - -179.16457702713686, - -179.1656759632701, - -179.1666932900903, - -179.16761463381388, - -179.16844298029656, - -179.16918088930578, - -179.16981776542875, - -179.1703828979496, - -179.17089751350133, - -179.17133440691987, - -179.17163806520873, - -179.17180822384904, - -179.17185837020475, - -179.1718084698333, - -179.17167932870302, - -179.17148843502585, - -179.17125330952686, - -179.17098258759682, - -179.17071606625018, - -179.17049903023883, - -179.17036336450786, - -179.1703473084268, - -179.17049232278637, - -179.17080900329003, - -179.17129388859857, - -179.1719663005492, - -179.17282589252503, - -179.17379377079246, - -179.17484986422897, - -179.17599416582019, - -179.17714841714968, - -179.17830962120556, - -179.17947083952447, - -179.18061696979672, - -179.18174410807748, - -179.18285388516537, - -179.18393588327177, - -179.18492789333177, - -179.18581791538546, - -179.1865983289089, - -179.18720760765, - -179.18760166733634, - -179.18777185945868, - -179.18772873844225, - -179.1874437333291, - -179.18691564017558, - -179.18615210986584, - -179.18511336685683, - -179.18381892393376, - -179.1822832250637, - -179.18047927773708, - -179.17839223395546, - -179.17603998126435, - -179.1734338360799, - -179.17056102936223, - -179.16743419988933, - -179.16406256879375, - -179.16043079502495, - -179.15653522110853, - -179.15237910837436, - -179.1479291820708, - -179.14315543682633, - -179.13805961150274, - -179.13263932019643, - -179.12685102200896, - -179.12068899642148, - -179.11415142118435, - -179.10721683966412, - -179.09985150145448, - -179.09205376743935, - -179.08382610910053, - -178.90559659291594, - -178.8972323060399, - -178.8883697659569, - -178.87897002676783, - -178.8690125197007, - -178.8584967407571, - -178.84741857457442, - -178.8357704632511, - -178.8235719557196, - -178.8108581477788, - -178.79767321819827, - -178.78403025440608, - -178.76995187843912, - -178.75546119355246, - -178.74057494970532, - -178.725339537991, - -178.7097757248878, - -178.69389461292405, - -178.67775630392896, - -178.66144712252608, - -178.64501486256157, - -178.6284936786299, - -178.6119184006956, - -178.59532374680097, - -178.57876682285237, - -178.56228871709848, - -178.54592147234536, - -178.52967859857046, - -178.51359440476327, - -178.49770621132433, - -178.48206308772984, - -178.4667026654005, - -178.45166779034673, - -178.43698794694498, - -178.42268712910177, - -178.40879608594628, - -178.39533848861393, - -178.38231748901, - -178.36974031240655, - -178.35762595655268, - -178.34599301961106, - -178.3348468369502, - -178.32421580251886, - -178.31412376667663, - -178.30458395875257, - -178.2955853839904, - -178.28713621232893, - -178.27926798058363, - -178.27199215049419, - -178.26533696890505, - -178.25934110042374, - -178.25406048701575, - -178.24951490632478, - -178.24572055776224, - -178.24270236995474, - -178.2405120703061, - -178.23916977375782, - -178.2386815375405, - -178.23908200918405, - -178.2403792907502, - -178.24256535515113, - -178.2456960267657, - -178.24976885616542, - -178.2547520133117, - -178.26063053629454, - -178.2673448455685, - -178.27481981000497, - -178.28303988650742, - -178.2920402298042, - -178.30179336608958, - -178.31226714625578, - -178.32346476831847, - -178.33537642421888, - -178.34796364243522, - -178.36119414105318, - -178.37505536980115, - -178.38950141067994, - -178.40447370347755, - -178.4199813122996, - -178.43598253500693, - -178.45243020117096, - -178.46931049706862, - -178.48661169641127, - -178.50428537875868, - -178.5222876496023, - -178.54062388103353, - -178.55924113148126, - -178.57808748733606, - -178.597136242161, - -178.61635859155342, - -178.635740018187, - -178.65526480849985, - -178.67493128098369, - -178.69471341054148, - -178.71457414035726, - -178.7345100225851, - -178.75447142466948, - -178.77442389621527, - -178.79434814687258, - -178.8142226237735, - -178.57359725138494, - -178.5935253931119, - -178.61332416838044, - -178.63297661876172, - -178.6524526652935, - -178.67177140321857, - -178.69093875612495, - -178.70993221987072, - -178.72871825190862, - -178.74723520383253, - -178.76546937889094, - -178.78341530941213, - -178.80104786687855, - -178.81837116514316, - -178.83541082341816, - -178.85218494123728, - -178.86866250845864, - -178.8848454185993, - -178.90074364185753, - -178.9164545738671, - -178.932003677486, - -178.94741216990556, - -178.962674739482, - -178.9777943316233, - -178.99278173726915, - -179.0076105139225, - -179.02221473402156, - -179.0365337815997, - -179.05052295339985, - -179.0641059505506, - -179.07724518703822, - -179.08990511609264, - -179.1020465814427, - -179.11363785954094, - -179.1246563768359, - -179.13509493669656, - -179.14494449220473, - -179.15420302824387, - -179.16288733399733, - -179.17102262718626, - -179.17865885863085, - -179.18584128595356, - -179.1925949744535, - -179.19893239079218, - -179.20486486360446, - -179.21043246025297, - -179.2156379828704, - -179.2205012567147, - -179.22502834364374, - -179.22919593702017, - -179.23301585096556, - -179.23644967499212, - -179.23944807479626, - -179.24198539865034, - -179.24398184155078, - -179.24534635294953, - -179.24598444763217, - -179.24580859152357, - -179.24478386746546, - -179.24283869467308, - -179.23987157483742, - -179.23587134017168, - -179.230820041558, - -179.22465180172662, - -179.2172746679458, - -179.2086129263329, - -179.19864564514813, - -179.18734972803125, - -179.17473674236996, - -179.16083486999025, - -179.1455888296898, - -179.12900128403058, - -179.11120113333538, - -179.09214709201535, - -179.07186845295917, - -179.0504257736976, - -179.0278658016364, - -179.00418674698292, - -178.97939835654458, - -178.95360340970035, - -178.92680714604018, - -178.89915553980134, - -178.87083622367342, - -178.84199795835715, - -178.81275277319824, - -178.78331751345024, - -178.7539139675141 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -6230,1987 +1266,15 @@ }, "name": "Yaw est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -176.6823401265109, - -176.67523946793196, - -176.66798205251513, - -176.66054540248055, - -176.65290274077057, - -176.64512923140532, - -176.637235703062, - -176.62921489024498, - -176.62104987055883, - -176.6127868337679, - -176.60443257658892, - -176.5959795272816, - -176.58740822170324, - -176.57873283488735, - -176.56997150418724, - -176.5611799240299, - -176.5524031983579, - -176.54365526557643, - -176.5349337929133, - -176.52630123890944, - -176.51775760583257, - -176.50929243819658, - -176.50094951716372, - -176.49270152615819, - -176.48453700534125, - -176.47647502552493, - -176.46851620649068, - -176.46070556513712, - -176.45304747265445, - -176.44557395273043, - -176.4383043222092, - -176.43127480784108, - -176.42453821247042, - -176.418116078095, - -176.4120163308039, - -176.40625753148126, - -176.4008682112424, - -176.3958904130822, - -176.39134715670258, - -176.38722414519856, - -176.38356308756195, - -176.38040830557273, - -176.37780398500055, - -176.37577109595082, - -176.37434511504952, - -176.3735068887831, - -176.37319518941817, - -176.37339299954567, - -176.3740561643024, - -176.37516936631351, - -176.37670750851873, - -176.3786276524262, - -176.38087426783989, - -176.38334839345458, - -176.38600190777345, - -176.38879672885164, - -176.39164859990566, - -176.39452022142905, - -176.3973927017319, - -176.4002701950156, - -176.4031691395575, - -176.40609888157974, - -176.40904040398996, - -176.41198213641636, - -176.414941229191, - -176.41793026888558, - -176.42095827727266, - -176.42402571492735, - -176.42713101086247, - -176.43027259394412, - -176.43343531626647, - -176.43660337197562, - -176.43976156322015, - -176.44290652568972, - -176.4460178801937, - -176.44907780839856, - -176.45207852595368, - -176.45500860908513, - -176.45784464690516, - -176.4605646949095, - -176.46316256147122, - -176.4656151689873, - -176.46790123082278, - -176.47000452010343, - -176.47190421132794, - -176.4735442509501, - -176.47490741442965, - -176.47596065968503, - -176.47669817017652, - -176.47710214082076, - -176.47715377759081, - -176.47682886773666, - -176.4760938432699, - -176.4749413661906, - -176.4733670144885, - -176.4713746853219, - -176.46901088392022, - -176.4662543027237, - -176.46312814048383, - -176.45949271052723, - -176.4554118319567, - -176.45024312201141, - -176.44488110646574, - -176.43915098314724, - -176.4330000299619, - -176.4265293489203, - -176.41980552686914, - -176.4127433910676, - -176.40547466635277, - -176.39805777268256, - -176.39039837600873, - -176.38248385713936, - -176.37434315336137, - -176.36605012284022, - -176.35773284771003, - -176.3492680325179, - -176.34066144182006, - -176.33211927226185, - -176.32360101725382, - -176.3150144048723, - -176.30645228436873, - -176.29805119894482, - -176.28973293300817, - -176.28141275672417, - -176.2732852190171, - -176.2653583559261, - -176.25760424034263, - -176.2500474989934, - -176.24275072912596, - -176.2357044667917, - -176.22889578496122, - -176.22235841254306, - -176.21607525584812, - -176.21003327080552, - -176.2042587523255, - -176.19874188677232, - -176.19346898249773, - -176.18843074788882, - -176.1836454091566, - -176.17910250825673, - -176.1747849771157, - -176.1706536840682, - -176.1667365369029, - -176.1630331756495, - -176.159526449398, - -176.15618666652347, - -176.15300339032447, - -176.14998998558366, - -176.14719617618093, - -176.14458656685133, - -176.14213612945025, - -176.13988799375468, - -176.13785845004995, - -176.13603799396984, - -176.13441943187132, - -176.13300029013877, - -176.13177460772079, - -176.13074707873605, - -176.12992927544457, - -176.12931680397728, - -176.1288942274503, - -176.1286754117913, - -176.1286786298363, - -176.12888497528385, - -176.12928091864322, - -176.1298817343311, - -176.13064878681223, - -176.13154192958754, - -176.13256714838232, - -176.13370728333445, - -176.1349101005228, - -176.1361427001208, - -176.13737322779707, - -176.13853822822688, - -176.13956786957274, - -176.14040601525053, - -176.14097545958853, - -176.14123821589655, - -176.1411781838311, - -176.1407847330043, - -176.14008559352615, - -176.13911500568625, - -176.1378856152579, - -176.13640758613124, - -176.13469488197276, - -176.1327345361081, - -176.13053049912116, - -176.12809994010001, - -176.12543838707597, - -176.1225287753989, - -176.11938148366133, - -176.11600381885134, - -176.11236160851254, - -176.10845611301968, - -176.1042955090875, - -176.09987147536125, - -176.0951713536986, - -176.0901979382667, - -176.0849512742013, - -176.0794158873626, - -176.07359600977597, - -176.04624657020275, - -176.03996819559237, - -176.0334652219676, - -176.0267396507519, - -176.01978135565787, - -176.01254901818533, - -176.0050466331755, - -175.99728461149965, - -175.9892144096464, - -175.98085122035297, - -175.97220760553708, - -175.96325994905393, - -175.95398414005263, - -175.9443828696004, - -175.93444549986577, - -175.92406398271248, - -175.91327099929498, - -175.9020839689262, - -175.89046704273807, - -175.8784309476503, - -175.85258951867436, - -175.8391855381534, - -175.82533743616526, - -175.81106131085423, - -175.79637111033512, - -175.7813276619618, - -175.7659792023643, - -175.75034494461872, - -175.7344595177527, - -175.71838064992986, - -175.70213750530684, - -175.68576566984297, - -175.66930005206294, - -175.65277891232225, - -175.63621695560357, - -175.61964065636354, - -175.6030676289638, - -175.5865096405989, - -175.56997371423634, - -175.55346514822548, - -175.5369897667488, - -175.5205481951356, - -175.504156760105, - -175.48783574291895, - -175.4715995615674, - -175.4554688767519, - -175.43945047415113, - -175.42358485333946, - -175.4078902345831, - -175.39236425606205, - -175.3770144266214, - -175.3618613427305, - -175.34691618764975, - -175.33216937885197, - -175.3176149093917, - -175.30326367653868, - -175.28912332948647, - -175.27519587643948, - -175.26149667527156, - -175.24804465080462, - -175.23486270839524, - -175.2219835675453, - -175.2094300737376, - -175.19721809185532, - -175.1853675253311, - -175.17396303559786, - -175.16301193758736, - -175.15252367485277, - -175.14249066777364, - -175.1329097267707, - -175.1237855153199, - -175.11511396080667, - -175.10687279821792, - -175.09906403177504, - -175.09169127045647, - -175.0847510719364, - -175.07823933004988, - -175.07215231453682, - -175.0664841026825, - -175.06123122751245, - -175.05639385494513, - -175.05197480308098, - -175.0479910095107, - -175.04444614555018, - -175.04133893701928, - -175.03867128454044, - -175.03644237385933, - -175.03464632336727, - -175.03328138737788, - -175.03234655527245, - -175.03183400196977, - -175.03172350341993, - -175.03201942186632, - -175.03272861861396, - -175.03385214928764, - -175.0353887706203, - -175.03731707627588, - -175.03964819677202, - -175.04238156404122, - -175.0455054746321, - -175.17740398167118, - -175.18131338659717, - -175.18554654349356, - -175.19008747224223, - -175.19492208728374, - -175.20004721027098, - -175.20547144395593, - -175.2111925008347, - -175.21719094817675, - -175.22346510613, - -175.23003042353474, - -175.23692525977873, - -175.24418097313662, - -175.2518051370874, - -175.25975491460824, - -175.2679928092602, - -175.27655384005365, - -175.28543140008148, - -175.2946142265263, - -175.30413124871106, - -175.31397526367024, - -175.32412390141013, - -175.33454507652885, - -175.34522873640933, - -175.35610640740762, - -175.36707706075688, - -175.37818472852152, - -175.3893802104924, - -175.40062172121003, - -175.41195097680338, - -175.4234225499472, - -175.43504276747143, - -175.44682448342212, - -175.45888312867277, - -175.47123290521347, - -175.48385575886292, - -175.49685652254587, - -175.51025609457702, - -175.52401594519517, - -175.53811744977926, - -175.55261915829433, - -175.56744367143799, - -175.58249539771907, - -175.597830046394, - -175.6133734271558, - -175.62905067955907, - -175.64483357744862, - -175.66069517928713, - -175.6765667695999, - -175.6923891066432, - -175.70814888937394, - -175.72381066597637, - -175.73934145340525, - -175.7547098779654, - -175.76992384792808, - -175.78501846712155, - -175.80003776631497, - -175.8150763779924, - -175.83017115862938, - -175.84531411140276, - -175.8605492867934, - -175.8758648693468, - -175.89123611153562, - -175.90663995252334, - -175.9220584836605, - -175.93742135829544, - -175.95268973691543, - -175.96777413503835, - -175.98260530507588, - -175.99712564134225, - -176.01128362952517, - -176.02503353446426, - -176.03836573463957, - -176.05126815678238, - -176.0637085483631, - -176.0757311613451, - -176.08737033358574, - -176.09856203621396, - -176.1093342725774, - -176.11968981522932, - -176.12965675224316, - -176.13928405798774, - -176.14860913745042, - -176.15765006540556, - -176.16639918999834, - -176.17485097859932, - -176.18300831889894, - -176.1908596418516, - -176.1983988335644, - -176.20561869062018, - -176.22431275923623, - -176.23020428324534, - -176.23577566555952, - -176.2410059043197, - -176.24586853906033, - -176.25039747594943, - -176.2546187413771, - -176.25854249013852, - -176.26220561806707, - -176.26564076678739, - -176.3033704402183, - -176.30639604272972, - -176.30926884518234, - -176.31199786238133, - -176.31457913288244, - -176.31702365865632, - -176.31936481764373, - -176.32159424906035, - -176.3237034523092, - -176.32573888187133, - -176.32769661263632, - -176.32956716285275, - -176.33138269367922, - -176.33316800048715, - -176.33491535356157, - -176.3366172987868, - -176.33836316098453, - -176.34013077623442, - -176.34191624387762, - -176.343638657415, - -176.34526100948088, - -176.34677749189498, - -176.34818476818236, - -176.34947244805485, - -176.35062535850224, - -176.35163979617332, - -176.35254543573365, - -176.35333832507973, - -176.35400831805268, - -176.3545704232261, - -176.35503744932234, - -176.3554164387922, - -176.3557213472356, - -176.35599787441723, - -176.35623928449274, - -176.35644184229193, - -176.3565436474787, - -176.3565242773706, - -176.35639799647296, - -176.35617691937816, - -176.35586168372978, - -176.35545743889645, - -176.35496659965196, - -176.35441976274413, - -176.35381963486077, - -176.353163438515, - -176.35245650624861, - -176.3517013992861, - -176.3508940562239, - -176.35003613996574, - -176.34913013649864, - -176.34818721425438, - -176.34725769738185, - -176.3463152534102, - -176.3454286521453, - -176.3445705739553, - -176.34375656355977, - -176.34291086383834, - -176.34206859217866, - -176.34120718011232, - -176.3403351428155, - -176.33941281844002, - -176.33848888686177, - -176.33752096017702, - -176.33656839138976, - -176.33561847932836, - -176.33473035283518, - -176.33384386066933, - -176.33300943601182, - -176.33217147532585, - -176.33130783033909, - -176.33036658498673, - -176.3294071888127, - -176.3283981272137, - -176.327373221092, - -176.32632492565844, - -176.32532090774234, - -176.3243351104129, - -176.32340724434923, - -176.32250073176925, - -176.32168160896907, - -176.32099415314164, - -176.32042745793717, - -176.31996279112673, - -176.31957608178763, - -176.31925364393473, - -176.3190185331144, - -176.31886017615705, - -176.31877508208922, - -176.31876263201258, - -176.31880152888883, - -176.31884228618378, - -176.31888702320097, - -176.31894293224707, - -176.31895408748687, - -176.31889734911752, - -176.31875277479344, - -176.31852606387827, - -176.3182032706876, - -176.31774765561696, - -176.66011478987278, - -176.65946008068047, - -176.65864707362667, - -176.65767395815328, - -176.65652776070922, - -176.65521697689155, - -176.6537806870435, - -176.65220746040814, - -176.6504655279816, - -176.6485999271123, - -176.64659765309375, - -176.6399799809787, - -176.634988294063, - -176.62777987404166, - -176.62536533457643, - -176.62310873770195, - -176.62098179667584, - -176.61899215775895, - -176.61715790931842, - -176.61543366444107, - -176.61386998601688, - -176.61241038834186, - -176.61110142055205, - -176.60991227770182, - -176.6088476568196, - -176.60795524395368, - -176.60720759135614, - -176.6065735423997, - -176.60608375073664, - -176.60574031737676, - -176.60549468767988, - -176.6053396920142, - -176.60525108381833, - -176.60522781126613, - -176.6052361943107, - -176.60518380592438, - -176.60504445284016, - -176.6047995574976, - -176.60446572275583, - -176.60402091576273, - -176.60352771028485, - -176.60296816727836, - -176.6023374750015, - -176.6017241126599, - -176.601068105662, - -176.60050738904408, - -176.59990678909227, - -176.59928561462127, - -176.59862257195547, - -176.59801494735947, - -176.5975498240608, - -176.59727723680157, - -176.59721595721845, - -176.5973906036923, - -176.5978146619024, - -176.598482973693, - -176.5993816802316, - -176.6004853470528, - -176.60176173643328, - -176.60321352160653, - -176.60497998194398, - -176.60707065391105, - -176.6095466149324, - -176.61242631619587, - -176.6157321064688, - -176.61948736034188, - -176.62369092418342, - -176.62823086235701, - -176.6330747956776, - -176.638252031896, - -176.64377874839573, - -176.64964308592826, - -176.65587881856905, - -176.6625139255251, - -176.6693725320454, - -176.67642350709176, - -176.683678728456, - -176.69116195219968, - -176.69892611417976, - -176.70694126098795, - -176.71517322545108, - -176.7237306965742, - -176.73261580235695, - -176.74182383868924, - -176.75136534852885, - -176.76127359176925, - -176.77154269997283, - -176.78218419860804, - -176.79322527592694, - -176.80464627679112, - -176.8164091918421, - -176.82843594022242, - -176.84065273257966, - -176.8529685948774, - -176.8652442795848, - -176.87732774273846, - -176.8892602923864, - -176.90106538553775, - -176.91273293729503, - -176.9243173278319, - -177.08538051931438, - -177.09667956241304, - -177.10780642383403, - -177.11875884895477, - -177.1294915306045, - -177.1399205374937, - -177.14999131752847, - -177.15962602918853, - -177.16871155002292, - -177.17713409509378, - -177.18479290309728, - -177.19163195878332, - -177.1976668365396, - -177.20298404079466, - -177.20762206383185, - -177.2115295631686, - -177.2147543849057, - -177.21733410709203, - -177.21921747646576, - -177.22040317633613, - -177.22090707041212, - -177.22072297081226, - -177.21984165738212, - -177.2182888327825, - -177.2160896965749, - -177.21327962849975, - -177.2098893703587, - -177.2059253240223, - -177.20143550730515, - -177.19644550402754, - -177.19094506893677, - -177.18490655184362, - -177.1783933953102, - -177.17134637602663, - -177.16372390785992, - -177.15556477888126, - -177.14689535740837, - -177.13778724477618, - -177.12827033661165, - -177.11837833860181, - -177.10811256527276, - -177.0974149218879, - -177.0863530981158, - -177.07489156279476, - -177.0630333814656, - -177.0508225945252, - -177.0383259185621, - -176.99873934329437, - -176.98535025010895, - -176.97184144386588, - -176.95828832576615, - -176.94473072932635, - -176.93116646880358, - -176.9176279242933, - -176.90419248216415, - -176.8908761063903, - -176.8777318689243, - -176.8647868217961, - -176.85204935507164, - -176.83955263106475, - -176.8273517645169, - -176.81546572836018, - -176.8039176583066, - -176.79275112467954, - -176.78203399094278, - -176.77177950336053, - -176.76201532431742, - -176.75272520800797, - -176.7439111449999, - -176.73557562466075, - -176.7277319555124, - -176.7203868753186, - -176.71350375774145, - -176.70706950975523, - -176.7010782753048, - -176.69550035735162, - -176.6903187174749, - -176.68548707892637, - -176.68095787938296, - -176.67671823323724, - -176.67275343615805, - -176.66904337844593, - -176.66557843328036, - -176.6623495695026, - -176.65930142471757, - -176.65641902487965, - -176.65371070713147, - -176.6511637645094, - -176.6487716904832, - -176.64653297910328, - -176.6444393471647, - -176.64248511645232, - -176.64066546217114, - -176.63897553092633, - -176.63741630698948, - -176.63598964015094, - -176.63469189440843, - -176.63351806969015, - -176.63245298695293, - -176.63149552566745, - -176.76916729808067, - -176.7684179503435, - -176.7677671225705, - -176.76721251580335, - -176.76677493583983, - -176.76648325551872, - -176.7663091464391, - -176.766218471276, - -176.7661914675123, - -176.76620387086763, - -176.76624149380342, - -176.76630166118736, - -176.766389084426, - -176.76650860620572, - -176.76668229538055, - -176.7669577567212, - -176.76733109995405, - -176.76777602962537, - -176.76827977747465, - -176.76884580820482, - -176.76946658442643, - -176.77013499613676, - -176.7708437902203, - -176.77155639202167, - -176.7722261024792, - -176.77282346369026, - -176.77331014565013, - -176.7736578589624, - -176.77384249545233, - -176.77384755583503, - -176.77366697377605, - -176.77329777756034, - -176.7727343677658, - -176.7719783331797, - -176.77103233953076, - -176.76989292370467, - -176.76859193385883, - -176.76715209373126, - -176.76555160326762, - -176.763742956854, - -176.76172880497444, - -176.7595262942278, - -176.7571629392246, - -176.75466407011126, - -176.75205076990136, - -176.74934536762467, - -176.7465601557144, - -176.74373823116002, - -176.740928382654, - -176.73816627968196, - -176.7354924724995, - -176.7329515478757, - -176.73055778307346, - -176.72831062957096, - -176.7262334271656, - -176.72432942869963, - -176.72252092926863, - -176.72079021818547, - -176.71914053701278, - -176.71749015187018, - -176.71583379677492, - -176.71416708692647, - -176.71247502752647, - -176.7107503071719, - -176.70899533528146, - -176.707201210987, - -176.70530273282634, - -176.70328806902032, - -176.70115023599737, - -176.69882560567402, - -176.6962689187255, - -176.69347149761242, - -176.69044296650628, - -176.68715105885914, - -176.68359432811303, - -176.67978075199932, - -176.6756651201725, - -176.67126503393987, - -176.66659473509984, - -176.66162469876392, - -176.6563364324408, - -176.65074714978283, - -176.64486786219916, - -176.63867960070772, - -176.63219323139964, - -176.62541573908717, - -176.61832597792727, - -176.61091590272488, - -176.60318649085258, - -176.59510148661948, - -176.58662543042516, - -176.5777589204063, - -176.56850067106777, - -176.55881119274824, - -176.54869306623382, - -176.53815477865808, - -176.5271863265435, - -176.51576524025276, - -176.50390243742336, - -176.4916149472904, - -176.56884877337612, - -176.55568692081886, - -176.54210254025205, - -176.52807747026884, - -176.51360886100142, - -176.49871160298872, - -176.4833968050772, - -176.46767142895783, - -176.45156294599084, - -176.43511187372317, - -176.4183752975244, - -176.4013671631208, - -176.38410990405802, - -176.36663161023182, - -176.34894967826781, - -176.3310992558436, - -176.31309384703036, - -176.29495019125858, - -176.2767126477815, - -176.25844756347203, - -176.24020021053948, - -176.22199490861115, - -176.20385015158124, - -176.18579165077173, - -176.16787240329919, - -176.15011534106935, - -176.1325369629034, - -176.11516381615985, - -176.09801687371052, - -176.08111617148626, - -176.06451095411526, - -176.0482410743364, - -176.0323349064192, - -176.01681368318222, - -176.00172377011728, - -175.98707593342576, - -175.9728761215884, - -175.959144462944, - -175.94588341589457, - -175.93309444541455, - -175.92079446807526, - -175.90900057395572, - -175.8977222127614, - -175.88696236181585, - -175.87675133755545, - -175.86705381986945, - -175.85785484180215, - -175.84918361633225, - -175.84104557890421, - -175.83344889554377, - -175.82642027937158, - -175.8200285053326, - -175.81427934459057, - -175.80917935533236, - -175.80476493876984, - -175.80108791825563, - -175.7981642917211, - -175.79600279302775, - -175.79464853681503, - -175.79410543375548, - -175.79436162482168, - -175.7954816949835, - -175.79745937195233, - -175.80025615423062, - -175.80385384322028, - -175.80818756468364, - -175.81317262686565, - -175.81878596456627, - -175.82505627595444, - -175.83194994074077, - -175.83943224722742, - -175.84750368613427, - -175.85615424125874, - -175.8653501787339, - -175.87506567838915, - -175.88529362233265, - -175.8960005636178, - -175.90714344640716, - -175.91874101746262, - -175.9307696460645, - -175.94320287608468, - -175.95604418873188, - -175.96929965673732, - -175.9829429119517, - -175.99695127568472, - -176.01134608511015, - -176.0260952911091, - -176.04116611698564, - -176.05654830783067, - -176.0722292861779, - -176.0882082996628, - -176.10448277576714, - -176.12106379086995, - -176.13793163222073, - -176.1550521474259, - -176.17242952307984, - -176.19001022477661, - -176.20775241866113, - -176.22563311240006, - -176.24362401162958, - -176.27538527504893, - -176.29342039444458, - -176.31144978495752, - -176.32943453760763, - -176.3473198549743, - -176.3651136027053, - -176.38280212241565, - -176.40033645570207, - -176.41766306817672, - -176.4347088054574, - -176.45143433534432, - -176.46780862616998, - -176.4838004185564, - -176.49939444081113, - -176.51459855674997, - -176.5294218284535, - -176.54382143502608, - -176.5577846392771, - -176.5713115826955, - -176.58449563625666, - -176.5973543133756, - -176.60990574669347, - -176.62214304359514, - -176.63406823250725, - -176.6456956887844, - -176.65700248108135, - -176.66792017142683, - -176.67839312373005, - -176.6883850441959, - -176.6978089879537, - -176.70663151091168, - -176.71482512659307, - -176.72234535855168, - -176.72914869069223, - -176.7352144834791, - -176.74053801137242, - -176.74507349255438, - -176.74881376609284, - -176.7517741403218, - -176.75394653888017, - -176.75535753358446, - -176.75604716547966, - -176.75602747015253, - -176.75527611903172, - -176.75380400645344, - -176.75165345942548, - -176.74878971032197, - -176.74522985603417, - -176.74099241952317, - -176.7360541873547, - -176.7304219564936, - -176.72408528182538, - -176.71702962744982, - -176.7092364337282, - -176.70067176652603, - -176.6913022111881, - -176.68109523210535, - -176.67002948405937, - -176.65814454111253, - -176.64545995123618, - -176.63196411742211, - -176.6177233202711, - -176.60280615197118, - -176.58725612747435, - -176.57107171241347, - -176.55426450381552, - -176.53691778086278, - -176.51910134659403, - -176.50089246982762, - -176.4823880954192, - -176.46363455524332, - -176.44467343898592, - -176.42566809196617, - -176.40662473448631, - -176.387583067645, - -176.3685653198732, - -176.34957662715985, - -176.33057969085695, - -176.31146234523274, - -176.29220715587527, - -176.2727516548462, - -176.25310763165572, - -176.2333009637724, - -176.21334455191948, - -176.19320258234552, - -176.17290948305907, - -176.15251117086487 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -8221,1988 +1285,15 @@ }, "name": "Yaw true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -176.6891225829349, - -176.6823401265109, - -176.67531790309937, - -176.66812151861723, - -176.66075831523978, - -176.65319869281214, - -176.64546736408022, - -176.63761524418229, - -176.62963884022716, - -176.6215259463838, - -176.61328708554873, - -176.60495844778035, - -176.59653383393788, - -176.58799828360512, - -176.57934999621895, - -176.57060703948335, - -176.5618014802465, - -176.55299645243403, - -176.54421441234328, - -176.53545429506397, - -176.5267601927685, - -176.51815569513155, - -176.5096360295411, - -176.50121570349037, - -176.49290669432625, - -176.48468293510862, - -176.4765536054333, - -176.46852726714553, - -176.46062449008178, - -176.45287458629537, - -176.4452996374696, - -176.43791756011106, - -176.43076050762784, - -176.42387189296377, - -176.41729323860548, - -176.4110343892196, - -176.40510853219698, - -176.3995388570773, - -176.39436280949263, - -176.38961651825028, - -176.38529588882997, - -176.38141838602976, - -176.3780260762368, - -176.37516947701673, - -176.37287525649754, - -176.37117506142292, - -176.37007788596128, - -176.36952737415768, - -176.36950408728248, - -176.3699617389897, - -176.37087717047834, - -176.3722312853306, - -176.37398714873117, - -176.3760981334656, - -176.37848148445275, - -176.38106204758364, - -176.3838024064909, - -176.38663851553318, - -176.3895079998986, - -176.39238564728416, - -176.39526171703525, - -176.39815360921654, - -176.4010714816525, - -176.4040175490406, - -176.4069584244295, - -176.40990958568244, - -176.41288401294258, - -176.4158935775518, - -176.41894161003583, - -176.4220273114764, - -176.42514886214713, - -176.4282990631102, - -176.43146001016285, - -176.434617066306, - -176.43776110552201, - -176.4408804110224, - -176.4439546950384, - -176.4469705312014, - -176.44992216022416, - -176.45279021656935, - -176.4555495186621, - -176.4581905104452, - -176.4606955076809, - -176.4630436319765, - -176.46521295204437, - -176.46719147764136, - -176.46893729969392, - -176.47040801979304, - -176.4715865767883, - -176.4724504851275, - -176.47299131794247, - -176.4731873169636, - -176.47301944174401, - -176.4724560589618, - -176.4714798877669, - -176.47008084649624, - -176.46826551461245, - -176.4660502143581, - -176.46345327096185, - -176.46049001684403, - -176.45708536251146, - -176.45318632801977, - -176.4488092038193, - -176.44389077724546, - -176.43852705389884, - -176.43267840805203, - -176.4263923358545, - -176.4197499411839, - -176.41274284295915, - -176.40536874628938, - -176.39775877993594, - -176.3898721483662, - -176.3816374462539, - -176.37308163510784, - -176.36425561078434, - -176.35527727889183, - -176.34612532437336, - -176.33674809781053, - -176.3272539845076, - -176.31776296281055, - -176.30816229579457, - -176.29846197951554, - -176.28883044567, - -176.2792728271419, - -176.26969218214114, - -176.2601709558755, - -176.2508186067127, - -176.2416251729923, - -176.23257851901906, - -176.22376030739287, - -176.21518533109247, - -176.20685082464223, - -176.19877305245942, - -176.19096144939095, - -176.18340949687166, - -176.17612511821582, - -176.16912829248653, - -176.16240590099264, - -176.1559509053383, - -176.14977741511177, - -176.14388487264006, - -176.1382685861142, - -176.1328999113991, - -176.1277729186397, - -176.12291178533283, - -176.11830838385058, - -176.1139328412236, - -176.1097688778162, - -176.10582040980327, - -176.1021257742005, - -176.09868439627823, - -176.09546467964535, - -176.09247134956553, - -176.08974353784447, - -176.08727680090263, - -176.0850632728019, - -176.08309133929959, - -176.08135454896657, - -176.07985327750526, - -176.07859207929368, - -176.07756841718722, - -176.0767710654258, - -176.07619309807288, - -176.07585469856616, - -176.0757475111511, - -176.0758538327278, - -176.0761749728384, - -176.0766941536742, - -176.07736705058664, - -176.0781774432761, - -176.079122137993, - -176.08016219085326, - -176.08125139590345, - -176.08236352053788, - -176.0834454081784, - -176.08442998023838, - -176.08525977290904, - -176.08585608923016, - -176.0861655318049, - -176.08616615604475, - -176.08583309926368, - -176.0851794561617, - -176.084238172892, - -176.0830311041392, - -176.08156868515658, - -176.07986268642114, - -176.0779170969725, - -176.0757224326388, - -176.07329609332112, - -176.07064736227835, - -176.06776044455185, - -176.06463946559705, - -176.06129407872268, - -176.05771420101416, - -176.05388404745077, - -176.04981185028205, - -176.04550286478275, - -176.0409430261537, - -176.03613318906235, - -176.03107611189668, - -176.02576578227, - -176.0202007098691, - -176.0143857315275, - -176.00833953739513, - -176.00209235289455, - -175.99564516190333, - -175.98900024485036, - -175.98212008185055, - -175.97499367088616, - -175.96762771378874, - -175.9600030324129, - -175.95210128191206, - -175.94393759258904, - -175.93550965963064, - -175.92677983817774, - -175.91774364791362, - -175.90839969616417, - -175.89866925534676, - -175.88852868212626, - -175.87800118572653, - -175.86707431529084, - -175.8557267337891, - -175.8317423106139, - -175.81904828986615, - -175.8059011468328, - -175.79231195006668, - -175.77829126191097, - -175.76387953084043, - -175.74913296789933, - -175.73408026367537, - -175.71874189709072, - -175.70317079709423, - -175.68740576427794, - -175.6714756452231, - -175.65542033467094, - -175.639273590878, - -175.62306049302683, - -175.60680307674255, - -175.5905225664352, - -175.57423301102713, - -175.5579450363431, - -175.5416635600494, - -175.52539334489154, - -175.50913892918337, - -175.49290734744375, - -175.476720828537, - -175.46059066287063, - -175.44454485917535, - -175.42858912555818, - -175.41275032282226, - -175.39706474452848, - -175.38153335866352, - -175.36616220938382, - -175.3509654977866, - -175.33596380195348, - -175.32116011604427, - -175.30653913698507, - -175.29211134963367, - -175.27788538815292, - -175.2638671535575, - -175.25006387747058, - -175.23649634053913, - -175.2231854028666, - -175.21015776798328, - -175.19744728068432, - -175.18507002084007, - -175.1730406024295, - -175.16142246006714, - -175.15025540808534, - -175.139546089421, - -175.1292990146476, - -175.11950389314399, - -175.11016465499176, - -175.10128471735408, - -175.09284463757717, - -175.08483697011744, - -175.07726615395558, - -175.07013234467038, - -175.06343159672784, - -175.05715936603102, - -175.05131159486223, - -175.04588153785738, - -175.04086884782197, - -175.03627462487302, - -175.03211052095077, - -175.02838649414218, - -175.02510346878796, - -175.0222616290411, - -175.01986284273156, - -175.0179042252426, - -175.0163807616555, - -175.01529294652676, - -175.01463789128164, - -175.01439859446668, - -175.01456935632334, - -175.01515791049414, - -175.01616746413876, - -175.0175990366014, - -175.01943751206193, - -175.02168268286303, - -175.02433863250857, - -175.02739813442506, - -175.03084934364702, - -175.0346648337329, - -175.03881627096777, - -175.04328533993842, - -175.0480562459014, - -175.05312066138302, - -175.0584824407596, - -175.06414493224736, - -175.0700954820602, - -175.0763212911591, - -175.08283014619752, - -175.08964831947952, - -175.09681392963395, - -175.10434682702882, - -175.1122266390427, - -175.12040033098322, - -175.1288780798201, - -175.13766954881604, - -175.14676556641658, - -175.15616943497295, - -175.1659008411327, - -175.17593920213233, - -175.1862504774326, - -175.196824565444, - -175.20761432749134, - -175.21853173350038, - -175.22954759359453, - -175.2406660858231, - -175.25183426579247, - -175.26304383331518, - -175.27437051496008, - -175.285829157725, - -175.29742819344312, - -175.3092410075965, - -175.32132772261164, - -175.33368198306093, - -175.3463380038301, - -175.35938672944494, - -175.37280084634858, - -175.3865386595166, - -175.40065231169388, - -175.4151134117779, - -175.4298296683621, - -175.4447901757535, - -175.45998348805128, - -175.47533517036834, - -175.4907851334461, - -175.50632536964417, - -175.5218989807286, - -175.53744124455696, - -175.5529190055928, - -175.56830897394715, - -175.5835812132037, - -175.59869959960076, - -175.61365727051586, - -175.62847814486676, - -175.64320182789336, - -175.6579077599888, - -175.67266444347968, - -175.68748114428726, - -175.7023768292941, - -175.71736533970736, - -175.7324355121718, - -175.74755541640604, - -175.76271382900524, - -175.77786003557088, - -175.79294359604987, - -175.80789798934399, - -175.82264375504974, - -175.83711696162553, - -175.85126521038646, - -175.86503469758648, - -175.87840107441656, - -175.891363258161, - -175.90388205070568, - -175.9159724581123, - -175.92768078907082, - -175.93898355856393, - -175.94986756608517, - -175.96034716542576, - -175.97043795725386, - -175.98017495851636, - -175.9896066934985, - -175.99875851987795, - -176.00763364022524, - -176.0162217094074, - -176.02452376050942, - -176.03253415248048, - -176.04024122310983, - -176.04763910249216, - -176.0679318404396, - -176.07403857851952, - -176.0798138960954, - -176.08526527181667, - -176.0903610748224, - -176.09510335940155, - -176.0995349802972, - -176.10366315284605, - -176.10751435979847, - -176.1111257988849, - -176.11451167544647, - -176.11768816360902, - -176.1206922834696, - -176.12355198636152, - -176.12626550131034, - -176.12883046302989, - -176.1312826880121, - -176.13362605671637, - -176.13585215015763, - -176.13797999276352, - -176.14003346149678, - -176.14200279355904, - -176.14389177720238, - -176.14574833935362, - -176.1475687721603, - -176.14934414654684, - -176.15112368602053, - -176.15293117001082, - -176.15475887557693, - -176.15656990274982, - -176.15828568525123, - -176.15989772093374, - -176.1614016029178, - -176.16279275965366, - -176.16405485987664, - -176.16518068974113, - -176.1661847912483, - -176.16708083412894, - -176.16786028806376, - -176.16852404110992, - -176.16909200988886, - -176.16957104256483, - -176.169970055895, - -176.17032656068687, - -176.1706538105437, - -176.17094576058076, - -176.1711787241118, - -176.1712906028844, - -176.17129230807154, - -176.17119653659955, - -176.17101028749624, - -176.17073594839343, - -176.17037737655127, - -176.16995072866226, - -176.16947515872434, - -176.16894828872495, - -176.16836934537105, - -176.16774772191164, - -176.16707863997718, - -176.16636110667878, - -176.16559774570442, - -176.16480008285123, - -176.1639899778988, - -176.16318516286918, - -176.16240288840396, - -176.161668267728, - -176.16097772596657, - -176.16029042915022, - -176.1595889212772, - -176.158879495502, - -176.15815731263527, - -176.15740550314567, - -176.1566273599541, - -176.15582684998594, - -176.15500893484815, - -176.1541994629973, - -176.1534215373656, - -176.15267343009174, - -176.15195045099242, - -176.15124882019262, - -176.1505387761304, - -176.14976106310942, - -176.1489326737251, - -176.1480707541671, - -176.1471656390594, - -176.14623632780354, - -176.14531342763416, - -176.14441889299073, - -176.14355715227018, - -176.1427283786149, - -176.1419514402367, - -176.1412816264542, - -176.1407375077705, - -176.14029612552036, - -176.1399384439106, - -176.13964738064533, - -176.13943288614522, - -176.13929945344017, - -176.13924469845784, - -176.1392664794935, - -176.13936119155392, - -176.1394847519127, - -176.13962488428854, - -176.1397863072789, - -176.1399503840994, - -176.14007670973822, - -176.1401462489273, - -176.14014850459506, - -176.1400935876514, - -176.13994779505927, - -176.13968005259184, - -176.13927986842913, - -176.1387420721915, - -176.13806265246646, - -176.13723374419465, - -176.1362535149849, - -176.13514746990603, - -176.13393818202286, - -176.13257567651007, - -176.13109258227408, - -176.12949615316015, - -176.12401265755292, - -176.11978053064394, - -176.11311521390945, - -176.11096945421673, - -176.108945305998, - -176.10706236059144, - -176.1052972091923, - -176.10367733423612, - -176.10216118001813, - -176.10077780632173, - -176.0995049067582, - -176.0983383545066, - -176.0973005098971, - -176.09635369369218, - -176.09553735586564, - -176.09487372943042, - -176.09430085382635, - -176.09383744642236, - -176.09350082636539, - -176.09325830514877, - -176.09308830680013, - -176.0929753650926, - -176.092898551256, - -176.09285587093706, - -176.0927755757159, - -176.0925766865241, - -176.09227342446806, - -176.09184906510345, - -176.0913052821696, - -176.0906605849475, - -176.08994496585566, - -176.0891295952423, - -176.0882920563129, - -176.0874190717475, - -176.08656085261998, - -176.08572625463168, - -176.08484582020228, - -176.083906020347, - -176.08296649950447, - -176.08212503114675, - -176.08145113446767, - -176.08097266232045, - -176.08071382231503, - -176.0806984416414, - -176.08092593163553, - -176.08139198538262, - -176.08207534814846, - -176.08294566265397, - -176.08398117744645, - -176.08528903245283, - -176.0869074758899, - -176.08888989417312, - -176.09128219420361, - -176.09408844795635, - -176.0973461796694, - -176.10106038707787, - -176.105189160561, - -176.10962538564095, - -176.11439108398986, - -176.11951480992374, - -176.12498767474736, - -176.13082448197648, - -176.1370614924032, - -176.14362563890066, - -176.15038614722454, - -176.1573625307494, - -176.1645511544603, - -176.1720197825482, - -176.17976161908328, - -176.18773711386447, - -176.195998341677, - -176.20459049807798, - -176.21351338894422, - -176.22276644626504, - -176.23237550908485, - -176.24235163160841, - -176.25269399531075, - -176.26342730165445, - -176.2745511446295, - -176.28603456080435, - -176.29782047268992, - -176.3098250647646, - -176.32197004981902, - -176.3341476680079, - -176.34618377523978, - -176.3580389132945, - -176.36976112761448, - -176.3813415372216, - -176.39281455196, - -176.40420840638882, - -176.4155052088204, - -176.42663313442367, - -176.43758861022204, - -176.4483530737251, - -176.45884417893717, - -176.4690056162268, - -176.47876414763422, - -176.48803093342266, - -176.4966859504772, - -176.5046181796607, - -176.51176611737668, - -176.51808256770886, - -176.52364716823405, - -176.5285250798122, - -176.53269373792529, - -176.53615941462178, - -176.53897029345544, - -176.54112025972768, - -176.54256729090255, - -176.54333088753802, - -176.5434187561942, - -176.54281154418965, - -176.54152566097412, - -176.5395884745846, - -176.53702741183812, - -176.53388056395005, - -176.53016386256706, - -176.5258973727282, - -176.52113435789803, - -176.51587385122977, - -176.51008826935856, - -176.5038165888198, - -176.49703878133832, - -176.489710619151, - -176.48182742193507, - -176.4734247214225, - -176.46455910906695, - -176.45527913321393, - -176.44561404115993, - -176.4355824513529, - -176.4251581314931, - -176.41432860338293, - -176.4031286503882, - -176.39152924182665, - -176.37955154937464, - -176.3672687525297, - -176.3288464618306, - -176.3156364780546, - -176.30229063182756, - -176.28885856251796, - -176.2754170974126, - -176.2619712000823, - -176.2485264425342, - -176.23515960439406, - -176.2219039067445, - -176.2087930080451, - -176.1958739326113, - -176.18315736871617, - -176.17066363271374, - -176.1584403863424, - -176.1465244690416, - -176.13493358679597, - -176.12370066061112, - -176.1128882253321, - -176.1025319485256, - -176.0926488335431, - -176.08325264499518, - -176.07432423093545, - -176.06587146606745, - -176.05789670113515, - -176.05042477000734, - -176.04342475093372, - -176.03687655942704, - -176.0307697558235, - -176.02508910159509, - -176.01980786951074, - -176.01490209513048, - -176.0103091053438, - -176.00600811546065, - -176.00198569705503, - -175.99822308898823, - -175.99470655493485, - -175.99142681379251, - -175.98835560362488, - -175.98544644861352, - -175.98270338511182, - -175.98012708534844, - -175.9777034583878, - -175.97543072117307, - -175.97330502675675, - -175.97131649912882, - -175.96946191517407, - -175.96773612421194, - -175.9661361138224, - -175.96466621636495, - -175.96332403802504, - -175.9621057994039, - -175.96099964428527, - -175.9599990309915, - -175.95910277621869, - -175.95830847109795, - -175.95761219650223, - -175.95701193038963, - -175.95651122555523, - -175.95615005271304, - -175.95591951543628, - -175.95578661094825, - -175.9557244554183, - -175.95571099638295, - -175.9557276438387, - -175.95576509976183, - -175.95582773486743, - -175.9559183271465, - -175.95605024042064, - -175.95626435740553, - -175.95657903060655, - -175.95697950215134, - -175.95743781888703, - -175.95795895795445, - -175.9585381838132, - -175.95916670018835, - -175.9598407506639, - -175.96053788726343, - -175.96121259030488, - -175.9618261854434, - -175.96234695659624, - -175.96274151745416, - -175.96298221499558, - -175.96305222858552, - -175.96293790675048, - -175.9626375770089, - -175.96214539835927, - -175.9614604653185, - -175.96058497197262, - -175.95951955036287, - -175.95827401719518, - -175.95688398193386, - -175.95535111353036, - -175.95362641597515, - -175.95169372243697, - -175.9495654747035, - -175.94726442651003, - -175.9448177039992, - -175.94224756423378, - -175.93957788635564, - -175.93682048311126, - -175.9340083267293, - -175.9311860282155, - -175.92839856548795, - -175.92568046432115, - -175.92307455138138, - -175.92061760461428, - -175.91830358318447, - -175.91614839171064, - -175.91417322328368, - -175.91232706818823, - -175.91056342237277, - -175.90887920358796, - -175.9072372604061, - -175.90558632007898, - -175.90392752093044, - -175.902253863353, - -175.90054665645522, - -175.8988094258906, - -175.89704029166782, - -175.8951935107192, - -175.8932373664199, - -175.89115991787682, - -175.88893465552425, - -175.88648904837268, - -175.88380599441365, - -175.8808885276447, - -175.87772176745278, - -175.87429054643385, - -175.87059705988517, - -175.86662627603997, - -175.86235992584466, - -175.85781826455565, - -175.85299883984877, - -175.84786041895072, - -175.8424139827858, - -175.8366750985577, - -175.83063394666803, - -175.82429095400448, - -175.8176542284637, - -175.81071918928336, - -175.80346442385672, - -175.79589001992537, - -175.78798221971547, - -175.77969516815267, - -175.77101751209122, - -175.76194807795022, - -175.7524687780771, - -175.74255675421165, - -175.73222069192192, - -175.72146501244526, - -175.71026178206708, - -175.69861077279245, - -175.6865273318384, - -175.67400728915334, - -175.66104568507672, - -175.6476548064103, - -175.63383640924485, - -175.6195704856026, - -175.60486854047002, - -175.58974613915396, - -175.57420630767396, - -175.55827072310026, - -175.54197091991273, - -175.52536323571235, - -175.50847715363898, - -175.49133148360463, - -175.47395011206743, - -175.45635887229056, - -175.43858250118024, - -175.42064519567217, - -175.4025630494445, - -175.38436139713355, - -175.36610175211194, - -175.34784179470404, - -175.3296139915051, - -175.31143832549765, - -175.29333400306552, - -175.27534656890566, - -175.25751200662566, - -175.2398487357878, - -175.22237766968755, - -175.20512365061902, - -175.18810617945053, - -175.1713561769004, - -175.15492968504947, - -175.1388520429761, - -175.12315086179547, - -175.10786119744697, - -175.09300839708632, - -175.07860160546, - -175.06465139902218, - -175.05117290269473, - -175.03816530726604, - -175.02563433300693, - -175.01360662517584, - -175.0020874733249, - -174.99108788539573, - -174.98062430610457, - -174.9706899605559, - -174.96126041124867, - -174.95233682826526, - -174.9439515098892, - -174.9361016271166, - -174.92880510620117, - -174.9221181690111, - -174.9160719185962, - -174.91067157225774, - -174.90593471896452, - -174.90191367130237, - -174.898644272324, - -174.8961250865122, - -174.8944002423106, - -174.89348472179753, - -174.89337473080428, - -174.89409413215571, - -174.8956806092211, - -174.89810376577708, - -174.9013297326376, - -174.9053327981329, - -174.91002066367298, - -174.91534125088714, - -174.92130945602312, - -174.9279158719996, - -174.9351267549949, - -174.94292085470275, - -174.95130320026854, - -174.96024724621702, - -174.96971829790414, - -174.9797089960254, - -174.99019391544314, - -175.00113601311523, - -175.01251988175616, - -175.02434833465009, - -175.03659322477083, - -175.04923793060905, - -175.06230158413382, - -175.07576551985653, - -175.0896028625392, - -175.10382005186804, - -175.11840696276363, - -175.1333305842056, - -175.1485678579814, - -175.16411037154828, - -175.17995222823293, - -175.19608946291615, - -175.2125311802599, - -175.22927096124133, - -175.24627993378357, - -175.26354283602282, - -175.28103751388082, - -175.29871129867198, - -175.3165307631669, - -175.33447870892655, - -175.3525005500696, - -175.37053779394202, - -175.38857289999532, - -175.40658284926334, - -175.42451620034961, - -175.44234808594803, - -175.46008756095398, - -175.47769700357188, - -175.4951229405457, - -175.51230090266856, - -175.5291727428113, - -175.54570843367057, - -175.56187471082472, - -175.57764975202505, - -175.59302654669847, - -175.6080262454223, - -175.62261913302024, - -175.63678011753004, - -175.65050038884232, - -175.66383678485786, - -175.67684078384545, - -175.68953056089143, - -175.70191142352684, - -175.7139766454384, - -175.72573709588983, - -175.7371981012409, - -175.74829247737506, - -175.75897271876906, - -175.76918294115123, - -175.778869774791, - -175.78796454688379, - -175.7964453237877, - -175.80427603994707, - -175.8114044662134, - -175.8178030951768, - -175.82346272323784, - -175.82835427046433, - -175.8324522733981, - -175.83576154145422, - -175.8382916558067, - -175.8400440014035, - -175.84105500697538, - -175.84135938468523, - -175.84093713093114, - -175.83978895787558, - -175.83794019767416, - -175.83540000366492, - -175.83215050578315, - -175.828218749942, - -175.82360034730766, - -175.81828103477656, - -175.81226350907147, - -175.80553335426464, - -175.7980754137404, - -175.78986184132773, - -175.78085707241146, - -175.77103487235414, - -175.76035391309836, - -175.74883480587332, - -175.73651654478064, - -175.72338198566243, - -175.70947151878613, - -175.69485428218312, - -175.67958194415496, - -175.6636974073514, - -175.64716235060862, - -175.63005457383298, - -175.61244398886535, - -175.5944053601166, - -175.5760266004762, - -175.5573828255652, - -175.5385106801697, - -175.51951529397584, - -175.50049391194955, - -175.48144959707525, - -175.46241978626182, - -175.44342106138456, - -175.42443239645735, - -175.4053741631052, - -175.38618043506133, - -175.36681835531496, - -175.34725668901126, - -175.32751960643688, - -175.3076328088797, - -175.28757238502996, - -175.26734278490318, - -175.246989798578 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -10212,1987 +1303,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - 35.67649551503122, - 35.70234787356209, - 35.730237269852715, - 35.76007029724086, - 35.791731516073185, - 35.82572326216525, - 35.86194385581354, - 35.900204925296606, - 35.94066506897536, - 35.98343732995174, - 36.02825959288362, - 36.07492637799027, - 36.123754636839394, - 36.17442569207132, - 36.22660731753502, - 36.28035378178431, - 36.33546421659911, - 36.391565055467716, - 36.448450422789364, - 36.50607465127466, - 36.56404592360107, - 36.62197757097073, - 36.6798681388166, - 36.7373613406224, - 36.79405527920491, - 36.8497306818005, - 36.90416606645144, - 36.956994511503254, - 37.007877849304776, - 37.05670333679486, - 37.1031462631923, - 37.14690873111806, - 37.187855737683286, - 37.22580129881686, - 37.260515318447084, - 37.291858671905906, - 37.3197926896123, - 37.34416087834914, - 37.36485447535787, - 37.38196366264024, - 37.395505937358514, - 37.40549870903602, - 37.4120402467587, - 37.41528730942243, - 37.41544286162887, - 37.412768238615065, - 37.40770089042544, - 37.40051661853801, - 37.39149577159745, - 37.38103482328773, - 37.36946251583821, - 37.35703143802906, - 37.34403637069885, - 37.330846908586636, - 37.31764634912505, - 37.30460520202, - 37.29210041887549, - 37.2802872671921, - 37.26928287334083, - 37.25940916388779, - 37.25096002902768, - 37.24400912768042, - 37.23863277170486, - 37.23530258519314, - 37.234043734095344, - 37.23486525917365, - 37.23824679852903, - 37.244321777543085, - 37.25297977262765, - 37.26434601885066, - 37.27881851805013, - 37.29616513398931, - 37.31614062113801, - 37.33921765458068, - 37.365138300918474, - 37.393579622527234, - 37.42456667911542, - 37.458037736270825, - 37.493643255004585, - 37.53109266204128, - 37.57042762914702, - 37.61128914197019, - 37.653322708930645, - 37.69638980340625, - 37.740217960097524, - 37.78445045078805, - 37.828808771728404, - 37.873050193999816, - 37.91687793304929, - 37.96000619298366, - 38.002174418714084, - 38.04312636956815, - 38.08258597242812, - 38.120280299429126, - 38.15595836712641, - 38.18938796697094, - 38.220421810725796, - 38.248743810714124, - 38.27428004031362, - 38.29683529137283, - 38.31618841393155, - 23.84813685825709, - 23.86060962700789, - 23.869455818316784, - 23.874445408671974, - 23.875556208844948, - 23.87269054861051, - 23.865582980331038, - 23.854175873089314, - 23.838509188947537, - 23.818424712206863, - 23.793827514563127, - 23.764828682904835, - 23.731546003738025, - 23.693825149271785, - 23.651847508942293, - 23.605914550559188, - 23.556049009285633, - 23.50244661368138, - 23.445481404102008, - 23.385421322127463, - 23.32230830825367, - 23.256574802306503, - 23.188666218980448, - 23.118513696190874, - 23.046563599771364, - 22.973335265013038, - 22.899007140175247, - 22.823761547555467, - 22.74813385963078, - 22.672582802814535, - 22.596942662435648, - 22.521726346767053, - 22.44744463371572, - 22.37405259262671, - 22.301777049180913, - 22.231077282669574, - 22.162176790726942, - 22.09495720220312, - 22.029816010975328, - 21.967133066948616, - 21.90663466349902, - 21.84856711163745, - 21.793245391252864, - 21.74061601020738, - 21.690608494981053, - 21.643480753317935, - 21.59938213298234, - 21.557873888282955, - 21.51914688443857, - 21.483372621669385, - 21.450169728233828, - 21.419452322090958, - 21.391340837899172, - 21.365711540036052, - 21.342137353696863, - 21.32069113489654, - 21.301434780280886, - 21.283785656956162, - 21.26770531304821, - 21.25320349731324, - 21.23996677029185, - 21.227734697606813, - 21.216551412800943, - 21.20639916584467, - 21.196857159071154, - 21.18797634458047, - 21.179798875823014, - 21.172059254537935, - 21.16470219144359, - 21.15779620615156, - 21.15130089994736, - 21.145092611122795, - 21.13928568378826, - 21.133939655568224, - 21.12886684312018, - 21.124065494754163, - 21.119521141527894, - 21.11514380622883, - 21.11073174952122, - 21.106237248461973, - 21.101661779963074, - 21.09692171320821, - 21.092021369984195, - 21.087003405242847, - 21.081963785999417, - 21.076958025275726, - 21.07204646586038, - 21.067352694194458, - 21.063044920966234, - 21.059185887483988, - 21.05584402186331, - 21.05329006659851, - 21.051603009510803, - 21.050837161030625, - 21.051184842470196, - 21.052828169460955, - 21.055800465691338, - 21.060162712212197, - 21.066239473799786, - 21.07403283811991, - 6.927532953959174, - 6.938318413402709, - 6.951081902303534, - 6.965803204260139, - 6.98255548564391, - 7.001540424220478, - 7.022684842871717, - 7.045876350079627, - 7.071332536371991, - 7.098928489820043, - 7.128482801124892, - 7.160004627839897, - 7.193489956367759, - 7.228716527484443, - 7.265489225315026, - 7.303958003665357, - 7.343829541815924, - 7.384796951726147, - 7.426836457742491, - 7.4696922405718595, - 7.556280148447496, - 7.599793715991306, - 7.64309524871116, - 7.685886047393939, - 7.728239942042681, - 7.769899118853305, - 7.810598040411171, - 7.850286886164692, - 7.88892272726598, - 7.926289000182047, - 7.96221398378875, - 7.996890138509303, - 8.030138545141643, - 8.06181935524901, - 8.092074926356055, - 8.120913736493918, - 8.148217155923726, - 8.173974987265034, - 8.198350795546771, - 8.221225790224684, - 8.242476736104306, - 8.262369853639274, - 8.280839326086323, - 8.297797779632031, - 8.313371012408306, - 8.327671963083098, - 8.340633685150262, - 8.352311090095883, - 8.36303881967672, - 8.372821215889573, - 8.381662368700445, - 8.389785855104718, - 8.397293884062176, - 8.404234270858282, - 8.410682712804897, - 8.416795662717364, - 8.422571730503517, - 8.428002014648637, - 8.433255892781057, - 8.43833858393527, - 8.44326260112759, - 8.448080970402668, - 8.452834838072759, - 8.457493204674156, - 8.462035849711912, - 8.466533375468721, - 8.470952508272596, - 8.47525969609899, - 8.479493056575715, - 8.483691128290872, - 8.48787681991135, - 8.492058189378243, - 8.496241155835735, - 8.500483549316298, - 8.504809173613816, - 8.509186141405893, - 8.51363469278018, - 8.51815272607792, - 8.522676693679935, - 8.527206269600104, - 8.531769909883646, - 8.536356454774483, - 8.540951174208008, - 8.545614444604187, - 8.55037270154458, - 8.555208647452313, - 8.560166800984646, - 8.565307164902869, - 8.570650868502968, - 8.576174850945687, - 8.581950747598308, - 8.588057053072898, - 8.594409889258348, - 8.601062125642878, - 8.60806423574789, - 8.61537007277851, - 8.62298040436801, - 8.630943578066711, - 8.639273576803024, - 8.647826026955304, - 5.1868953954776345, - 5.195551178099648, - 5.204186450895962, - 5.212784531670733, - 5.2214347870085485, - 5.230064569438988, - 5.238453485249332, - 5.246690687791908, - 5.254840864168991, - 5.262517138800153, - 5.269762794208783, - 5.2766408509677545, - 5.282901156285283, - 5.288328715794981, - 5.292988092781611, - 5.2968609597761285, - 5.29937328568784, - 5.300640643113859, - 5.30076875059644, - 5.2992928528527745, - 5.296162799889914, - 5.291537165748818, - 5.285319208815541, - 5.277139067025095, - 5.267252622325046, - 5.2558621426611145, - 5.242368645409799, - 5.2269776300273785, - 5.20996644026815, - 5.1910590704108985, - 5.170095460750186, - 5.1474024122857145, - 5.123127348040493, - 5.0965341348279845, - 5.067971087702597, - 5.0377328687167084, - 5.005289820185409, - 4.9706475523666, - 4.934167009513415, - 4.895826056408955, - 4.855178250039152, - 4.8126398364679, - 4.7686130219861145, - 4.722431985558448, - 4.674437479287381, - 4.6250966450199416, - 4.574287290090292, - 4.521880310657219, - 4.468384953959705, - 4.414213647322878, - 4.358841221061122, - 4.302799187769938, - 4.246611629944438, - 4.190058605502476, - 4.133398750462695, - 4.0772047913705185, - 4.021714169354627, - 3.9667833140872784, - 3.912944294008789, - 3.8606990406352075, - 3.809711675748616, - 3.7603917673495943, - 3.71320145202673, - 3.6681411171923095, - 3.6252354720596336, - 3.5848694007831954, - 3.54731200170283, - 3.512184384466332, - 3.4797854430118305, - 3.4503464658892042, - 3.4235879346167537, - 3.3995385986990483, - 3.378427404172464, - 3.360280117773953, - 3.3449656401297605, - 3.3327489435800137, - 3.3237898146819935, - 3.3177670220810156, - 3.3147622074859173, - 3.3148075620202837, - 3.3176552282782907, - 3.3230755063960564, - 3.3309909525291586, - 3.3412244637571717, - 3.3533489695738385, - 3.367257868156357, - 3.3827856964102487, - 3.399550384386059, - 3.4173375842099323, - 3.435996885224033, - 3.4946182579908855, - 3.5144837233558994, - 3.5341437868891483, - 3.5534922153781614, - 3.572438269679654, - 3.5908165384959116, - 3.608505341263669, - 3.6254630908651113, - 3.641629652938203, - 3.6569168882457146, - 2.509939223235831, - 2.5240841584081495, - 2.537052198853632, - 2.5489152761930174, - 2.5597887863409863, - 2.5697263374876367, - 2.578730494960202, - 2.586944865146597, - 2.5945104081853922, - 2.6013720705915215, - 2.607658405016845, - 2.61351295820264, - 2.6189498485080724, - 2.62398700704039, - 2.6287615812487015, - 2.63337393594202, - 2.6377417322265897, - 2.6420127139878415, - 2.6463240345815455, - 2.6506438843428386, - 2.6550449985254883, - 2.659661543113889, - 2.6645392626742557, - 2.66962882578992, - 2.675058011164616, - 2.680942663253775, - 2.6872179323028194, - 2.693973367950528, - 2.701299335101697, - 2.709181331390999, - 2.717614089937547, - 2.726668236375233, - 2.7363814274689897, - 2.746648233502487, - 2.7575258567452123, - 2.7690541663580386, - 2.781149539804681, - 2.7938011736206687, - 2.807030787441589, - 2.8208088845924735, - 2.83506511129307, - 2.8498397067103065, - 2.8651643118405223, - 2.8809724310467733, - 2.8973013784355297, - 2.9141897424801604, - 2.9316340875204734, - 2.9496358807180667, - 2.968220075521925, - 2.9873954217620278, - 3.007166442246111, - 3.027552312143827, - 3.0485503941934824, - 3.070169910675824, - 3.0923952279561986, - 3.1151784845310773, - 3.1384791436155868, - 3.1623161850262824, - 3.186624606236282, - 3.211318531281498, - 3.236482655488607, - 3.2620377309774087, - 3.287859817634078, - 3.313915713392272, - 3.340162514565253, - 3.3664366550545752, - 3.392589366446309, - 3.4186586451982457, - 3.444482013721399, - 3.4699045463610863, - 3.4949280587582123, - 3.5194784572295776, - 3.543407363506791, - 3.566627923476793, - 3.5891571162837494, - 3.6109071232704832, - 3.6317865093488435, - 3.651834231441483, - 3.6709974950734194, - 3.6892063846631555, - 3.706524462136344, - 3.7229560790659733, - 3.738323028677762, - 3.752625189011496, - 3.766295896456279, - 3.7796270996774055, - 3.792827705405724, - 3.8063976755649858, - 3.820657602082094, - 3.835720397760398, - 3.85220082739406, - 3.871411267728825, - 3.893372778928759, - 3.9180391392857032, - 3.94697854808041, - 3.9804451632851965, - 4.018423630592395, - 4.0613385396280615, - 4.109837292413585, - 4.1640000969814075, - 3.5615936616274704, - 3.6287358793507365, - 3.7025839051046843, - 3.782965691460568, - 3.870244564154209, - 3.9645746416213097, - 4.065576863423238, - 4.172850052203261, - 4.286630627762497, - 4.406129463760411, - 4.530061243474655, - 4.93123161154255, - 5.2050879087404756, - 5.601460509919054, - 5.730432645672924, - 5.854558826236843, - 5.974012130927617, - 6.088197014532369, - 6.195992531465674, - 6.296947551423617, - 6.391301153882614, - 6.478264346985791, - 6.557319894779976, - 6.628935842738743, - 6.692823195854336, - 6.748644248119445, - 6.796522518508437, - 6.836667617272846, - 6.86896877630823, - 6.89340836276869, - 6.910486097727036, - 6.920180070163088, - 6.922343707299382, - 6.917100741987316, - 6.904554185233197, - 6.884686818378611, - 6.857562749629942, - 6.823386857394517, - 6.7823833371898505, - 6.734819554379785, - 6.680813090006161, - 6.620723299648509, - 6.554948591210298, - 6.483648676701593, - 6.406981356573526, - 6.325408714400035, - 6.239203408668056, - 6.148152366401587, - 6.0527060424057275, - 5.953385307408162, - 5.850051238850335, - 5.743006547445107, - 5.6329052847878405, - 5.520039650695075, - 5.404242921342192, - 5.286259948583611, - 5.166852799203398, - 5.0455281061440544, - 4.922975700734131, - 4.800043388372305, - 4.676834973011751, - 4.553460508646885, - 4.430809587542833, - 4.309588608933277, - 4.189161305928021, - 4.07044978280983, - 3.9543294931735677, - 3.840410727259429, - 3.729017548984517, - 3.620968257117471, - 3.516466951305755, - 3.4149741753008716, - 3.3172388307723177, - 3.2239112513701067, - 3.1338279618213605, - 3.047412414940345, - 2.965258486428724, - 2.886788000904565, - 2.811488470406609, - 2.73982563571975, - 2.6719620827563113, - 2.606398126321279, - 2.5435642000770007, - 2.48379761021785, - 2.4258842370451106, - 2.369585180790644, - 2.315215038101017, - 2.262391122109837, - 2.209965656294015, - 2.158224579721875, - 2.1074095384738265, - 2.0560927771693813, - 2.0044161216961185, - 1.9526763528717732, - 1.9003206732432871, - 1.8469230025426844, - 1.7929258442073852, - 1.7385556855869428, - 1.6828328744798025, - 1.6262152539530892, - 1.1521354650603362, - 1.094571719116238, - 1.0362582754263077, - 0.9777176100872325, - 0.9191540008892858, - 0.8603682884294994, - 0.801920775739078, - 0.7443171427780175, - 0.6872326045121562, - 0.6310518235317815, - 0.5762572282393825, - 0.5229697984883348, - 0.4713712286237586, - 0.4218724007790122, - 0.3748295959846315, - 0.33025685060476295, - 0.2885440830333472, - 0.25002261519441493, - 0.2148460811151991, - 0.18324076833338587, - 0.15542992585477933, - 0.13157649956360684, - 0.1118441006054427, - 0.09630846020956252, - 0.08499696950953917, - 0.07813157247101499, - 0.0757526292993167, - 0.07782204123712466, - 0.08442899305059015, - 0.09564717404159806, - 0.11131462774748391, - 0.13122353054173264, - 0.15565362831461993, - 0.18430186193899178, - 0.21679883494708108, - 0.2532918823283108, - 0.29357968284937597, - 0.33723092368045604, - 0.38406554130434545, - 0.43419723817233846, - 0.4871948612160457, - 0.5426144095245808, - 0.6008113089064653, - 0.6614170836786515, - 0.7239544074225597, - 0.7884408768213695, - 0.8548989588415741, - 1.0671897891979745, - 1.139275123469966, - 1.2120952478429516, - 1.2859694893311011, - 1.360746761832087, - 1.4359644531136286, - 1.511539914891544, - 1.5878264115751979, - 1.6643324902730887, - 1.7405633246751058, - 1.8171792724169684, - 1.8938566718573844, - 1.9701114961242776, - 2.0460030791633295, - 2.121634408334632, - 2.196534597019375, - 2.270326865574801, - 2.3435237836618192, - 2.4156689918047243, - 2.4862988120205465, - 2.555701729814903, - 2.6237649896194313, - 2.6900932708000638, - 2.754579364146479, - 2.817496327212074, - 2.8785197720243056, - 2.9373305469526034, - 2.994359106849265, - 3.049390896841506, - 3.1021517282037703, - 3.152765431185668, - 3.2013714336365813, - 3.247751591582455, - 3.291767809762411, - 3.3337747554284682, - 3.3736073162026705, - 3.411120082676915, - 3.4465093245785954, - 3.479779313189079, - 3.510806062905061, - 3.5396022016705895, - 3.5663382124682186, - 3.590927772340905, - 3.6133057871597485, - 3.6336910031234986, - 3.6520707095593767, - 3.668418005262427, - 3.682813538488419, - 3.6953453732623824, - 3.706022121017847, - 3.7148798327260724, - 3.722060224414864, - 3.727582443283719, - 3.375029403503653, - 3.37783944555337, - 3.3791377655107153, - 3.3789790039870464, - 3.377412832196513, - 3.3744608407803542, - 3.370204468236696, - 3.364734511860806, - 3.3580304501849887, - 3.3501786015137673, - 3.341270550901379, - 3.3313210246962663, - 3.3203556202348485, - 3.3084906893727815, - 3.295832289180231, - 3.2823482790584304, - 3.268178442744379, - 3.253463100241137, - 3.2382000237615145, - 3.2224686803298033, - 3.2064044163056495, - 3.1900845345887494, - 3.173515978059471, - 3.156846568121554, - 3.140226678968055, - 3.1236299253680855, - 3.1071850938324825, - 3.091024803290433, - 3.075185891868462, - 3.0596955537857564, - 3.044676232897816, - 3.030236373575415, - 3.0163204392056575, - 3.0030415382975493, - 2.9905055327415964, - 2.978686524157726, - 2.9676558931155976, - 2.9575198957373585, - 2.9483005337778434, - 2.9399481242137986, - 2.9325424759771384, - 2.926136256342098, - 2.920620745789213, - 2.9160213502587506, - 2.9123778042499273, - 2.9096379946702786, - 2.9077841514401306, - 2.9068390239118473, - 2.9067752389646517, - 2.9074850393145026, - 2.908995928847132, - 2.91126933968542, - 2.9141613968418794, - 2.917641797564211, - 2.921637463229218, - 2.9260195470384938, - 2.930731002176619, - 2.9357460595250355, - 2.940983458481369, - 2.9464493938183165, - 2.9522422683718377, - 2.9583005576780614, - 2.9645470859524847, - 2.9710344457822524, - 2.977769660421184, - 2.9847093195932555, - 2.9917916239939153, - 2.9990479501679808, - 3.0064906187315676, - 3.0140559932493143, - 3.0217473984011214, - 3.0295956874410974, - 3.03758560894971, - 3.0456883612559986, - 3.053943984078143, - 3.0623805158311095, - 3.070978007351151, - 3.0798048080099116, - 3.0889053610981114, - 3.0982753336775715, - 3.107945770708228, - 3.1179763799854316, - 3.1283932882073033, - 3.139206557929917, - 3.1504870753752803, - 3.1623005079433195, - 3.174667785831945, - 3.1876482877991634, - 3.2012948772278773, - 3.2156275196680877, - 3.230666580102482, - 3.2464366905851625, - 3.262923746661976, - 3.2800254681842897, - 3.2976531694764475, - 3.315700265607406, - 3.3340415945667616, - 3.352577437031985, - 3.3712098924161302, - 3.3898200928210005, - 3.1021578881724583, - 3.1205860714329483, - 3.1387326249758853, - 3.1565115399963246, - 3.173847571523364, - 3.190655918883292, - 3.2068681295813306, - 3.222458857312865, - 3.237380582412253, - 3.2515894676020425, - 3.2650977259049556, - 3.277891198412387, - 3.2899360502646235, - 3.3012264438735848, - 3.311782300206675, - 3.3216308721401777, - 3.3307670565300675, - 3.3392180401394733, - 3.347007830661149, - 3.35418991359905, - 3.360803546971148, - 3.3668627494369683, - 3.372373467092329, - 3.3773297137187392, - 3.3817621194070755, - 3.385688172036284, - 3.3890994212784067, - 3.3918581309123406, - 3.393951071089757, - 3.3954018316133516, - 3.3961234898641828, - 3.395995464941641, - 3.395023659353921, - 3.3931812196962734, - 3.3901515941226235, - 3.386037250122918, - 3.380931086927659, - 3.3745240507143532, - 3.3667731764246627, - 3.3577989515656386, - 3.3475146746849185, - 3.335665099701367, - 3.322464539169575, - 3.308157926784059, - 3.2922882627696635, - 3.2751953877518547, - 3.2572040699199363, - 3.2381754433560728, - 3.2181418702052813, - 3.197497533805143, - 3.1764633037333416, - 3.154552521057632, - 3.132155196034334, - 3.1095900674026935, - 3.086389235648751, - 3.0626039835135415, - 3.038515025797984, - 3.013993262355493, - 2.9885227556511627, - 2.9624063291591396, - 2.93588992255284, - 2.908172839345119, - 2.879455447037528, - 2.8500156329295594, - 2.819538725996598, - 2.7877766211524633, - 2.755060736462016, - 2.7216041321786264, - 2.686792860941199, - 2.651043651551345, - 2.6147486482689106, - 2.5775866803268377, - 2.5397194181144362, - 2.5015938864674196, - 2.4633523832086475, - 2.424824147245196, - 2.386458247022158, - 2.3486567135797287, - 2.311100631151983, - 2.2741748180742025, - 2.2382982289111286, - 2.2035103054838543, - 2.169907267815589, - 2.1378912145622087, - 2.1077584704211363, - 2.0794180318040936, - 2.053255886824818, - 2.0295896263980193, - 2.008482382481886, - 1.990160121244954, - 1.9748754626387806, - 1.9627875391484602, - 1.9540138584500628, - 1.9486991234230167, - 1.9469042895267923, - 1.9487074667285746, - 1.9541029101720702, - 1.9630145977187348, - 1.9754157474472709, - 1.9912622071163328, - 1.735750454762341, - 1.7592960827709052, - 1.7860081334615607, - 1.8155985564448036, - 1.8477316536319681, - 1.8823459567212621, - 1.9192160818978607, - 1.9579659600863049, - 1.9983414507582273, - 2.0402745030139657, - 2.0833629154500324, - 2.1271837143829875, - 2.1717880564919154, - 2.2168739300542475, - 2.2621013704829034, - 2.3073977635755463, - 2.3526628388094393, - 2.3976352633145357, - 2.442089444422638, - 2.48610355132241, - 2.5294900026051885, - 2.5721000149475617, - 2.61402422679641, - 2.6552334510142854, - 2.695628696392507, - 2.735193707311054, - 2.7740485417340737, - 2.8121939546719057, - 2.849572714175399, - 2.8863048851474757, - 2.922388318655701, - 2.9578248159046514, - 2.9926636207358444, - 3.0270166548575297, - 3.060975005691977, - 3.0945364124725456, - 3.1279089496671166, - 3.161229746160067, - 3.1945893876826803, - 3.228105183129183, - 3.2619466849554857, - 3.296186747986011, - 3.3308144446221832, - 3.365816938382536, - 3.401191719837866, - 3.4369482087252767, - 3.472972563929358, - 3.509269432602194, - 3.545811725696988, - 3.582442167913204, - 3.6190680449231074, - 3.6556315590503616, - 3.692019776750172, - 3.727965100445271, - 3.763400017998749, - 3.798215895847277, - 3.8319926936862325, - 3.864519137899194, - 3.8957280201742677, - 3.925384522224988, - 3.9531228656186848, - 3.978950808319678, - 4.002844829059329, - 4.024375970792807, - 4.04349763140913, - 4.060203055393523, - 4.074272937080477, - 4.085539671012777, - 4.0940303148669965, - 4.099658086730446, - 4.102038121381932, - 4.1011125156842, - 4.096738240347526, - 4.088601807073167, - 4.07650405624117, - 4.0603510918828745, - 4.039977690741029, - 4.0151711350003385, - 3.9859589462150047, - 3.9523186514122406, - 3.9141059407170617, - 3.8713573371884538, - 3.8241947751395715, - 3.7727140755152457, - 3.717100006863631, - 3.6576531618229238, - 3.59471596740401 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -12204,1987 +1323,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -36.79756991543012, - -36.77207992632047, - -36.74455289763926, - -36.71508223604873, - -36.68378338120222, - -36.65015399728426, - -36.61429576399835, - -36.576397053065975, - -36.53629926612625, - -36.493889360077276, - -36.4494294502612, - -36.40312501645875, - -36.35465910710228, - -36.30435039955149, - -36.2525311199574, - -36.19914699976629, - -36.14439890719821, - -36.0886604087649, - -36.03213738006717, - -35.97487548839442, - -35.91726655106922, - -35.85969723688946, - -35.80216900042221, - -35.74503812818379, - -35.68870651735743, - -35.63339344070679, - -35.579320380189614, - -35.52685425746043, - -35.47633324017042, - -35.427870071380745, - -35.38178946187266, - -35.33838930902522, - -35.297804615727294, - -35.26022136605005, - -35.22586965606519, - -35.194888610440806, - -35.167316898757946, - -35.143311014233774, - -35.12297971962687, - -35.10623283293551, - -35.09305285699744, - -35.08342238228938, - -35.077243139725404, - -35.074358370409676, - -35.07456510974054, - -35.077602022480995, - -35.08303165858664, - -35.090578216579495, - -35.09996134781491, - -35.110784578608936, - -35.12271916673224, - -35.135512523404664, - -35.1488698677877, - -35.1624216051423, - -35.17598443803586, - -35.18938785676248, - -35.20225490971822, - -35.21443032940251, - -35.225796989444376, - -35.23603296327773, - -35.2448443607079, - -35.252157522815004, - -35.25789613774022, - -35.26158858139142, - -35.26320968781855, - -35.26275041625947, - -35.25973112861324, - -35.25401839949826, - -35.24572265250274, - -35.23471865255878, - -35.22060839782837, - -35.20362402454831, - -35.1840107782488, - -35.16129598384542, - -35.13573757473705, - -35.10765848854788, - -35.07703366556945, - -35.04392484021403, - -35.00868155147049, - -34.971594372614284, - -34.93262163187933, - -34.892122343617245, - -34.85045099940824, - -34.807746125874445, - -34.7642801883154, - -34.72040991494752, - -34.67641380952027, - -34.632534600952454, - -34.58906907379708, - -34.54630302394735, - -34.50449700649214, - -34.46390726210385, - -34.42480986390029, - -34.38747773974636, - -34.35216187308681, - -34.319094472470695, - -34.288422826135005, - -34.260463021756586, - -34.23528898595779, - -34.21309592689008, - -34.1941049945137, - -20.190948025723724, - -20.179028675036633, - -20.1707445985209, - -20.166323522732313, - -20.165786677012882, - -20.169230745020887, - -20.176919090376547, - -20.188908497851667, - -20.205158330540147, - -20.22582573825821, - -20.2510047821496, - -20.280584148929663, - -20.31444589802225, - -20.352743820630412, - -20.395297158144214, - -20.44180520942292, - -20.49224548963795, - -20.546422892453066, - -20.603964204725298, - -20.66460201199964, - -20.7282946386503, - -20.794610297377886, - -20.863104119376832, - -20.93384521434689, - -21.006387526506085, - -21.0802118460165, - -21.155139660936225, - -21.230988504611982, - -21.307222726875732, - -21.383383222642042, - -21.45963552576597, - -21.53546636392673, - -21.610364531294096, - -21.684374836059973, - -21.75727025001423, - -21.82859113502529, - -21.89811389368938, - -21.965957071965263, - -22.031722862722436, - -22.095031150114405, - -22.156156366610247, - -22.214851918452844, - -22.270802463048543, - -22.324061836641167, - -22.37470095525497, - -22.422461582790408, - -22.46719405157292, - -22.509338035648867, - -22.548702221938903, - -22.585114762668557, - -22.618957267699397, - -22.65031546264539, - -22.679068517865417, - -22.705340046243776, - -22.72955727236888, - -22.75164668390605, - -22.771545483660816, - -22.789836506881947, - -22.806557691126855, - -22.82169859172004, - -22.83557244956284, - -22.84843881385305, - -22.860253046159624, - -22.87103318285782, - -22.881199261558354, - -22.890699738568514, - -22.899492450611586, - -22.90784192570341, - -22.915804403962166, - -22.92331275941116, - -22.930407780945984, - -22.9372130699337, - -22.94361567552822, - -22.949556822874857, - -22.95522202742449, - -22.960614713685857, - -22.96574996088768, - -22.97071625150098, - -22.97571528040408, - -22.980795409046088, - -22.98595487117244, - -22.99127189088177, - -22.996743124094273, - -23.00232683632923, - -23.007922195844305, - -23.0134727264124, - -23.018919806540268, - -23.02413938007574, - -23.02896026055553, - -23.033322985897765, - -23.037162508859797, - -23.04020510614446, - -23.042376288117115, - -23.043627040976435, - -23.04376768255025, - -23.042620339414487, - -23.04015888854526, - -23.036328693655413, - -23.03081055473451, - -23.023610638300124, - -7.842526516218285, - -7.831115671975279, - -7.817827287799205, - -7.802745446678907, - -7.785833602284495, - -7.766910674131692, - -7.746108427031084, - -7.723584734583495, - -7.6991412718635575, - -7.672951636613769, - -7.64523295650431, - -7.616004698565715, - -7.585305552701807, - -7.553374410263472, - -7.520408376586236, - -7.486298559352391, - -7.451325925916804, - -7.415763843040735, - -7.379666385293259, - -7.3432606993245955, - -7.270657439400339, - -7.234781236035988, - -7.199441516668402, - -7.164850166844317, - -7.1310273371364, - -7.098153159934402, - -7.066396634442804, - -7.035838981212537, - -7.006547310198519, - -6.978632669740737, - -6.952197614948885, - -6.927192546234832, - -6.903691297279464, - -6.8817180818148245, - -6.861244561061385, - -6.842233488171757, - -6.824688957135438, - -6.808611766195685, - -6.793943748411829, - -6.780692098155518, - -6.768886827488618, - -6.758465030247368, - -6.749430164747802, - -6.741794592038746, - -6.735523756798061, - -6.730583371330606, - -6.726964777096984, - -6.724607632088603, - -6.723384399633417, - -6.723204704920768, - -6.723998220806, - -6.725690319008488, - -6.728190161284276, - -6.731381450011796, - -6.735201186817027, - -6.739594889092877, - -6.744484633044335, - -6.7498115863929895, - -6.755536883193042, - -6.761586731702828, - -6.767874926423351, - -6.774344837444186, - -6.780941297378406, - -6.787598516589872, - -6.794256039342395, - -6.800848552039529, - -6.807337007647826, - -6.8136835064059635, - -6.819848285164657, - -6.82579363863863, - -6.831484944583293, - -6.836901029741166, - -6.842056236083324, - -6.846922223038932, - -6.851472016374245, - -6.8556838353458405, - -6.859578956540854, - -6.863164145562916, - -6.866429037984394, - -6.869389010945053, - -6.872050679711556, - -6.874431364270858, - -6.876451393443582, - -6.87812934173099, - -6.879459639365308, - -6.88036723735946, - -6.880818693405059, - -6.880805944917755, - -6.88027807629507, - -6.879114884206485, - -6.877296754471467, - -6.874799061175458, - -6.871479799526641, - -6.8673423965551255, - -6.86240042209731, - -6.856588830883914, - -6.849849840135894, - -6.8422351512734565, - -6.833768866522881, - -6.824360856083298, - -3.5021756182101065, - -3.4905854383545214, - -3.477933178432581, - -3.4642695194780497, - -3.449720336796434, - -3.434342541012621, - -3.4181165927719697, - -3.4011893531320627, - -3.383714291143474, - -3.365686996346311, - -3.3472651992691995, - -3.3286297752411076, - -3.309897527062783, - -3.2912027776041826, - -3.2727555843376557, - -3.2547455201666518, - -3.2373374500391146, - -3.220734620545084, - -3.205116432836572, - -3.1906924756570145, - -3.1776678821916073, - -3.1661859430289274, - -3.1563618120979813, - -3.148392512076917, - -3.142373808609356, - -3.1383412453609667, - -3.1365372151362894, - -3.137035226569787, - -3.1398344607900404, - -3.1450577552314636, - -3.152836519905506, - -3.1630954987237465, - -3.175761278302435, - -3.19113682743503, - -3.209101267420886, - -3.229468992216767, - -3.252433142475482, - -3.2779711064127675, - -3.3058501013062545, - -3.3360145689320344, - -3.3686688337278214, - -3.4035553446282605, - -3.4403917669150523, - -3.479497667387804, - -3.5206862598193833, - -3.5636328093011764, - -3.6083214986996746, - -3.654844008193575, - -3.702822381845149, - -3.751869157467698, - -3.8022652498825034, - -3.853599547967409, - -3.905416539559155, - -3.957727331199934, - -4.010247012288786, - -4.062486548197227, - -4.1141939281857525, - -4.165412526841539, - -4.215751805894076, - -4.2648286972626686, - -4.312890250141716, - -4.359652268378191, - -4.404782041292207, - -4.448314274206616, - -4.490283659827627, - -4.530428352796911, - -4.568574828735764, - -4.605152469059048, - -4.639988798398748, - -4.672955845817672, - -4.7044441371208325, - -4.734559718519324, - -4.763184207379319, - -4.790397997002996, - -4.816473388442738, - -4.84118597864819, - -4.864356925825827, - -4.886396530392168, - -4.907159279620992, - -4.926466971531869, - -4.94448058335224, - -4.961323623397948, - -4.976816218543584, - -4.990877192926003, - -5.003843149292544, - -5.0155151768052155, - -5.025747803557849, - -5.034755953826966, - -5.042498177312989, - -5.048822367547914, - -5.054662408408169, - -5.055368737065997, - -5.0548085981947715, - -5.052940855143246, - -5.049720788912683, - -5.045247338235019, - -5.039617364680543, - -5.0328335762283825, - -5.024942746759002, - -5.016103201894484, - -3.8609522161595855, - -3.850893895058485, - -3.839822859678161, - -3.8278411279791285, - -3.8150310963203227, - -3.8015115737508425, - -3.7874220615558407, - -3.772853700105178, - -3.757903510246711, - -3.74270374187976, - -3.7273447647737323, - -3.7119181350446793, - -3.6965320534147645, - -3.6812767425797057, - -3.666238392837199, - -3.651496957694467, - -3.637101127322463, - -3.6230757446768136, - -3.6094415083154923, - -3.5961612059967587, - -3.583194943410799, - -3.5705204581873007, - -3.558090258767837, - -3.545796741373691, - -3.5335873111727123, - -3.521424974002762, - -3.509108523493932, - -3.4966040959579803, - -3.4839276321035735, - -3.4709777756947764, - -3.457647557904585, - -3.4439729468302303, - -3.4299725558069403, - -3.4154663317944305, - -3.4005368051223734, - -3.385268075155875, - -3.3695142964682665, - -3.353239637646556, - -3.336492360918475, - -3.3192174843025395, - -3.301224051118771, - -3.2825803658272186, - -3.263358584367465, - -3.2433050332731126, - -3.2224790926977196, - -3.2009809129466307, - -3.1787196977824284, - -3.1556283832786467, - -3.1318451718414244, - -3.1074696357423277, - -3.0822911585828296, - -3.0564758924024917, - -3.0301914412027764, - -3.003331674287572, - -2.9759767804246664, - -2.9483316110920863, - -2.9204949745851434, - -2.8924133083927264, - -2.864304020442795, - -2.836370632923409, - -2.8084493025104393, - -2.780706008293822, - -2.753336853075006, - -2.7263487206123376, - -2.699760102345736, - -2.673759052450632, - -2.6484851758484176, - -2.62381229932228, - -2.599899540135546, - -2.576876966568314, - -2.554668610111192, - -2.5333017739628345, - -2.512883444118029, - -2.493443280681427, - -2.4749105509533362, - -2.4573406872897148, - -2.4407893217449828, - -2.425189487515274, - -2.4105739445405927, - -2.3969892712350274, - -2.3843616470975335, - -2.372673345442535, - -2.3620622760700947, - -2.3525055983596475, - -2.343606691407459, - -2.335040594624301, - -2.32657992849618, - -2.31782423719648, - -2.3085156819709187, - -2.298559025476589, - -2.2874078290230235, - -2.273904397176267, - -2.2580741666469866, - -2.240003031592525, - -2.2184572806158744, - -2.1933255730383063, - -2.1647190257158098, - -2.1324651573618856, - -2.0962554181411512, - -2.056160668514602, - -1.453049308576664, - -1.4059639924543208, - -1.3549871984599609, - -1.300282351149634, - -1.241710323411296, - -1.179196680889742, - -1.1128728280404916, - -1.0428099570953235, - -0.9687399867880329, - -0.8908467818901786, - -0.8094919105820122, - -0.5313478586025471, - -0.3354678249592573, - -0.031446211332174734, - 0.06939582406080902, - 0.16889619505780828, - 0.26684476886608977, - 0.36252670273858767, - 0.45490536819471794, - 0.5432960017860982, - 0.6273329522002782, - 0.7061254090636875, - 0.7789753663804255, - 0.8455613065844365, - 0.9053060920648615, - 0.957597686212778, - 1.0020196746685537, - 1.0382814066068424, - 1.0660119190751, - 1.0849213613352973, - 1.0949860879602902, - 1.0960549729623588, - 1.0879574409186246, - 1.0707445760652257, - 1.0444922372615442, - 1.0091930492829655, - 0.9649490732043602, - 0.9120126990735162, - 0.85067171790759, - 0.7813111636617975, - 0.7042171216484694, - 0.6199034676026973, - 0.5289372539919719, - 0.431765212784327, - 0.3288446597967982, - 0.2209373331738833, - 0.10865176061510828, - -0.007686265271718895, - -0.12731768834377144, - -0.24944902230240285, - -0.3737151335381812, - -0.4994974449619858, - -0.6259728450086821, - -0.7525605499202679, - -0.8789925727188219, - -1.0045152018728358, - -1.1284133047202598, - -1.250729604071837, - -1.3708756416465688, - -1.488223274365093, - -1.602574958181035, - -1.7137942846950474, - -1.8213702490236656, - -1.924926396783075, - -2.0248259400318362, - -2.1207032384936273, - -2.212199917607889, - -2.2996000718059255, - -2.3828688683093997, - -2.4617542794412817, - -2.5363201879059916, - -2.6070542412081377, - -2.6738268423443983, - -2.7365262261509744, - -2.7959961874729427, - -2.852272281528967, - -2.9053049180442625, - -2.955630580200952, - -3.003808089125616, - -3.0498424195270686, - -3.0938555722736907, - -3.1369941004078026, - -3.179241523278096, - -3.2205389941353046, - -3.2617737374557487, - -3.3032159031590207, - -3.344674826602918, - -3.3863362585748407, - -3.4289019168714505, - -3.4721334001860993, - -3.515780151833693, - -3.560717351853287, - -3.6068057337528194, - -3.653773212452287, - -3.701884466801029, - -3.7511729151086923, - -3.8011344763099553, - -3.851644934454111, - -3.9034690315048586, - -3.956342025271934, - -3.6103601519457413, - -3.665393425876606, - -3.721401305507725, - -3.777979149731899, - -3.8349392169931695, - -3.8924067977559336, - -3.9499319182134425, - -4.00708833776236, - -4.064102801653538, - -4.120659743552314, - -4.1763588196883195, - -4.231106252086464, - -4.284785737617367, - -4.337118215576793, - -4.38786238300982, - -4.4370902705950535, - -4.484520806773513, - -4.5298885558826, - -4.573090615910859, - -4.613924494197774, - -4.652132685218481, - -4.687490722348494, - -4.719781021151284, - -4.748786340183866, - -4.7743069819540285, - -4.796017601607339, - -4.813709919095162, - -4.827236745070232, - -4.836349915525227, - -4.840822202050429, - -4.840627387269677, - -4.83579217183897, - -4.825901356662454, - -4.8111073634571335, - -4.791634919267, - -4.7672290723596085, - -4.737984933800384, - -4.7042728298164, - -4.6662325863680785, - -4.6236797047608515, - -4.577054890223655, - -4.526833100736316, - -4.47261267928735, - -4.4148288150858175, - -4.35405709217855, - -4.290327754636246, - -4.223685055050234, - -4.004080597104115, - -3.929312508876656, - -3.8535311369148046, - -3.776501805898812, - -3.698495145419911, - -3.620121946630781, - -3.5416059678335294, - -3.462695395751977, - -3.383975246212149, - -3.3060305865777795, - -3.228258313580657, - -3.1510202915860006, - -3.074821680915953, - -2.999594594632566, - -2.9252055122122274, - -2.852102412102515, - -2.7806318551675737, - -2.710224316873674, - -2.6412873780888604, - -2.5742327249843804, - -2.508724098222166, - -2.444822387732411, - -2.382880531358657, - -2.322967445015247, - -2.2647704354768368, - -2.2085888173167767, - -2.154720617558107, - -2.1027145400926996, - -2.052764647174198, - -2.005131207463724, - -1.9596826519257602, - -1.9162721452606042, - -1.875107610083476, - -1.8363178460970504, - -1.7995405024371145, - -1.7649328029638327, - -1.7326330800235694, - -1.7024506276562419, - -1.6743867294552617, - -1.6485687935131232, - -1.624995008019099, - -1.6035081352221767, - -1.5841939438919863, - -1.5671168949652248, - -1.5520747486536186, - -1.5390805340964564, - -1.528159465026543, - -1.519240801955816, - -1.5122451774130636, - -1.50716048048715, - -1.5039487252713308, - -1.5024827839287531, - -1.502740773281061, - -1.22387481598866, - -1.2279533329471752, - -1.2336404443586622, - -1.2408730598654103, - -1.2496039497947307, - -1.259828248032624, - -1.2714513634264921, - -1.2843672043081482, - -1.2986261914416617, - -1.314136064220872, - -1.3308027079566087, - -1.3486411185252123, - -1.367654042480103, - -1.3877190838130695, - -1.4087289141244974, - -1.4307668091709982, - -1.4536805467770013, - -1.4773114964713019, - -1.5016731867013915, - -1.5266734969486029, - -1.552145077692047, - -1.5779893420997824, - -1.604192021486619, - -1.6305582713660638, - -1.6568882038574375, - -1.6831843106269178, - -1.7092750377655899, - -1.7349942607247955, - -1.7602717301320212, - -1.7850641650932753, - -1.8092381081362077, - -1.832666161061415, - -1.8553699151562575, - -1.8772437601993825, - -1.8981909510188586, - -1.9181942866356836, - -1.9371859097510788, - -1.9550827659501033, - -1.971851577248374, - -1.9875015102042983, - -2.0019911376275212, - -2.0152874852244778, - -2.0273801652414276, - -2.0382938075557506, - -2.048048884643973, - -2.0566550120177682, - -2.064131179379397, - -2.070546445728093, - -2.0759561304924126, - -2.0803749898600397, - -2.083902558804239, - -2.086632381051303, - -2.088596984097971, - -2.0899156604811706, - -2.090727871785231, - -2.0910991723808285, - -2.091047709630675, - -2.0906810222555814, - -2.090091664860019, - -2.0891330521441156, - -2.0878158528135655, - -2.0862217989072063, - -2.0842991309027994, - -2.0819665838375085, - -2.0792934483563776, - -2.07632908440241, - -2.07290512057794, - -2.0690889285399576, - -2.0649474701064774, - -2.0603569057023967, - -2.055303162612562, - -2.0498475945220713, - -2.0439695833971863, - -2.03753163421098, - -2.0306034541707225, - -2.0232626956447666, - -2.0153309829032997, - -2.0068559392533833, - -1.997923322790236, - -1.988490723639988, - -1.9785200953628876, - -1.9681048104041428, - -1.9573150737618628, - -1.946024044986399, - -1.934311503959237, - -1.922240000852824, - -1.9097293948726084, - -1.8967890683939295, - -1.8834856827633986, - -1.8698360863203851, - -1.8557976475168518, - -1.841447472508949, - -1.8268748533025847, - -1.8121412827513972, - -1.7974033169950747, - -1.7828201134784545, - -1.768530910504833, - -1.7546713244509116, - -1.7413834768861567, - -1.7288081560847037, - -1.4570214575098481, - -1.4464690291695912, - -1.4370569760066987, - -1.4289313437274322, - -1.42219918881354, - -1.4169232333555786, - -1.413180537344421, - -1.411083629162166, - -1.410637877757209, - -1.4118259077078852, - -1.414793942415024, - -1.4195088192774947, - -1.4259132628782556, - -1.434055657988681, - -1.4439616443244074, - -1.4555155222781329, - -1.4686296712418896, - -1.4834281407647452, - -1.4997539423823718, - -1.5174258146778636, - -1.536486471063684, - -1.5568586445426367, - -1.5783690729910527, - -1.6009332633111124, - -1.6245736988612849, - -1.6491016612239617, - -1.6743337585697908, - -1.7003722622229738, - -1.7270658891621884, - -1.7542349319200423, - -1.7818484491221391, - -1.8098801728496294, - -1.8381722896874333, - -1.866625836942759, - -1.8953594473938737, - -1.924228893971665, - -1.9531006428706574, - -1.9820407709246646, - -2.011023633425803, - -2.0399517165418635, - -2.0688069074258597, - -2.0976844463137727, - -2.1265627197113375, - -2.1553804847054696, - -2.1841814120227254, - -2.212926284281375, - -2.2415278011010153, - -2.269891791335671, - -2.2980065471396394, - -2.3258167058531334, - -2.3532348558502525, - -2.380177311295071, - -2.4066345415215964, - -2.4325724857416, - -2.457884406359166, - -2.4826214046384316, - -2.506871965642578, - -2.530579773038557, - -2.5537591276951854, - -2.5765908455992594, - -2.5991589672433673, - -2.6214117979027796, - -2.6436560589179967, - -2.6660477530337916, - -2.688544543183528, - -2.7112348386629423, - -2.734195259649791, - -2.757356104647452, - -2.780403857482912, - -2.803375600331883, - -2.8262497875609935, - -2.8487205318305655, - -2.8707332863173285, - -2.8923016694013683, - -2.913274317102667, - -2.933388565706608, - -2.9526918641758884, - -2.9711998862436717, - -2.9885709030745327, - -3.0048458086664374, - -3.020089619875348, - -3.03417363519608, - -3.047028459605667, - -3.058775466284785, - -3.069481274928843, - -3.0789802306224856, - -3.087434196495477, - -3.0949802305772813, - -3.1015558113200568, - -3.1072439108681005, - -3.1121890274142707, - -3.116426131845459, - -3.1199242891753194, - -3.122795669161705, - -3.125106591777208, - -3.126785564220496, - -3.1279051119708026, - -3.1285069204860156, - -3.12855325382455, - -3.1280199010384715, - -2.8626281460094907, - -2.862439099643487, - -2.861686663259925, - -2.860322439362779, - -2.858319348428116, - -2.8555484355486254, - -2.851920174365912, - -2.8474065939311797, - -2.841932253411605, - -2.8353153313941597, - -2.8275336270599807, - -2.8186500616172903, - -2.808443702391301, - -2.7969052045848866, - -2.784031025882687, - -2.7696571567022263, - -2.753741527777416, - -2.736458932700182, - -2.7179369761741783, - -2.6979268090641533, - -2.6767032243911477, - -2.6545875967906487, - -2.63139581697089, - -2.6073063799702183, - -2.5826570644302076, - -2.557495332757661, - -2.5315622283037293, - -2.5051232331326387, - -2.47841967664088, - -2.45090014903588, - -2.4227440255742034, - -2.3942084620002198, - -2.36507172135717, - -2.3350595142922677, - -2.304373831018965, - -2.2731072938230543, - -2.2405659264960334, - -2.206933534060576, - -2.1724179181965324, - -2.1365663120542964, - -2.099292105713794, - -2.060805268362636, - -2.02106838257064, - -1.9796793606688068, - -1.9368750749178862, - -1.8929056057023694, - -1.8472682386443928, - -1.8001375790792054, - -1.7518360776327424, - -1.7023395165252926, - -1.6516029953920466, - -1.6000074939777957, - -1.5478954921839432, - -1.4950793824325848, - -1.441984025005774, - -1.3890565542721525, - -1.3364128654077492, - -1.2843635615940163, - -1.2333950841496888, - -1.1839385565625304, - -1.1362335265916024, - -1.090743783539428, - -1.0479668636752648, - -1.0081819164324581, - -0.9718672335760434, - -0.9395159817112602, - -0.9115634084152784, - -0.888414445420562, - -0.8704670865406887, - -0.8580712772790975, - -0.8515998910661153, - -0.851284772181025, - -0.8573025619557268, - -0.8698453278459668, - -0.8889945456181212, - -0.9146129763866, - -0.9465513503722058, - -0.9847620449432006, - -1.0287639368149972, - -1.078098053063653, - -1.1327414858538454, - -1.1923118206815595, - -1.2562780984806274, - -1.324362433540982, - -1.3962764679021806, - -1.4714423093122477, - -1.5492966523756302 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -14194,1987 +1341,15 @@ }, "name": "Pitch est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -0.5605372001994456, - -0.5348660263791879, - -0.5071578138932695, - -0.47750596940393425, - -0.4460259325645194, - -0.41221536755950283, - -0.3761759540924049, - -0.3380960638846819, - -0.2978170985754414, - -0.2552260150627657, - -0.21058492868879028, - -0.1640993192342364, - -0.11545223513144523, - -0.06496235374008903, - -0.01296190121119433, - 0.040603391009003946, - 0.0955326547004471, - 0.15145232335140846, - 0.20815652136109644, - 0.26559958144011986, - 0.3233896862659266, - 0.38114016704063725, - 0.43884956919719426, - 0.49616160621930405, - 0.5526743809237422, - 0.6081686205468555, - 0.6624228431309109, - 0.7150701270214094, - 0.7657723045671759, - 0.8144166327070577, - 0.8606784006598239, - 0.9042597110464234, - 0.9450255609779958, - 0.9827899663834054, - 1.0173228311909428, - 1.048485030732549, - 1.0762378954271774, - 1.1004249320576864, - 1.1209373778655052, - 1.1378654148523613, - 1.151226540180539, - 1.1610381633733178, - 1.1673985535166451, - 1.1704644695063748, - 1.170438875944161, - 1.1675831080670342, - 1.162334615919402, - 1.1549692009792603, - 1.1457672118912683, - 1.1351251223393957, - 1.1233716745529836, - 1.1107594573122, - 1.0975832514555748, - 1.0842126517221706, - 1.070830955544595, - 1.0576086726287608, - 1.0449227545786377, - 1.0329284688947928, - 1.0217429419482247, - 1.0116881003050275, - 1.003057834159887, - 0.9959258024327117, - 0.9903683169823214, - 0.9868570019008566, - 0.9854170231383956, - 0.9860574214570926, - 0.9892578349578984, - 0.995151689022415, - 1.0036285600624522, - 1.014813683145938, - 1.0291050601108769, - 1.0462705547205031, - 1.066064921444607, - 1.0889608353676272, - 1.1147003630907086, - 1.1429605669896792, - 1.1737665067729828, - 1.207056448028396, - 1.2424808517670507, - 1.2797491447134999, - 1.3189029986338423, - 1.3595833991764703, - 1.401435854761205, - 1.4443218387658994, - 1.4879688858910656, - 1.5320202679202684, - 1.576197481104068, - 1.6202577965236784, - 1.6639044296261079, - 1.7068515845181584, - 1.748838706110976, - 1.7896095537321506, - 1.8288880542639099, - 1.8664012798413843, - 1.9018982470198034, - 1.9351467472501245, - 1.965999492295398, - 1.994140394478767, - 2.0194955271779156, - 2.0418696822413795, - 2.0610417097089213, - 1.8285944162666836, - 1.8407904759856297, - 1.8493556098979405, - 1.854060942969831, - 1.8548847659160321, - 1.8517299017948123, - 1.844331944977246, - 1.8326336876188232, - 1.816675429203694, - 1.7962994869743278, - 1.771411366206764, - 1.7421222669875858, - 1.708550052857886, - 1.6705406643206853, - 1.628275175399041, - 1.5820546705681349, - 1.5319017598238431, - 1.478011860614156, - 1.420758599688354, - 1.3604096550639126, - 1.2970068348016843, - 1.2309822524643073, - 1.1627810498018079, - 1.0923342409219916, - 1.0200880366326401, - 0.9465617094982678, - 0.8719337396195109, - 0.7963865214717417, - 0.7204555663775244, - 0.6445997900862455, - 0.5686535683348372, - 0.4931299914201603, - 0.4185400512108123, - 0.3448388782833701, - 0.2722533995833405, - 0.20124307382214154, - 0.1320314485187797, - 0.06450006511892951, - -0.0009534258735524465, - -0.06394904158289538, - -0.12476085155561348, - -0.18314240340769627, - -0.23877853589784068, - -0.291722913216895, - -0.34204623013695795, - -0.38949041473623675, - -0.4339059592952923, - -0.4757320736829567, - -0.5147776687501673, - -0.5508710704995847, - -0.5843937697327849, - -0.615431570277216, - -0.6438638399831212, - -0.6698142531038637, - -0.6937099593360079, - -0.715477774504756, - -0.735055351689965, - -0.7530254249628934, - -0.7694261890393216, - -0.7842475472033981, - -0.7978028396354956, - -0.8103520581231184, - -0.8218508166793421, - -0.8323170085065755, - -0.8421710512436005, - -0.851361696994021, - -0.8598467873942855, - -0.8678913355827371, - -0.8755511062592869, - -0.8827582766298014, - -0.8895534404993138, - -0.8960602294054527, - -0.902164995869981, - -0.9078085836533155, - -0.9131775921521564, - -0.9182746094658473, - -0.923114409679893, - -0.9277862226360765, - -0.93249176544143, - -0.9372790802920561, - -0.942146545604683, - -0.947175088836781, - -0.9523608770550374, - -0.9576617155431928, - -0.9629792049224435, - -0.9682573505683381, - -0.9734366703399436, - -0.978393342940641, - -0.982957669794648, - -0.9870685492068892, - -0.990659243498244, - -0.9934575197729759, - -0.9953866393031545, - -0.9963949399729045, - -0.9962914200400285, - -0.9948960849767648, - -0.9921792114269613, - -0.98808299072161, - -0.9822855404673617, - -0.9747889000901059, - -0.4574967811295557, - -0.4463986292862851, - -0.4333726927478353, - -0.4184711212093837, - -0.4016390583202926, - -0.38268512495560725, - -0.3617117920796835, - -0.33885419225193364, - -0.31390436774578345, - -0.28701157339686306, - -0.2583750776897086, - -0.22800003536290842, - -0.19590779816702442, - -0.1623289413895142, - -0.12745957563560523, - -0.09117027784351675, - -0.053748192050440305, - -0.015483445657293694, - 0.0235850362246159, - 0.06321577062363205, - 0.14281135452357846, - 0.1825062399776592, - 0.22182686602137894, - 0.2605179402748113, - 0.2986063024531407, - 0.3358729794594512, - 0.37210070298418324, - 0.4072239524760778, - 0.4411877085337304, - 0.47382816522065485, - 0.5050081844199329, - 0.5348487961372353, - 0.5632236239310897, - 0.5900506367170926, - 0.6154151826473349, - 0.6393401241610805, - 0.6617640993941438, - 0.6826816105346748, - 0.7022035235674707, - 0.7202668460345831, - 0.7367949543078445, - 0.7519524116959535, - 0.7657045806692605, - 0.7780015937966428, - 0.7889236278051217, - 0.798544295876246, - 0.8068344540266388, - 0.8138517290036406, - 0.8198272100216517, - 0.8248082554844027, - 0.8288320739472221, - 0.8320477680481143, - 0.8345518613889501, - 0.8364264104232437, - 0.8377407629939352, - 0.8386003868122435, - 0.8390435487295904, - 0.8390952141278235, - 0.8388595047940078, - 0.8383759261162209, - 0.8376938373521189, - 0.836868066479241, - 0.8359467703471763, - 0.8349473440421421, - 0.833889905184758, - 0.8328424117145959, - 0.8318077503123851, - 0.8307880948465134, - 0.8298223857055291, - 0.8289487448261206, - 0.8281959376640285, - 0.8275785798185387, - 0.8270924598762053, - 0.8267806631386829, - 0.8266685786197854, - 0.8267511530300259, - 0.8270278681196627, - 0.8274942902575023, - 0.8281238278477705, - 0.8289086293275256, - 0.8298596150860451, - 0.8309625452518122, - 0.8322498903822125, - 0.833742551436599, - 0.8354565310896359, - 0.8374207050464268, - 0.8396740537897938, - 0.8422506099925564, - 0.8451863961039489, - 0.8485299833696012, - 0.8523269965634206, - 0.85662899594872, - 0.8614650448658535, - 0.8668598645438759, - 0.87283190682529, - 0.8793906209472986, - 0.8865652821160581, - 0.8943542133966276, - 0.9027523551400712, - 0.9117325854360027, - 0.8423598886337639, - 0.8524828698725632, - 0.8631266362316908, - 0.8742575060963417, - 0.8858572251060574, - 0.8978610142131837, - 0.9101684462386814, - 0.9227506673299228, - 0.9355632865127586, - 0.9484150712269206, - 0.9612487974697919, - 0.9740055378633233, - 0.9865018146112501, - 0.9985629690953995, - 1.010116254221978, - 1.0210577198047386, - 1.0310179178243624, - 1.0399530112843876, - 1.0478261588799338, - 1.0543001885978802, - 1.0592474588491536, - 1.0626756113599456, - 1.06447869835878, - 1.0643732774740888, - 1.062439406857845, - 1.0587604486500737, - 1.0529157151367552, - 1.0449712017287958, - 1.0350659897390548, - 1.0230006575897175, - 1.0086294704223404, - 0.9921534567809842, - 0.9736830348690286, - 0.9526986536964772, - 0.9294349101408554, - 0.9041319382499708, - 0.8764283388549632, - 0.8463382229769164, - 0.8141584541035803, - 0.7799057437384606, - 0.7432547081556649, - 0.7045422459198201, - 0.664110627535531, - 0.621467159085322, - 0.5768756097339984, - 0.5307319178593828, - 0.482982895695309, - 0.43351815123182236, - 0.3827812860572782, - 0.33117224492759023, - 0.27828798558930967, - 0.2245998199012644, - 0.17059754519264145, - 0.1161656371512713, - 0.06157586908695509, - 0.007359121586645642, - -0.04623987941556255, - -0.09931460637713035, - -0.15140375594264335, - -0.20206482831373063, - -0.2515892871965498, - -0.2996302505142984, - -0.3457902946327383, - -0.39008657850715334, - -0.4325240938839969, - -0.4727794760068578, - -0.5106314135164669, - -0.5464840422963579, - -0.5801016776934586, - -0.6113046899642339, - -0.6404281012520393, - -0.6675105599101376, - -0.6923784016034275, - -0.7150589396145216, - -0.7357538741564889, - -0.7542185175340883, - -0.7702835555719167, - -0.784314754155576, - -0.7961985360675375, - -0.8058297047557925, - -0.8134126775369745, - -0.8191240585009455, - -0.8229126330072123, - -0.8248263645844159, - -0.8252470898593529, - -0.8241286543244294, - -0.8214810535737999, - -0.8176027847204536, - -0.8125802965515283, - -0.8064127411619408, - -0.7800220752086418, - -0.770442506855049, - -0.7603324056528115, - -0.7497243198825427, - -0.7386412596165148, - -0.727215399869554, - -0.7155560117084373, - -0.7036852426816355, - -0.6916565469103998, - -0.6795931568243848, - -0.6755064964618774, - -0.6634048683251675, - -0.6513853304122645, - -0.6394629258930556, - -0.6276211549896681, - -0.615892618131603, - -0.6043457832978193, - -0.5929544174792907, - -0.5816965510306592, - -0.5706658356441194, - -0.5598431798784437, - -0.5492025884210194, - -0.538791102453346, - -0.5286448677696576, - -0.5187384057942486, - -0.5090615108762236, - -0.4996796975479366, - -0.490531515344486, - -0.48155873686697354, - -0.47275866082695983, - -0.46407497244265555, - -0.4554294575367057, - -0.4467754980467908, - -0.4380839577918856, - -0.42926465000404834, - -0.4202411553744934, - -0.4109452955955565, - -0.401315364003726, - -0.3913141485009383, - -0.38089822215188873, - -0.3700167339835188, - -0.35865235522749855, - -0.3467955641689754, - -0.33440904914597175, - -0.3215054741885806, - -0.30810695439891805, - -0.29418237833179295, - -0.27971923201294363, - -0.2647307867384428, - -0.2492042998550331, - -0.23307946991285022, - -0.21637032955845603, - -0.19909713626347134, - -0.18116630111316973, - -0.1625888571310949, - -0.14339558523323506, - -0.12354280513097764, - -0.10299625128029014, - -0.08181254815974986, - -0.06003710699015016, - -0.03756235816835912, - -0.014461790129332432, - 0.009179476495353157, - 0.03341911819412581, - 0.05820922376576615, - 0.08342343671949536, - 0.10899208451522181, - 0.13495143831677794, - 0.16116029289674363, - 0.18747394917904456, - 0.2140166764890837, - 0.24066586134179313, - 0.26726148227953583, - 0.29378349638996737, - 0.32020120610975844, - 0.3463388013019717, - 0.37205209529894584, - 0.39742317293798274, - 0.42229123679292674, - 0.4465137898963861, - 0.4701297243235103, - 0.4930883416333714, - 0.5152619596943813, - 0.5365923213976829, - 0.5571232826652065, - 0.5767832179903841, - 0.5954985938019303, - 0.6133223719631045, - 0.6302117752664131, - 0.646108556714064, - 0.6610814075194053, - 0.675141366811719, - 0.6881303763038337, - 0.7000597953259242, - 0.7113446025244099, - 0.7222932525265521, - 0.7331238884547719, - 0.7442867191842526, - 0.7560709600555875, - 0.7685806861419049, - 0.7823964991855182, - 0.798753435276279, - 0.817649306140886, - 0.839018053846589, - 0.8642606337322678, - 0.893559795123445, - 0.9268523024382925, - 0.9644366911330878, - 1.0067909371362167, - 1.0539197142334027, - 1.054272176525403, - 1.1113859434482078, - 1.1737983533223617, - 1.241341670155467, - 1.3142671203714567, - 1.3926889803657838, - 1.4763520176913731, - 1.5650200475539688, - 1.658945320487232, - 1.7576413409351161, - 1.8602846664463215, - 2.1999418764700014, - 2.4348100418906093, - 2.7850071492934396, - 2.8999142348668667, - 3.011727510647326, - 3.1204284498968535, - 3.2253618586354786, - 3.3254489498301956, - 3.4201217766048577, - 3.5093170530414457, - 3.5921948780247392, - 3.6681476305802008, - 3.7372485746615896, - 3.7990646439595985, - 3.8531209671661113, - 3.899271096588495, - 3.9374745119398447, - 3.967490347691665, - 3.9891648620519935, - 4.002736092843663, - 4.008117521562723, - 4.005150574109003, - 3.9939226590262704, - 3.9745232112473707, - 3.9469399338307882, - 3.911255911417151, - 3.867699778234017, - 3.8165275275487205, - 3.758065359020791, - 3.692515105827315, - 3.620313383625603, - 3.5419429226011347, - 3.45770694474296, - 3.3679130081851625, - 3.273173023786959, - 3.173927584641582, - 3.070233050564934, - 2.9626941770309783, - 2.8519681425528796, - 2.7381680526560768, - 2.621754551241561, - 2.503466219889579, - 2.383739550387404, - 2.262625174311685, - 2.1408723733553874, - 2.019219747241569, - 1.8973992510361086, - 1.776050029543781, - 1.6559100570036058, - 1.5371300074153578, - 1.4198331119759187, - 1.3047196692595837, - 1.192331106075101, - 1.0821676829480924, - 0.9748732721581016, - 0.8710647877828396, - 0.7704053277267517, - 0.6730743403375588, - 0.5796069888380948, - 0.4900733816998818, - 0.40395996704636694, - 0.3217059942139596, - 0.24369251260956595, - 0.1689158871742091, - 0.09757006670568896, - 0.02997678419223093, - -0.034421289648193285, - -0.09615980935950365, - -0.15500839190365923, - -0.21094674475868988, - -0.2652979870432618, - -0.31783866160054763, - -0.3683706919587273, - -0.417944750205319, - -0.4668153611841882, - -0.5147298942509506, - -0.5619725682325016, - -0.6094681302887175, - -0.6569544102321121, - -0.7041853066799334, - -0.7523122873419528, - -0.8011948060283505, - -0.8505484297902568, - -0.900781896778871, - -0.9521249562830041, - -1.004104316051285, - -1.0565446244335839, - -1.1103180785125282, - -1.1650633856594224, - -1.2291123434427027, - -1.2854108533801838, - -1.3425715150407087, - -1.4001307698223333, - -1.4578926080519419, - -1.516019254663217, - -1.5740055712371823, - -1.6313855974921712, - -1.6884350985706913, - -1.7448039600102663, - -1.8000507957244687, - -1.8540682267990647, - -1.906707254496804, - -1.9576229073988904, - -2.006516393512594, - -2.0534167099951453, - -2.0979883618700828, - -2.1399329703440926, - -2.17912226739783, - -2.215341862932194, - -2.248351379681851, - -2.2779571113924435, - -2.3039684602729205, - -2.3262389399871517, - -2.3446550062222444, - -2.3589430145681622, - -2.3689786448979224, - -2.3747073519165536, - -2.3759604612373186, - -2.3725875140044157, - -2.3646563797610964, - -2.352284320648619, - -2.335123864173917, - -2.313402750759071, - -2.2874180421599593, - -2.256968595015649, - -2.2222026254755036, - -2.1835209530679722, - -2.1410835225318667, - -2.0947412332942568, - -2.0449300145038047, - -1.9921093456058676, - -1.9359006851904421, - -1.876705865703583, - -1.8150513423779953, - -1.7509434389074385, - -1.6843930481043299, - -1.46844540395307, - -1.395018692703345, - -1.3207179445359265, - -1.2452661582838553, - -1.168874191793912, - -1.0920787467585762, - -1.0150330264709926, - -0.9374344920883895, - -0.8598213779695302, - -0.782733630951337, - -0.7055395205818443, - -0.6285818098643082, - -0.5523550923958378, - -0.47679575773461835, - -0.40178555193879756, - -0.32778390754157016, - -0.25515249479638646, - -0.18335026660592732, - -0.11280919314206796, - -0.04396695648191694, - 0.023488815796368807, - 0.08947130094351004, - 0.1536063697207033, - 0.21580595956561566, - 0.2763629458676185, - 0.33496547735376453, - 0.39130496469724807, - 0.4458222833782828, - 0.4983131248336539, - 0.5485102603700232, - 0.5965413896299541, - 0.6425496441879887, - 0.6863219907494896, - 0.7277249818326804, - 0.7671171264956769, - 0.8043372566194188, - 0.8392435013266728, - 0.8720293484611769, - 0.9026962918669086, - 0.9311186346959689, - 0.9573035968257452, - 0.9814150386230208, - 1.0033669142244594, - 1.023094446097262, - 1.0408081272349399, - 1.05649508773146, - 1.070129270117942, - 1.0817863682663016, - 1.0915500979246595, - 1.0994308202653484, - 1.1054655537273708, - 1.1097887202430554, - 1.112420835001329, - 1.0755772937574966, - 1.0749430563030973, - 1.0727486605760266, - 1.069052972060818, - 1.0639044412008911, - 1.0573162963738651, - 1.049376552405102, - 1.040183653776329, - 1.0297021293716635, - 1.0180212686464476, - 1.005233921472385, - 0.9913399530855271, - 0.9763507888773727, - 0.9603858027798561, - 0.9435516875278669, - 0.925790734943716, - 0.9072489479836889, - 0.8880758018849175, - 0.8682634185300615, - 0.8478975916906002, - 0.8271296693068013, - 0.8060475962444836, - 0.784661978286426, - 0.763144148377745, - 0.7416692375553088, - 0.720222807370584, - 0.6989550280334462, - 0.6780152712828188, - 0.6574570808682203, - 0.6373156943462406, - 0.6177190623808043, - 0.598785106257, - 0.5804752620247, - 0.5628988890490833, - 0.546157290861369, - 0.5302461187610212, - 0.5152349916822595, - 0.5012185648936277, - 0.48822447826473475, - 0.47622330700475024, - 0.4652756691748087, - 0.45542438555881004, - 0.4466202902738925, - 0.43886377135149984, - 0.4321644598029772, - 0.4264914913262554, - 0.42182648603036693, - 0.418146289091877, - 0.41540955423611947, - 0.4135550247272314, - 0.41254668502144637, - 0.41231847931705823, - 0.4127822063719541, - 0.4138630685415199, - 0.4154547957219935, - 0.41746018732883255, - 0.41984164627297205, - 0.4225325186347271, - 0.425445896810675, - 0.42865817083710056, - 0.4322132077791359, - 0.4360393793854278, - 0.4401239775248425, - 0.44453393097237187, - 0.449238106032403, - 0.4541901175954227, - 0.45944325170798783, - 0.4649795108140117, - 0.4707715743125452, - 0.4768495437734586, - 0.4832221178942796, - 0.48987404645951327, - 0.4968080127762619, - 0.5040783635225093, - 0.5116702649537099, - 0.5195589100931716, - 0.5278235122239259, - 0.5364744343782643, - 0.5454910191539378, - 0.5548923050187917, - 0.5647128376726702, - 0.5749357847906446, - 0.5855391072227204, - 0.5965912564717591, - 0.6080877857080218, - 0.6200302535452477, - 0.6324691954796684, - 0.6454296097026171, - 0.6589045972322393, - 0.6728957166738512, - 0.6874344662928149, - 0.7024946090381069, - 0.7180244466796957, - 0.7339420927164462, - 0.7501249262406865, - 0.7664400760644756, - 0.7827553420309644, - 0.7989530562905367, - 0.8149132077649868, - 0.8305059683681484, - 0.822568215331305, - 0.8370585211316787, - 0.8508378244845934, - 0.8637900981344461, - 0.875824191354912, - 0.8868663427638568, - 0.8968437961184549, - 0.9056876140753496, - 0.9133713523275221, - 0.9198817799470788, - 0.9251518917449657, - 0.9291911895674461, - 0.932011393693184, - 0.933585392942452, - 0.9339103279411337, - 0.9330576749310224, - 0.9310686926440889, - 0.927894949687364, - 0.9236269441393884, - 0.9183820494605933, - 0.9121585379537319, - 0.9050020524471657, - 0.897002197050638, - 0.8881982252038135, - 0.8785942102728954, - 0.8682932554061611, - 0.8573828313543078, - 0.8457429343446834, - 0.8334425909637845, - 0.8205834498466548, - 0.8071375203710217, - 0.7930576460460057, - 0.7784256848332439, - 0.7632776913767572, - 0.747396073364375, - 0.7309041780756266, - 0.7139152220285008, - 0.6962416398948444, - 0.6778747714994299, - 0.6589236175118875, - 0.6393538836295295, - 0.6189903266937968, - 0.5979509097291187, - 0.5763887210392945, - 0.5540534253734689, - 0.5311345517352399, - 0.5078381344094605, - 0.4841418260102008, - 0.46006766153282097, - 0.4358404139760047, - 0.41161422394154434, - 0.3871876048812807, - 0.36276032725636903, - 0.33850879083054697, - 0.3142524146447926, - 0.28999128943755476, - 0.2658215300777028, - 0.24170674465846786, - 0.21738181397798853, - 0.19290774177994022, - 0.16836547765473647, - 0.14338052072116964, - 0.11789969405976541, - 0.091983939947884, - 0.06549709140653497, - 0.03827089124476048, - 0.010432738406112285, - -0.017875986234412767, - -0.046805498270856734, - -0.07616597439026894, - -0.10575056964604139, - -0.13556692575186408, - -0.16550693410144604, - -0.19535389146697435, - -0.2249609669470098, - -0.25428220923070594, - -0.2831168085768651, - -0.31127158633197166, - -0.3387351359612749, - -0.36533549529611736, - -0.39089569548210984, - -0.4153316648561128, - -0.438560595895039, - -0.4604421258612883, - -0.4808614022538535, - -0.499781099409196, - -0.5170891548353292, - -0.532695302089631, - -0.5465367144190854, - -0.5585418948115731, - -0.5686567823877451, - -0.5768192963484994, - -0.5829552153626284, - -0.5870482728693442, - -0.5891011511252077, - -0.5890390487459608, - -0.5869011008993661, - -0.5827461613836404, - -0.5765687531886396, - -0.5683788469610693, - -0.5634388456235748, - -0.551571508436291, - -0.5378392648991821, - -0.5223619414589877, - -0.5052938473980739, - -0.48660123941368166, - -0.46635204623402576, - -0.4447203169224375, - -0.42179540132668886, - -0.39752041419009704, - -0.37208535580497437, - -0.3457331736171514, - -0.3183278229496931, - -0.2900156372653193, - -0.26096482769989193, - -0.23112969656333998, - -0.2005393444839884, - -0.16941183469282323, - -0.1379237658757701, - -0.10591162887087172, - -0.0736066108929794, - -0.04124379092154341, - -0.008685795087239939, - 0.02396353552203335, - 0.05648581598114973, - 0.08884918727669676, - 0.12124315671517226, - 0.1535353607696333, - 0.1855765187672594, - 0.217702368055798, - 0.24982214654074902, - 0.2818081769522158, - 0.31379594968933744, - 0.3459785702826312, - 0.3783005873365059, - 0.4107145593247455, - 0.4436715115855418, - 0.4771481060497455, - 0.5110857347430738, - 0.5457694355374435, - 0.5813272896208458, - 0.6176907398116874, - 0.6548730310257715, - 0.6930687888568646, - 0.73215832245999, - 0.7720213015114537, - 0.8128521626424824, - 0.8545659267614943, - 0.8969878240321228, - 0.9400513256939557, - 0.9837325247655304, - 1.027812032536283, - 1.0720621422831142, - 1.116442859006343, - 1.1607079964964875, - 1.2045796707875625, - 1.2477899141392417, - 1.290077788152589, - 1.3311664680122894, - 1.3707229828312288, - 1.408444669513541, - 1.444103512390125, - 1.4774389826920324, - 1.5080970271801746, - 1.5358151989165432, - 1.5603435368411314, - 1.5813547643325994, - 1.5985626127961072, - 1.611781614163154, - 1.620793404725674, - 1.6252191151579085, - 1.6249138717515876, - 1.6197178391958997, - 1.6093782396136003, - 1.593754755311524, - 1.5728690577481372, - 1.5467131701844115, - 1.5152045450285687, - 1.4785975047000037, - 1.4371102991742937, - 1.3906822274316082, - 1.339522758253447, - 1.283958338329472, - 1.2241758209871318, - 1.160411769480725, - 1.093105426255338, - 1.0227096575141899 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -16185,1988 +1360,15 @@ }, "name": "Pitch true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -0.5839602495384283, - -0.5605372001994456, - -0.5356597468507789, - -0.508864245379613, - -0.4800812906715581, - -0.44941635569481836, - -0.4166758769408991, - -0.3816274760523903, - -0.34445252570148027, - -0.3052388673676226, - -0.2636694246259942, - -0.21993181792308664, - -0.17428681569722104, - -0.1265902454358473, - -0.0769058061972788, - -0.0255605372897259, - 0.027267341861333217, - 0.08161047029057847, - 0.13711194197915325, - 0.19343789356700805, - 0.25057787669667503, - 0.3082407135217685, - 0.36603790323293806, - 0.42377548457023895, - 0.48129692000799157, - 0.5381992934609733, - 0.5941378178488872, - 0.6489795910664086, - 0.7023754235200563, - 0.7539662482551246, - 0.8035623884142931, - 0.8509192456636289, - 0.8957276693142933, - 0.9377592873631239, - 0.9768906905219246, - 1.0128935619812132, - 1.045564909161891, - 1.0748642478183035, - 1.1006652625479214, - 1.1228355681079318, - 1.1413686410357928, - 1.1563332624164637, - 1.1677369606684205, - 1.1756327975621026, - 1.180167752276474, - 1.1815153084620975, - 1.1799026404947588, - 1.1757069659825425, - 1.1692669498567245, - 1.160870828153615, - 1.150833640722904, - 1.1395593774252832, - 1.1273163182443513, - 1.1143541066649725, - 1.1010552546710444, - 1.087665260834726, - 1.0743578712813167, - 1.0614087697724217, - 1.0490942124166478, - 1.0375376942982408, - 1.0269134993189848, - 1.0176377765834086, - 1.009826924545629, - 1.0035418271652272, - 0.9991092071324906, - 0.9967365839681975, - 0.9964422556215126, - 0.9984207859386688, - 1.003112717551254, - 1.0104370792003916, - 1.0203323835448568, - 1.03324263797157, - 1.0491380803712869, - 1.0677685029049144, - 1.0892582034801088, - 1.1137493808075496, - 1.1409007743016368, - 1.170509330687606, - 1.2027127844646237, - 1.237205509205315, - 1.2736523664655037, - 1.3119887523607672, - 1.3520121185175402, - 1.393366732025769, - 1.4357868840635388, - 1.4791217103600778, - 1.5230204417093915, - 1.5671536744719785, - 1.6112922865410506, - 1.6551501141617513, - 1.698435439731411, - 1.740874614004869, - 1.782214979766231, - 1.8221872120987306, - 1.8605194530481564, - 1.8969416817045734, - 1.9312204136322426, - 1.9631660068203813, - 1.9925296838314248, - 2.0191492041746413, - 2.0428795845784626, - 2.063513402652103, - 2.080828591131358, - 2.094693719940004, - 2.1050260961569522, - 2.1115798142195326, - 2.1142727399540964, - 2.113041390991369, - 2.1076997410589096, - 2.0980694787480054, - 2.0841662552450297, - 2.06596253423812, - 2.0432451061577974, - 2.016080394944417, - 1.9845977734689666, - 1.948732778697037, - 1.908524282201526, - 1.864224059749403, - 1.816032615086681, - 1.7639656816570621, - 1.7083607355104298, - 1.649599284378077, - 1.5877034814058708, - 1.522991914955208, - 1.4558963141579477, - 1.3866128709830166, - 1.3152963402939064, - 1.2424617664979962, - 1.1685293535004329, - 1.0935035502220818, - 1.0178480155452114, - 0.942091462586551, - 0.8662816123381415, - 0.7906581264648905, - 0.7157343678152853, - 0.6417978849856457, - 0.5687907741447091, - 0.49714709749558694, - 0.4272781760444603, - 0.35906122031114707, - 0.29273877270010285, - 0.22869997090371721, - 0.16699914806127536, - 0.107583640346321, - 0.05076762779680268, - -0.003247883035214692, - -0.0547002935267988, - -0.10339070272758809, - -0.1490875583090712, - -0.1920350968274625, - -0.23228886615934138, - -0.2696705053233933, - -0.30423233731259075, - -0.3363539618636252, - -0.365926708444387, - -0.3928873560125165, - -0.4176819754400533, - -0.44038410955774665, - -0.4609272390274351, - -0.479572469720091, - -0.4966650376207905, - -0.5121854511420186, - -0.526224024059932, - -0.5392262879220111, - -0.551200943574688, - -0.5621141704212994, - -0.5722577118311465, - -0.5817606890140432, - -0.5905832026904657, - -0.5987991397500042, - -0.6066580308604034, - -0.6140945587747975, - -0.6210658993345732, - -0.6277367445635297, - -0.6340490958754389, - -0.6399232243335239, - -0.6454254632411984, - -0.6506582946441978, - -0.6556216621374199, - -0.6603440280484103, - -0.6650210812710485, - -0.6697593700834898, - -0.6745717575319885, - -0.6795025118840644, - -0.684592696515216, - -0.6898159178913231, - -0.6950989577456653, - -0.7003585976955029, - -0.7055442220484545, - -0.7105748664855844, - -0.7152673028392638, - -0.7195300635168057, - -0.7232985648878779, - -0.7264019746977414, - -0.7286554030386265, - -0.7300063505006213, - -0.7303621188736161, - -0.7294654156736597, - -0.7272551723977582, - -0.7237016846387914, - -0.7185698784527466, - -0.7117321422146359, - -0.7031961196586507, - -0.6928956164897209, - -0.6806526544870569, - -0.6665078585116297, - -0.6504932549964119, - -0.6323985842334989, - -0.6122313483453858, - -0.5901146293040401, - -0.5660115098462573, - -0.5398743280032539, - -0.5119000028740437, - -0.48223029432017284, - -0.4507787207514703, - -0.41773196052645295, - -0.38332141086988164, - -0.34752150365015966, - -0.31045320060913084, - -0.27240652159564516, - -0.23357014644203192, - -0.19401446952912194, - -0.11416134385153585, - -0.0742344128015809, - -0.034553542793522275, - 0.004616528035666964, - 0.043166632277050074, - 0.08100643346355815, - 0.11790955686647356, - 0.1537048708612295, - 0.18840180892172884, - 0.22185235021251523, - 0.253892705488173, - 0.2845500223303714, - 0.3138003753066142, - 0.34153961082606316, - 0.367747837717648, - 0.3925360612669047, - 0.4158467680171648, - 0.43763350788996674, - 0.4579937131405804, - 0.47692835987500626, - 0.4943613402871369, - 0.5103370021111047, - 0.524933959628438, - 0.5380962887281188, - 0.549818373088768, - 0.5602329591609617, - 0.5693256618088076, - 0.5771061777239499, - 0.5837442568835476, - 0.5893676793045765, - 0.5940149501766228, - 0.5977679675482089, - 0.6007780242760444, - 0.6031198472518539, - 0.6048595381283788, - 0.6061038856160386, - 0.6069128211992197, - 0.6073176486575095, - 0.6073806283056378, - 0.6071782202465087, - 0.6067516622550735, - 0.6061480126984621, - 0.6054296679063209, - 0.6046215465975356, - 0.6037395461782421, - 0.602834298068547, - 0.6019366191384287, - 0.6010456696184797, - 0.6001812301155193, - 0.599388275458477, - 0.5986977459276707, - 0.5981341388259532, - 0.5976948999861649, - 0.5974040517653354, - 0.5972967359396361, - 0.597381656811265, - 0.597657522568964, - 0.5981186556469155, - 0.5987553149690861, - 0.5995356185130658, - 0.6004771926922541, - 0.6015702825288776, - 0.6028235962936173, - 0.6042700288941967, - 0.6059251385517083, - 0.607808634234101, - 0.6099600417819404, - 0.6124124926807759, - 0.6152026907072641, - 0.6183731876461928, - 0.6219702299536295, - 0.6260461708364881, - 0.6306375876230529, - 0.6357719748251, - 0.6414707898210005, - 0.6477469644000865, - 0.654621531207701, - 0.6621059332476379, - 0.670198566185401, - 0.6788783101906317, - 0.6881357723226028, - 0.6979738897853758, - 0.7083671097494351, - 0.7192531162158459, - 0.7306157957024908, - 0.742422121234409, - 0.7545627889279959, - 0.766990715994201, - 0.7796678319342302, - 0.7924755474183649, - 0.8052825648218642, - 0.8180393927441781, - 0.8306452641772447, - 0.8428623551686463, - 0.8546050780535727, - 0.8657931011485513, - 0.8761482344374426, - 0.8854956321341755, - 0.8937951241570787, - 0.9008900880135832, - 0.9064663405650173, - 0.9105163861733634, - 0.9130359461784414, - 0.9137203753944222, - 0.9125384310318544, - 0.9095733148168447, - 0.9046521558228616, - 0.8975746516947224, - 0.8884745240887155, - 0.8773844580185833, - 0.8639655755163036, - 0.848350676530031, - 0.8307295851511526, - 0.8107871861768401, - 0.7884567874753416, - 0.7639767651274701, - 0.7373484230234918, - 0.7082298100521672, - 0.6768848488222892, - 0.6435551661810589, - 0.60787092245145, - 0.5699716746078405, - 0.530194127287959, - 0.4884704707052586, - 0.4446313042388849, - 0.3990603101086349, - 0.3520272894267707, - 0.3032092381815292, - 0.252910284658221, - 0.20160108578267122, - 0.14916223495933947, - 0.09570328531196241, - 0.04170732305176982, - -0.012570016182285794, - -0.06722559949168537, - -0.12174127481013987, - -0.17565842556397857, - -0.22909601457188758, - -0.2817547949699575, - -0.3331829897964976, - -0.38330907454210306, - -0.43214164454937287, - -0.4792696807342635, - -0.5244300884726348, - -0.5678248290574543, - -0.6091789658908553, - -0.6481920005884879, - -0.6850562930249163, - -0.7197840540707033, - -0.75217162134555, - -0.7822552991039926, - -0.8103535396263346, - -0.8363131636220928, - -0.8600044325203727, - -0.8816922470610951, - -0.9012489772494642, - -0.9184740407366644, - -0.9334793229209413, - -0.946405341087176, - -0.9571189135574732, - -0.965625038649789, - -0.972242450820172, - -0.9769548476562059, - -0.9797431044173869, - -0.9808947511213142, - -0.9805215394802543, - -0.978609369714752, - -0.9752925972183135, - -0.970832524173358, - -0.9652227592183084, - -0.942514370079806, - -0.933325552015037, - -0.9234782293870734, - -0.913126389872216, - -0.9022857340572514, - -0.891017344385558, - -0.8794889467454516, - -0.8677359223059584, - -0.8557929230543073, - -0.8437679570409446, - -0.8317065800119681, - -0.8196233495604517, - -0.8075727186184726, - -0.7956236083007592, - -0.7837614362304105, - -0.7719825931361978, - -0.7603695913178168, - -0.7489229680150675, - -0.7376186840268518, - -0.7264941168006833, - -0.7155913715434227, - -0.7048814069988332, - -0.6943618261644734, - -0.6841090819435248, - -0.6741064213627006, - -0.6643328141158016, - -0.6548328861472744, - -0.6455942448372057, - -0.6365571372422344, - -0.627686512942703, - -0.6189664538119418, - -0.6103186387699817, - -0.601673640700248, - -0.5930147840975434, - -0.5842664497493884, - -0.5753468112290033, - -0.5661856274034544, - -0.5567140569421917, - -0.5468865916616968, - -0.5366674411922024, - -0.5260008228895257, - -0.5148570127489437, - -0.5032256342923808, - -0.49107911968733337, - -0.47840832190187293, - -0.46523161787817385, - -0.4515524023529075, - -0.4373310617321884, - -0.4225775481939024, - -0.40730135512634486, - -0.39144364488754185, - -0.3749942905591138, - -0.35797072091002863, - -0.34033737505531286, - -0.3220457568182151, - -0.303123598136683, - -0.28358111369184935, - -0.2633387694548351, - -0.24243277148800796, - -0.22092240251219736, - -0.19875215515006103, - -0.1759220339076179, - -0.15251152485558303, - -0.12855084356415988, - -0.10399383628352314, - -0.07895478858801529, - -0.05355563071664053, - -0.02775686008059414, - -0.0016440629734199542, - 0.024638643757848407, - 0.051081449272106415, - 0.07770009904560068, - 0.10433787380712788, - 0.13087578437101957, - 0.1573599807276778, - 0.18364275542666997, - 0.20955350668598216, - 0.23509642090500957, - 0.2602076518694325, - 0.2847361473766707, - 0.3086140994374264, - 0.33188292972268374, - 0.35442513231994505, - 0.37612846531783806, - 0.39703038358189113, - 0.41709375213213684, - 0.43624551852891347, - 0.454474529158616, - 0.4717937730088662, - 0.4881472248188869, - 0.5035128455464192, - 0.5180027907325143, - 0.5314844943657144, - 0.5438754336131039, - 0.5554398177559303, - 0.5665043250507346, - 0.5773845676646968, - 0.5883349700428949, - 0.5998300874372169, - 0.6120058773302767, - 0.6250516917164674, - 0.6402622384089734, - 0.6580178526292103, - 0.6782813920246125, - 0.7017037038385215, - 0.7291782927380571, - 0.7606837107904241, - 0.7962343618969111, - 0.8364378837053231, - 0.8814245181901967, - 0.9311277306543716, - 0.9858556231800946, - 1.0458923832698515, - 1.111152108057661, - 1.1815894912313945, - 1.2575566606547082, - 1.3388979436532558, - 1.425270507210501, - 1.5168598507418496, - 1.6134706934574647, - 1.7144234364185131, - 2.0408230222447856, - 2.271714448092014, - 2.6239898463999305, - 2.7398347713023017, - 2.853142539356642, - 2.963180941941546, - 3.069903907394351, - 3.1722625677808045, - 3.269311404462916, - 3.3610576968899823, - 3.4468351329331983, - 3.5259568288384804, - 3.598158584831399, - 3.6632949485694106, - 3.720885283510164, - 3.7705504311367273, - 3.8123586073990743, - 3.8460744872708696, - 3.871503635470351, - 3.888724096913862, - 3.8978036835809973, - 3.8986074362079237, - 3.8910681726214036, - 3.875346051275071, - 3.851447395929377, - 3.819384274048099, - 3.7793560640559782, - 3.7315864755312385, - 3.6763785194501257, - 3.6139912193787023, - 3.5447462739570668, - 3.4691099485845895, - 3.387528443798819, - 3.3001923299017966, - 3.2076337108272654, - 3.1104042232782114, - 3.0086668293656107, - 2.9028066124700063, - 2.7934621364440564, - 2.68107438624088, - 2.565778411292059, - 2.4482735359021865, - 2.3292377228817074, - 2.2086856174273946, - 2.0871573247440827, - 1.9653975870205127, - 1.8436384993387664, - 1.7220129847467376, - 1.6012642420657157, - 1.481957954527578, - 1.3639298832961606, - 1.2477714807425893, - 1.1341534974283376, - 1.0229276570833519, - 0.9142809940131885, - 0.8088429863259423, - 0.706846244293876, - 0.6079589570995348, - 0.512697249726506, - 0.4214884566483559, - 0.3337808986975217, - 0.24974060652104096, - 0.16977222396988687, - 0.0935598440976244, - 0.020621846157965498, - -0.048700655451621305, - -0.11437819135824234, - -0.17735659452626248, - -0.23754266643265265, - -0.2947531301589878, - -0.34986132376877477, - -0.4032584396725105, - -0.45473489019104985, - -0.5045989726325769, - -0.553835155890636, - -0.602226010987999, - -0.6496394711242052, - -0.6970729189911811, - -0.7446146317404572, - -0.7920117498809716, - -0.8397210763119803, - -0.888321490108063, - -0.9375209715162224, - -0.9872418785299042, - -1.0381726430924787, - -1.0899243739529514, - -1.1421536698185828, - -1.1953862574209677, - -1.2497581203135106, - -1.3048790369974888, - -1.360669969942526, - -1.4174961181318384, - -1.4749297145573081, - -1.5325533996283347, - -1.5905735433397015, - -1.6486756701150496, - -1.7063802108973205, - -1.763591510580664, - -1.8203118460644137, - -1.8761137366495344, - -1.9306494441654949, - -1.9839463800337152, - -2.035672515223158, - -2.085490809517869, - -2.1333230064675544, - -2.1789730038459703, - -2.2221266266033326, - -2.2625611114988344, - -2.300140857034801, - -2.3346136493436713, - -2.365765878834947, - -2.393408638181642, - -2.4173705404633243, - -2.437529398457148, - -2.4536899405666914, - -2.4656413359192273, - -2.4733058781208594, - -2.4766088037600373, - -2.4753085435801347, - -2.4694105791729553, - -2.459038890100391, - -2.4440096725083884, - -2.424308705565035, - -2.4002068786292523, - -2.371807111032237, - -2.3389397513964183, - -2.301975014618039, - -2.2612681138422475, - -2.2166337896781645, - -2.168334038235075, - -2.116811474295588, - -2.062116792174164, - -2.0042086437761943, - -1.9436007990931905, - -1.8806694396743777, - -1.8151573908629124, - -1.6070012972320606, - -1.5341619035660023, - -1.4601876088695869, - -1.3853122140057832, - -1.3092774954427087, - -1.2325998433654244, - -1.155732093818802, - -1.0783159903603903, - -1.00064588717507, - -0.9232556682956123, - -0.8461080278128255, - -0.7689852159120872, - -0.692367974386448, - -0.6165944857097077, - -0.5412812072219235, - -0.4667695593608645, - -0.3935156125261887, - -0.3212881444148244, - -0.25012821747738356, - -0.1804702826492356, - -0.11245281354266552, - -0.045761928084804206, - 0.01924731040738108, - 0.08226563940175073, - 0.1435983397180771, - 0.20311728645050503, - 0.26050977256956487, - 0.3158444092997382, - 0.3692791264658637, - 0.42053749036184823, - 0.4694770770781404, - 0.5164210228077851, - 0.5612228110433666, - 0.6036865582890376, - 0.6440033879517184, - 0.6822187832497619, - 0.7181823286144828, - 0.7518884361950208, - 0.7835246923656654, - 0.8129707965125613, - 0.8401348040622253, - 0.8651909639240244, - 0.8881243962490496, - 0.9088603377380602, - 0.9274743888686244, - 0.944078992440125, - 0.9586410675227686, - 0.9711691005837362, - 0.9817868377185077, - 0.9905155017197963, - 0.9973747094867274, - 1.0024683844898792, - 1.0058608028099134, - 1.0075792300337325, - 1.0076655346896495, - 1.0061694638012582, - 1.0031445096763076, - 0.9986524867936806, - 0.9927059476244782, - 0.9853668359489839, - 0.9767295211706362, - 0.9668258958916564, - 0.9556771990801768, - 0.9433798568339284, - 0.9300000549728957, - 0.9154941385072473, - 0.8999579848881095, - 0.8835136411916377, - 0.8661579032936078, - 0.8479549863199953, - 0.8290532054655244, - 0.8095386045373033, - 0.7894088587563239, - 0.7688089195564216, - 0.7478772646327458, - 0.7266141956310403, - 0.7051402472764199, - 0.6836305551450145, - 0.6621664377712383, - 0.6408049075317819, - 0.6197045678023269, - 0.598986951438249, - 0.5786476423276593, - 0.5587951772037212, - 0.5395603884274384, - 0.5209608011012429, - 0.5030462541346907, - 0.4859217418637897, - 0.46964481023626187, - 0.45422025213599876, - 0.43975100234613435, - 0.4263073331442429, - 0.4138549720105722, - 0.4024305540677693, - 0.39208507710553997, - 0.38281519260853875, - 0.37458798555616735, - 0.3674157000817119, - 0.3612886256604523, - 0.356174102611782, - 0.3520549083238771, - 0.34890168677571615, - 0.34665303630912037, - 0.34527056848806903, - 0.34470131947865407, - 0.34486153103773154, - 0.3456742263558698, - 0.34704739770508375, - 0.3488746645497678, - 0.3510909945227973, - 0.35365109333381356, - 0.3564734189303757, - 0.35953386962556944, - 0.36294119585642703, - 0.36665280237415726, - 0.3706108914988147, - 0.3748765017266175, - 0.37945403801436284, - 0.38429671650329406, - 0.3894159415823192, - 0.3948283422340121, - 0.4005098240486711, - 0.406453305700452, - 0.4126967307599881, - 0.41922690373823135, - 0.4260294127862135, - 0.4331516055056743, - 0.4406036487505756, - 0.4483634763403566, - 0.45645739923928597, - 0.4649392037686139, - 0.47379742081971254, - 0.48301987847103944, - 0.49265642245145075, - 0.5027052543169944, - 0.513141271543784, - 0.5239968991647262, - 0.535298809356088, - 0.5470474319665302, - 0.559259709627605, - 0.571991361898099, - 0.5852429677158301, - 0.5990039680581628, - 0.6133043970217049, - 0.6281398618351723, - 0.6434732759336841, - 0.6592333043128984, - 0.6753162668932942, - 0.6915919639104423, - 0.7079267787100654, - 0.7241965419770328, - 0.7402839271724714, - 0.7560645041710681, - 0.77140080319154, - 0.786177283502927, - 0.8002891734616312, - 0.8136281134473957, - 0.82608657775581, - 0.837585124431065, - 0.8480554052994439, - 0.8574166272954111, - 0.8656294505947939, - 0.872672718018098, - 0.878508416216649, - 0.8831061437288904, - 0.8864790929459384, - 0.8886294157465716, - 0.889517574316661, - 0.8891954779875766, - 0.8877245961256242, - 0.8850848475193759, - 0.8813062853438076, - 0.8764959130780039, - 0.8707267755834623, - 0.863988606306937, - 0.8563667001750511, - 0.8479407140021685, - 0.8386922581679109, - 0.8287028793014806, - 0.818065671965606, - 0.8067624094023376, - 0.794757150988365, - 0.782144696780267, - 0.7689947083027014, - 0.7551982258316768, - 0.7408137438680612, - 0.7259127283070289, - 0.7103579164720671, - 0.6941333301604238, - 0.6773646151923995, - 0.6600375206778359, - 0.6419776910126309, - 0.6232851828318641, - 0.6040375434161, - 0.5840237217657365, - 0.5632836796588511, - 0.5419457867614836, - 0.5199642742083105, - 0.4972948037840169, - 0.4741526225836794, - 0.45068056403376083, - 0.4267612894664658, - 0.40258876484776246, - 0.37836883677858785, - 0.3540148216375179, - 0.3295758199514121, - 0.30523261010839936, - 0.2810195597026175, - 0.25675086728367397, - 0.23253326268121902, - 0.2084370075304451, - 0.18420266913244643, - 0.15978893647906012, - 0.13526942285019392, - 0.11050697191440345, - 0.08524633714107287, - 0.05951916620353691, - 0.033338429498027046, - 0.006436867666539653, - -0.021140687481251665, - -0.049238944289726534, - -0.07790553593671451, - -0.1070907929084878, - -0.13659430564033373, - -0.16629315389422009, - -0.19619720991837905, - -0.22610720657886668, - -0.2558177092124869, - -0.28528828315785, - -0.3143615557700622, - -0.34284064414986926, - -0.3706260038951158, - -0.3976340805273937, - -0.42367987498095866, - -0.44861992915374854, - -0.472408756969486, - -0.4949117367940943, - -0.5159989800252005, - -0.5356078585645809, - -0.5536544249347314, - -0.5700370639904441, - -0.5846829107865764, - -0.597524463790751, - -0.6084989788321943, - -0.6175547852812125, - -0.6246099434300291, - -0.6296282322021497, - -0.6326035866500482, - -0.6335013729330745, - -0.6322979330431377, - -0.6290511423785045, - -0.6238022968356013, - -0.6165156763845357, - -0.6072819103483262, - -0.5962212758833806, - -0.583319882499702, - -0.5686161114998175, - -0.5522529821576861, - -0.5343062227398049, - -0.514745404023877, - -0.49371897066186865, - -0.47139587918056186, - -0.4477146666329226, - -0.4227848132372019, - -0.396824554819719, - -0.3698954768673763, - -0.3419762843741524, - -0.3132465464623004, - -0.2838001209794443, - -0.2535315326449403, - -0.22262770808810828, - -0.19130380444454473, - -0.15950759941383752, - -0.12731485778121138, - -0.0949604243649046, - -0.06252559435233664, - -0.02989491450355274, - 0.002700877528689263, - 0.035093905927188404, - 0.06748783029466093, - 0.0998365918197223, - 0.13200287466305882, - 0.1640799410654597, - 0.19621272354110322, - 0.22827098695378784, - 0.2601968466731736, - 0.29229757016720637, - 0.32456431308485456, - 0.3569215202642196, - 0.3896350779503689, - 0.4228804429700709, - 0.4566138802179357, - 0.4909127766739291, - 0.526083293425093, - 0.5620907509708364, - 0.5988705292065358, - 0.6366188822891274, - 0.6753170280815051, - 0.7148426545382984, - 0.7552286006767172, - 0.7965568568803778, - 0.8386769357436923, - 0.8814310174177863, - 0.9248502088813597, - 0.968770343696008, - 1.0129548306140472, - 1.0572961233130145, - 1.1016340653823846, - 1.1457084746153299, - 1.189236506099453, - 1.231961937225219, - 1.273614006500589, - 1.3138942811586312, - 1.352460927897166, - 1.389067010060273, - 1.423471293386957, - 1.4553522857063943, - 1.4844228667636326, - 1.5104037649862632, - 1.533042329520043, - 1.55197678592137, - 1.5670071530312584, - 1.577938901287826, - 1.5844395026752787, - 1.5862752346677722, - 1.5832892010920865, - 1.5752988792990714, - 1.562053925585285, - 1.543532952986737, - 1.5197683960758537, - 1.4906572534474538, - 1.4563282456604716, - 1.417017216733712, - 1.3728101337929515, - 1.3237573861448122, - 1.2701465233184888, - 1.2122757392650991, - 1.1502684762646387, - 1.0845182318682558, - 1.0154859190628784 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -18176,1987 +1378,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 36.38135185135962, - 36.427619100233244, - 36.47344106648564, - 36.51852101995156, - 36.56260145828144, - 36.60642228329872, - 36.6498209679246, - 36.69253653283219, - 36.73490568811746, - 36.77722464988661, - 36.81922458206804, - 36.860762638804744, - 36.90256225090289, - 36.94434837026461, - 36.985849407617685, - 37.027462968650305, - 37.06917518470565, - 37.11069436953255, - 37.1520079959699, - 37.19338207972651, - 37.23452119803115, - 37.27514501492853, - 37.31554886217096, - 37.355432794731236, - 37.39434793570386, - 37.43199838258233, - 37.4681403431965, - 37.50239616344303, - 37.53444667559525, - 37.56408607488382, - 37.591074493605134, - 37.615220328536914, - 37.63632343090411, - 37.654256378698385, - 37.668969941122214, - 37.68041796184297, - 37.688473717626486, - 37.69325012518434, - 37.694932983216255, - 37.69332527830927, - 37.68881225623352, - 37.68199487386426, - 37.67321368006847, - 37.66296209049764, - 37.65202631510159, - 37.6409484811002, - 37.6294639586019, - 37.61796178730153, - 37.60646435407289, - 37.5941782493746, - 37.58070211205525, - 37.56595762642475, - 37.549574972692966, - 37.53071919018274, - 37.50951705578554, - 37.48614941844328, - 37.45961144272978, - 37.429870737437774, - 37.397104753571845, - 37.36087289197784, - 37.32062794006914, - 37.27665263496383, - 37.229175988522506, - 37.17732186816479, - 37.121532458673265, - 37.0623668337685, - 36.99949409920331, - 36.933153544263725, - 36.86406960373542, - 36.79257760756498, - 36.71846792665762, - 36.642520941929504, - 36.56554033070379, - 36.48713105232871, - 36.40799853678729, - 36.32896759034064, - 36.25019657157848, - 36.171849307907635, - 36.0947068199924, - 36.01939987730055, - 35.945563064611605, - 35.87388559872795, - 35.80500025790971, - 35.738727093975974, - 35.675291083615086, - 35.61518922477809, - 35.55856991362783, - 35.50514492630694, - 35.455257545398716, - 35.409194697936215, - 35.366419731847124, - 35.32706825391551, - 35.29131825070503, - 35.258933804005885, - 35.22965332490451, - 35.20356594345462, - 35.18063194443627, - 35.160322078733095, - 35.142601213690746, - 35.12742361998887, - 35.114368628939765, - 36.19696301867343, - 36.18761070021409, - 36.17986025848081, - 36.17336006636405, - 36.16801052514171, - 36.16366605779446, - 36.15984389898098, - 36.156341485751575, - 36.15298447608896, - 36.14946749569236, - 36.14550835984236, - 36.14098893148633, - 36.13578966385173, - 36.12962363096589, - 36.12256700337869, - 36.11474438371043, - 36.106069894593865, - 36.096595849657994, - 36.0864932922145, - 36.0758203597353, - 36.064465319351804, - 36.05257283757855, - 36.040331665988134, - 36.027708077311935, - 36.01485747707919, - 36.00197098057802, - 35.98915914235011, - 35.97646274721002, - 35.96401475304423, - 35.951917826189174, - 35.94007421362911, - 35.92855821105892, - 35.917446393574714, - 35.90664871893296, - 35.896150068082044, - 35.886006065312266, - 35.87617017887365, - 35.86651979532989, - 35.85711859745208, - 35.84800602892238, - 35.83894149587364, - 35.82999529438633, - 35.82124770285333, - 35.81259678377309, - 35.80393611385953, - 35.795346910558784, - 35.786894944576915, - 35.77837693881008, - 35.76989529666524, - 35.761520164230035, - 35.75319568831835, - 35.74494683147817, - 35.73684030618164, - 35.72888626973623, - 35.72104421635312, - 35.713411826151116, - 35.70611366031563, - 35.69908718686782, - 35.692389832091244, - 35.686101997820934, - 35.68022241180117, - 35.67484562925557, - 35.67001760070374, - 35.66567736592734, - 35.661897959328456, - 35.658740592109154, - 35.6561919794867, - 35.65435836494361, - 35.65310595123261, - 35.65225328452234, - 35.651747975033565, - 35.651594878737015, - 35.651619986994355, - 35.65172947919926, - 35.65219894303604, - 35.65281778796295, - 35.65350931677489, - 35.65446501463228, - 35.655688734444, - 35.657098258025385, - 35.65873218455183, - 35.66130021293276, - 35.66469303813746, - 35.66881207871195, - 35.67434943262829, - 35.68151281379534, - 35.6901670911645, - 35.70051184039231, - 35.71319118586311, - 35.72799342763413, - 35.74469675544558, - 35.7642652755846, - 35.786544616482814, - 35.81123950811785, - 35.83872306568031, - 35.869297145593876, - 35.9025615024765, - 35.93825654846568, - 35.977198494551935, - 36.01889817191959, - 35.70999207370451, - 35.75723156386641, - 35.807254168680316, - 35.859486384265985, - 35.913866595325906, - 35.970919802639976, - 36.03005292665385, - 36.090714605918706, - 36.15385667290025, - 36.21895226731338, - 36.28532392520915, - 36.35322233224446, - 36.42280963206623, - 36.493321356697386, - 36.564200442931174, - 36.63627054470234, - 36.708709147482, - 36.78074787105304, - 36.8530085370313, - 36.92500102701616, - 37.06323742235974, - 37.13148247877857, - 37.19823110239625, - 37.26294277417541, - 37.326824372303, - 37.38934884375633, - 37.44994366872284, - 37.50912405858328, - 37.567253838875295, - 37.62371846889105, - 37.678242943310224, - 37.73197188055572, - 37.784323238377056, - 37.83472516381239, - 37.884031824816326, - 37.93217286465807, - 37.97860334564393, - 38.02340502731948, - 38.067259377045794, - 38.10965193240233, - 38.150204407166036, - 38.1900468498153, - 38.22891604050862, - 38.266506628519856, - 38.30331841646541, - 38.339756302451285, - 38.37549439864398, - 38.4105417965751, - 38.44584612615262, - 38.481022456354204, - 38.51579362279753, - 38.550805553585384, - 38.58609520318189, - 38.621371726327446, - 38.65668771447369, - 38.69244678170088, - 38.7283199846172, - 38.764041580541125, - 38.80011468934532, - 38.83626754542202, - 38.872224193589204, - 38.90797885704236, - 38.9434887462716, - 38.97841878522299, - 39.012506795390095, - 39.045799210396204, - 39.078075081341275, - 39.10912514149113, - 39.13898321168632, - 39.16768834061336, - 39.19523490621376, - 39.2216116729882, - 39.246915092012564, - 39.27126663605184, - 39.29467843969229, - 39.31700114618746, - 39.338388451321364, - 39.35887359441485, - 39.37824351943868, - 39.39656456048326, - 39.41396218220092, - 39.43046941031044, - 39.44581137722084, - 39.460243665432415, - 39.47384110061647, - 39.48633571001832, - 39.49777316244831, - 39.50831989263122, - 39.517895472249684, - 39.526081787119985, - 39.5330437450391, - 39.538949482856474, - 39.543134778156976, - 39.545771950725275, - 39.547053627237894, - 39.5466513854762, - 39.54439571667071, - 39.54057838527858, - 39.53530630770211, - 39.527872800756214, - 39.07117284200111, - 39.06027263797725, - 39.04730428859725, - 39.03230417517482, - 39.01564717420957, - 38.99727490569385, - 38.97669605557099, - 38.95431812426987, - 38.93052296253241, - 38.90450845107832, - 38.87661050989061, - 38.84725901099851, - 38.81613689177959, - 38.78301801438117, - 38.74839802924707, - 38.71257756845668, - 38.67463408429717, - 38.635161796778945, - 38.59471380505882, - 38.55266966507401, - 38.50929665947805, - 38.465218941450395, - 38.42043781901745, - 38.37449262340279, - 38.32817354886602, - 38.2820523322748, - 38.235221801627794, - 38.18836281131801, - 38.14221278851008, - 38.09639582633051, - 38.05084976217836, - 38.00631614531507, - 37.963085286723945, - 37.91993695533987, - 37.87757991630037, - 37.8364202138977, - 37.79544763934304, - 37.7546175560294, - 37.71438175672425, - 37.6745140828892, - 37.63416388136453, - 37.59388352029045, - 37.55414279317694, - 37.51361696918244, - 37.472862578501186, - 37.43246208803451, - 37.39185094366884, - 37.35083806354729, - 37.310000420578376, - 37.26948676068149, - 37.22809997655757, - 37.18637301357287, - 37.14464788035299, - 37.10172535236434, - 37.05727359431578, - 37.01158804603632, - 36.96435552595868, - 36.91454176017185, - 36.86268669752573, - 36.80929684176949, - 36.753091460321535, - 36.694441542628105, - 36.63392259613379, - 36.57111675336299, - 36.50563096837822, - 36.43796793149833, - 36.3684858502643, - 36.29598435288093, - 36.22093590171497, - 36.143790335688585, - 36.06378213650695, - 35.980755413425115, - 35.89520106340857, - 35.80727792429952, - 35.71666400209314, - 35.62417616928147, - 35.530661874709544, - 35.43579805965284, - 35.340345742439446, - 35.245223413776834, - 35.150714037186304, - 35.05709885375259, - 34.96524406329932, - 34.875797590794505, - 34.78861269939234, - 34.70438609515569, - 34.62371447171142, - 34.54662868279012, - 34.47347253488931, - 34.40471664288319, - 34.24124114186452, - 34.19193265317236, - 34.14771165151049, - 34.10868787370198, - 34.07496959364287, - 34.046510000978, - 34.023191862102394, - 34.00497462458483, - 33.99178339473897, - 33.98335857943932, - 33.84662002312258, - 33.84705282745032, - 33.851587717098795, - 33.85992239446406, - 33.8717222248528, - 33.88670708887066, - 33.90465919668067, - 33.9251886805249, - 33.947895294316176, - 33.97268422376033, - 33.999183839333064, - 34.02697875155577, - 34.05586503583339, - 34.08566065707384, - 34.11593715335112, - 34.14633500057927, - 34.176931283094255, - 34.20736331446109, - 34.23727990938769, - 34.26681772392559, - 34.295890181541246, - 34.32422355032581, - 34.351793113669224, - 34.378940016898646, - 34.4054693213775, - 34.43116573956511, - 34.4566518837692, - 34.48178174350279, - 34.50627230406552, - 34.53039545469916, - 34.55442939950585, - 34.578089149985445, - 34.60120801319116, - 34.62453938559068, - 34.64770724377818, - 34.67035713184712, - 34.69312018569885, - 34.716137030439626, - 34.73921417947959, - 34.762606514644496, - 34.78712287595464, - 34.81248790100238, - 34.83842281569548, - 34.86599055418251, - 34.89497870354581, - 34.92501966538278, - 34.956518114587666, - 34.98982519051525, - 35.024503979865166, - 35.06027725899859, - 35.098065411479915, - 35.13734336519891, - 35.1775972326875, - 35.21938944498367, - 35.26264505405691, - 35.30683317092057, - 35.351819328649796, - 35.39795261710509, - 35.444580346468285, - 35.4910820839992, - 35.53798026617313, - 35.58474975657423, - 35.630779607727916, - 35.67608746547574, - 35.72067903165348, - 35.76401764834789, - 35.805699431482616, - 35.84625071632788, - 35.88512973629176, - 35.92182652579944, - 35.95665822189428, - 35.989522086307694, - 36.02005208776612, - 36.048382693790366, - 36.07511383820054, - 36.10001594730893, - 36.12288236229149, - 36.14464373816301, - 36.16519261338292, - 36.18430894996207, - 36.20245505237115, - 36.21963581395331, - 36.23498377107579, - 36.24845742965345, - 36.261522228972105, - 36.27348293254075, - 36.284148563308925, - 36.295872063620884, - 36.30971408555544, - 36.32559296357334, - 36.34425149343661, - 36.36746917194335, - 36.39477519703803, - 36.42560417486251, - 36.46278633931864, - 36.505952562143506, - 36.55420952673843, - 36.608075848998574, - 36.66832682872705, - 36.7340810244351, - 36.3275416607472, - 36.40323315881856, - 36.48358401417735, - 36.56729081288306, - 36.654310964255174, - 36.744137167619954, - 36.83544472781569, - 36.92707436805308, - 37.0189512729798, - 37.109637945584666, - 37.19729853191292, - 37.42554852916318, - 37.55545377853136, - 37.69243036772776, - 37.73147185628818, - 37.76378465802139, - 37.79030200409627, - 37.811438953271164, - 37.82723050314809, - 37.83820039753507, - 37.845440646820606, - 37.84919445439522, - 37.849813829787045, - 37.84863540645482, - 37.84616697873315, - 37.84289272816331, - 37.83973302140435, - 37.8375414264515, - 37.836775704662266, - 37.83790952741954, - 37.84182159484835, - 37.84872918052304, - 37.85866463870841, - 37.871721896370325, - 37.88790745695382, - 37.907159988040206, - 37.92935925667165, - 37.95435822876382, - 37.98197862753093, - 38.011952454208554, - 38.04393781989358, - 38.07761642021924, - 38.11265577616926, - 38.14855700734594, - 38.18482205692853, - 38.22096114949725, - 38.256456725994944, - 38.29051744878552, - 38.322701755844925, - 38.35262996885447, - 38.37960706562576, - 38.40321279746963, - 38.42323373522471, - 38.43928713493541, - 38.45078293699036, - 38.457717526762956, - 38.460154539259584, - 38.45744746201513, - 38.449705925457415, - 38.437192990987505, - 38.41971120090962, - 38.39713932704736, - 38.36992316941186, - 38.33843622141165, - 38.302148943606156, - 38.2617438194052, - 38.21786206306559, - 38.17019307333822, - 38.11901775292563, - 38.065071998834945, - 38.00864033062918, - 37.94947402396474, - 37.888459926499586, - 37.826419436863475, - 37.762673664585975, - 37.69793600092518, - 37.633166483128115, - 37.56825944027613, - 37.50327629061305, - 37.43920493024898, - 37.376758302147266, - 37.3152693516227, - 37.25581993872973, - 37.19931844882391, - 37.145235509034684, - 37.09391357693875, - 37.0459970441664, - 37.00128623356247, - 36.9587918877538, - 36.91888975231416, - 36.88181646069658, - 36.84604719520843, - 36.811719785204424, - 36.779063510460006, - 36.74721302569285, - 36.71481040750471, - 36.68157640781766, - 36.647827261342925, - 36.61261722137017, - 36.57659497906734, - 36.32691744224066, - 36.28950066247742, - 36.250968443547436, - 36.2117415544986, - 36.17177804563687, - 36.13046011737912, - 36.08818878243163, - 36.04528713081572, - 36.000747138547304, - 35.95458751034059, - 35.90695339527396, - 35.85734345785926, - 35.80531367738387, - 35.75119219249078, - 35.695359053492105, - 35.63735962151126, - 35.57778395646902, - 35.51725330924324, - 35.455775112775086, - 35.393732424975205, - 35.331822565916504, - 35.27049951705654, - 35.2098921714062, - 35.150667768164865, - 35.09339872919321, - 35.038081062642796, - 34.98506362882207, - 34.934698715224144, - 34.88716355312937, - 34.84260624151952, - 34.801312931661265, - 34.76352676877147, - 34.729337259360726, - 34.69890260881177, - 34.672380946687404, - 34.6498454117097, - 34.6313928240124, - 34.61700054430789, - 34.606630444707115, - 34.60039705786027, - 34.59817803674909, - 34.5998255684209, - 34.60550590986047, - 34.615036876575765, - 34.62816403702155, - 34.644843600172365, - 34.66500005590169, - 34.752745869307745, - 34.78456216873797, - 34.8185238499794, - 34.85454040537228, - 34.89236120907858, - 34.931567992739005, - 34.97170919175556, - 35.012446985192156, - 35.053390691291895, - 35.09406606860582, - 35.13408470915075, - 35.173049014403354, - 35.210557874800855, - 35.246324006876605, - 35.280162444751646, - 35.31176586133473, - 35.34082467924488, - 35.36727025051951, - 35.39096807885532, - 35.41185915523871, - 35.42990335557109, - 35.445209187385885, - 35.45787123308763, - 35.468044919966175, - 35.4760393884664, - 35.48203553323795, - 35.48623332888439, - 35.48890219792959, - 35.49036302308435, - 35.490852317951834, - 35.49051110553913, - 35.48948506809349, - 35.48797764309321, - 35.48617379376718, - 35.484222786063434, - 35.48227370704048, - 35.48045567759556, - 35.478669196464246, - 35.47681880383807, - 35.474849839517596, - 35.472582598753256, - 35.469803836395016, - 35.466545238246155, - 35.46284133183855, - 35.45845055107994, - 35.45341027763101, - 35.447791212043, - 35.44148880808064, - 35.43443212624846, - 35.42673565301479, - 35.41848408704173, - 35.409538612801065, - 35.40000204958709, - 35.12989760545438, - 35.119254776168574, - 35.10802573275665, - 35.09633458090005, - 35.08420268715812, - 35.07153689588383, - 35.05848613027854, - 35.04519788732669, - 35.031477062467125, - 35.01740220906281, - 35.00301984979107, - 34.98816003185796, - 34.97268224959375, - 34.95667559577335, - 34.94019129733255, - 34.92297228586599, - 34.90514996967865, - 34.88687372112809, - 34.86812048798967, - 34.84899277191701, - 34.829677698375214, - 34.810289887135106, - 34.790866082396796, - 34.77162043223261, - 34.752756675805095, - 34.7343486174179, - 34.71654416365697, - 34.699441289498786, - 34.68313239817562, - 34.6676357263762, - 34.652950407104534, - 34.63910953373534, - 34.626205654779675, - 34.61417086154064, - 34.602937585886686, - 34.59263894064136, - 34.58323285250368, - 34.57460950836122, - 34.56679075098841, - 34.55990584371016, - 34.55379938301944, - 34.548388424856675, - 34.54408812227814, - 34.54070914883442, - 34.538030980424416, - 34.53620073214373, - 34.535211867365085, - 34.53473859260594, - 34.5346824876712, - 34.535375320545526, - 34.53636818123627, - 34.53746671434652, - 34.5390700361001, - 34.54086294205227, - 34.542608485165594, - 34.54453479797034, - 34.54678445599626, - 34.54906399931596, - 34.55133286033491, - 34.554103765302884, - 34.556982056298644, - 34.559894784950075, - 34.56331909114579, - 34.56736808668418, - 34.57176613862399, - 34.57649674158359, - 34.58243651533696, - 34.58923463857237, - 34.59660690548868, - 34.60529728239004, - 34.615389157601285, - 34.62656558657613, - 34.63901546403447, - 34.65348116268856, - 34.6696098212442, - 34.68704902825015, - 34.70675907586367, - 34.72839235173576, - 34.75151105878986, - 34.77648658309716, - 34.803558427743454, - 34.83218506579907, - 34.86205279819326, - 34.89402748153835, - 34.92754914277571, - 34.96207938542237, - 34.998254162378934, - 35.03595339137496, - 35.074606555105746, - 35.11418049074681, - 35.155251311490254, - 35.19725821342037, - 35.23963702053992, - 35.283344343232436, - 35.328021209030204, - 35.37321516871745, - 35.41931253104246, - 35.466606545401326, - 35.51460968945695, - 35.56303629572623, - 35.459014141246385, - 35.50958133251304, - 35.56047814317302, - 35.61226443077626, - 35.66484820440397, - 35.717739608455744, - 35.77092680007651, - 35.82491837356908, - 35.879263227682635, - 35.93357934609496, - 35.98868286499697, - 36.04421711036496, - 36.09974968591872, - 36.15548427897846, - 36.21158607529041, - 36.26772472284064, - 36.323630418802686, - 36.37983862909451, - 36.4359507390905, - 36.49165616132314, - 36.547258283775, - 36.6026381473895, - 36.65743780776866, - 36.71153298774321, - 36.76514440019991, - 36.81796176870824, - 36.86966562740076, - 36.920299398658486, - 36.96963157544082, - 37.01746537453531, - 37.06369224289112, - 37.10815121148736, - 37.15067665157221, - 37.19115596428882, - 37.2293472587272, - 37.26529115655004, - 37.2990188618295, - 37.33020133695881, - 37.35881490822992, - 37.384982574141056, - 37.408598580514486, - 37.429460170094394, - 37.44794789136597, - 37.46440984171025, - 37.47819635653776, - 37.489835581190505, - 37.49973831696001, - 37.5075364401229, - 37.513275589375745, - 37.5175164546801, - 37.52047945511291, - 37.52123168437094, - 37.520391890233256, - 37.51842118498659, - 37.51436823007273, - 37.508386829956095, - 37.50107065213914, - 37.492096187179506, - 37.480602485000915, - 37.46736363831819, - 37.45290712363918, - 37.43575295017284, - 37.4167118231565, - 37.39648881541183, - 37.37442337074707, - 37.35017471828692, - 37.32440115752792, - 37.297306605125634, - 37.267126132364815, - 37.23457340460269, - 37.2002383386709, - 37.16280674776801, - 37.12230740597127, - 37.079472282474505, - 37.03411190193951, - 36.985097683240895, - 36.93319843947287, - 36.87907827098896, - 36.820932788501636, - 36.75931950723849, - 36.695006737060886, - 36.62733480774359, - 36.55580128674302, - 36.48124730441948, - 36.404182617518316, - 36.323057871657106, - 36.238824091917486, - 36.152379867359436, - 36.06283592836419, - 35.97046075869381, - 35.8762604006831, - 35.78048644098873, - 35.68254393867381, - 35.583467944552616, - 35.48419472199473, - 35.383797691654955, - 35.282978132201414, - 35.18262959659481, - 35.08271877235632, - 34.98324384005436, - 34.85674159781057, - 34.76020866684778, - 34.66492497122872, - 34.57155847565076, - 34.4806194417206, - 34.39191131046918, - 34.30570322141656, - 34.22247256029623, - 34.14242197998533, - 34.065552640578424, - 33.992324476118725, - 33.92301257080532, - 33.85747410684625, - 33.795932229307176, - 33.73869041158205, - 33.68584317664979, - 33.637328412802695, - 33.593017416607275, - 33.55284667324997, - 33.5169249125251, - 33.48489972791104, - 33.456302531280606, - 33.43119182932054, - 33.409198462915974, - 33.38981703485952, - 33.37293902305435, - 33.35877075196609, - 33.346800573048604, - 33.33667739272395, - 33.329150604625184, - 33.323891090547605, - 33.32043275568763, - 33.319079285741296, - 33.32012087133255, - 33.32304488482305, - 33.32770135522101, - 33.33497184258162, - 33.344306771194695, - 33.35519380072176, - 33.368264510340595, - 33.38340454719607, - 33.40013441126551, - 33.41857970359861, - 33.43956071180868, - 33.46270618345879, - 33.487588621490055, - 33.51546546707227, - 33.546103482600586, - 33.579037139744955, - 33.614751767193496, - 33.65368803376193, - 33.69536371381951, - 33.73947461201237, - 33.78722446521094, - 33.83810952964254, - 33.89163638837551, - 33.948841864553195, - 34.0099187164649, - 34.074280717184514, - 34.14189368091092, - 34.213706192511005, - 34.28906685228764, - 34.36719140249559, - 34.44937520376017, - 34.53511302861549, - 34.62350528015319, - 34.71461554032446, - 34.80846379664831, - 34.90379383133602, - 34.999540942103955, - 35.09645502130921, - 35.19334486041946, - 35.288846055887646, - 35.383287999332914, - 35.4760889881586, - 35.56591156803507, - 35.6520987362246, - 35.73500614815107, - 35.813210978929064, - 35.88584173953423, - 35.954072257835875, - 36.017547752371264, - 36.075627596017945, - 36.128736981807386, - 36.177405726598316, - 36.22127274613088, - 36.26017421003922 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -20168,1987 +1398,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - -36.09271357910172, - -36.04680869964932, - -36.00134910100633, - -35.95663151333803, - -35.91291343899399, - -35.86945497615081, - -35.82641865188731, - -35.784065445530416, - -35.742058646984184, - -35.70010204014242, - -35.65846446107678, - -35.61728875564428, - -35.5758514930388, - -35.534427721358206, - -35.49328902987477, - -35.45203781290031, - -35.41068793909168, - -35.369531094700065, - -35.32857980688663, - -35.287568059942565, - -35.24679127663914, - -35.206529792931654, - -35.16648827706787, - -35.12696667407496, - -35.088413860858466, - -35.05112573992495, - -35.01534610344455, - -34.98145260552065, - -34.94976441387995, - -34.92048733329179, - -34.89386123145982, - -34.87007771160636, - -34.84933692250647, - -34.83176628616852, - -34.81741503339006, - -34.80632932050374, - -34.79863587074376, - -34.794221767398575, - -34.79290121176849, - -34.79487121726648, - -34.799746538122434, - -34.80692621746115, - -34.81606970641563, - -34.826683589334465, - -34.83798165626782, - -34.84942177999586, - -34.86126859041019, - -34.873133047815976, - -34.88499276533947, - -34.89764115252206, - -34.91147957051521, - -34.92658633500899, - -34.94333126579359, - -34.9625493235462, - -34.98411373137537, - -35.007843640339196, - -35.03474388586393, - -35.06484685915684, - -35.09797510921336, - -35.134569235187676, - -35.175176449666445, - -35.21951401553161, - -35.26735292092258, - -35.319569298419786, - -35.375720963240646, - -35.435248841664624, - -35.49848382793896, - -35.56518663277762, - -35.634632821394966, - -35.70648706384446, - -35.780958989220885, - -35.85726821660812, - -35.93461106868302, - -36.01338258609739, - -36.092877338868234, - -36.17227052073447, - -36.2514037731064, - -36.33011326857722, - -36.40761798648267, - -36.483287157355, - -36.55748619641473, - -36.62952588685948, - -36.69877345042916, - -36.76540883530472, - -36.829207064797835, - -36.889671140957475, - -36.94665266762083, - -37.00043986864533, - -37.050689461447654, - -37.097114518994786, - -37.14025169335908, - -37.179965377756474, - -37.21607758562337, - -37.24882423516957, - -37.27846691530868, - -37.304916495987, - -37.328212692424515, - -37.3488847537376, - -37.36696781258065, - -37.38250759827404, - -37.39592477950547, - -36.313258191617706, - -36.32302380157815, - -36.33117354259145, - -36.338061325002464, - -36.34378804828887, - -36.34849984149946, - -36.35267969673043, - -36.35652925404103, - -36.36022124924021, - -36.364058444892635, - -36.36831950311804, - -36.373118368139856, - -36.378569734206415, - -36.38495416571312, - -36.39218894219837, - -36.400143148581094, - -36.40889500762794, - -36.41838495071351, - -36.42843593226135, - -36.438983765266556, - -36.45013261348431, - -36.46173384486097, - -36.47359622491078, - -36.4857462785798, - -36.49802779194803, - -36.510251644854606, - -36.52230615805829, - -36.53415022567145, - -36.54565758851198, - -36.55673316246525, - -36.56747179645131, - -36.5778097933489, - -36.58768332438711, - -36.59718440488049, - -36.60633643414, - -36.61509880836575, - -36.62352856840754, - -36.63175026680136, - -36.63971615332121, - -36.647403472217256, - -36.6550507969839, - -36.662600998446855, - -36.669989706543646, - -36.677323329961425, - -36.68471168383491, - -36.6920877899613, - -36.69939681381979, - -36.70683205038157, - -36.71430253594754, - -36.72174892505099, - -36.729217738218274, - -36.73668460240783, - -36.744090677431636, - -36.75142440140022, - -36.75871295168429, - -36.765863845921146, - -36.77275736424766, - -36.77943550152913, - -36.785840884425404, - -36.7918949945228, - -36.797588068242064, - -36.80281669300979, - -36.807537482779644, - -36.811811023479294, - -36.81554865532351, - -36.81869179502907, - -36.821255649926464, - -36.82312429571795, - -36.82442887630477, - -36.82535281869709, - -36.825946781693524, - -36.826201100359086, - -36.82629356935535, - -36.82632001676414, - -36.82599874641508, - -36.825539274619864, - -36.82501738031564, - -36.82423891951815, - -36.82319190781952, - -36.82195621940372, - -36.820493486607724, - -36.818093983198466, - -36.8148665441515, - -36.81091088720474, - -36.805541882419746, - -36.798554699913566, - -36.790085884006814, - -36.77994127120802, - -36.76748559884871, - -36.752931175395034, - -36.73650059667521, - -36.7172429245337, - -36.69531306920686, - -36.67100529307771, - -36.643952836398284, - -36.613858718645744, - -36.58111996156785, - -36.54599453537562, - -36.507676018651544, - -36.466648065057356, - -36.75678314460289, - -36.710981811019394, - -36.662475300706134, - -36.61181979267264, - -36.55907050476029, - -36.50370600018716, - -36.446299652948326, - -36.387384055325995, - -36.326011079104276, - -36.262686979472214, - -36.19806890215336, - -36.13189688129904, - -36.06399730166417, - -35.99511693255021, - -35.92580019398441, - -35.85521796742259, - -35.78417918676884, - -35.713443646342895, - -35.64237951764338, - -35.57147054228802, - -35.43509145609436, - -35.367587759895265, - -35.301465525672114, - -35.23727425517853, - -35.17379026361909, - -35.11154996510752, - -35.051139858434155, - -34.9920383467053, - -34.93387716092352, - -34.877289511286584, - -34.822562867192005, - -34.76852993826819, - -34.71579291889546, - -34.66494758267789, - -34.615121473146736, - -34.56639388656454, - -34.5193337889625, - -34.47386336874916, - -34.42928453849323, - -34.3861348087308, - -34.34481135780232, - -34.30414818649999, - -34.264421815542136, - -34.225953064245765, - -34.188226494862256, - -34.15082377006001, - -34.11408650173088, - -34.0780089323617, - -34.041606884379306, - -34.00528474685479, - -33.96933471715914, - -33.93308385680195, - -33.89649539500642, - -33.859876602990774, - -33.823174024911125, - -33.785965397046255, - -33.74859715275389, - -33.71134979416967, - -33.67369546079999, - -33.635921198254835, - -33.598319606907694, - -33.56089857221257, - -33.52370501617524, - -33.487094785493376, - -33.45134756987078, - -33.41641761148433, - -33.38254123438913, - -33.349942922837535, - -33.31859031938346, - -33.288445295197285, - -33.259516803556686, - -33.23181934858917, - -33.205252201361425, - -33.17968885840346, - -33.15511860318004, - -33.13170213370595, - -33.109277034855154, - -33.08780904659235, - -33.06752631904051, - -33.048359214984266, - -33.0301751802555, - -33.012939584178795, - -32.99694828237896, - -32.98192950128076, - -32.9678044336972, - -32.95486150703237, - -32.943053736619305, - -32.93220451242453, - -32.922401537047556, - -32.91409471446335, - -32.90710918122402, - -32.901266553657415, - -32.897279920781294, - -32.89496546406247, - -32.8941171976437, - -32.8950873425372, - -32.89805808953716, - -32.90271600120373, - -32.908945603837374, - -32.9175026824515, - -33.25489301088941, - -33.26699603792251, - -33.28130100522335, - -33.29776650902735, - -33.31599107841323, - -33.33603368893959, - -33.358412712488125, - -33.38269151897722, - -33.40846120583794, - -33.43656819472458, - -33.4666515794988, - -33.498251542423716, - -33.531699066723775, - -33.56722812742889, - -33.60430982662179, - -33.642622493665115, - -33.68313413226696, - -33.72521278770145, - -33.76827187208333, - -33.8129596027214, - -33.858989893730836, - -33.905703694454026, - -33.95309712652747, - -34.001649084969515, - -34.05052903998269, - -34.09913824757794, - -34.14842178460763, - -34.197666337846364, - -34.24610288465003, - -34.2941224296374, - -34.3417877573971, - -34.38832838487323, - -34.43344469408006, - -34.478399328094106, - -34.52245671377529, - -34.56519781165935, - -34.607663943868275, - -34.64989766679179, - -34.69143190684123, - -34.732497672512565, - -34.77396389787313, - -34.81525970381833, - -34.85590216556947, - -34.8972423722797, - -34.93870502859534, - -34.979693551392856, - -35.020782448123484, - -35.06215974183778, - -35.10323808897853, - -35.14387120012711, - -35.18527092207512, - -35.22689854946149, - -35.26841481820969, - -35.31103815222869, - -35.35510982500947, - -35.400340672832044, - -35.44705463465003, - -35.49629635813263, - -35.54752753258674, - -35.600247245696615, - -35.655740418855764, - -35.7136386322456, - -35.77337176595534, - -35.83535879581118, - -35.89999133613113, - -35.96677134371007, - -36.035344899642844, - -36.10689541466311, - -36.180951092778514, - -36.25706321552678, - -36.33597463493694, - -36.417828063258426, - -36.502131390263166, - -36.58871570121645, - -36.677880294035674, - -36.768817169278634, - -36.86069085602907, - -36.953798336039256, - -37.047391958629014, - -37.14057530963536, - -37.23306557168918, - -37.32458478499508, - -37.414298173248, - -37.501584570362155, - -37.58658190711001, - -37.668630321680844, - -37.74716812994005, - -37.82216902034754, - -37.89331458338745, - -37.96016960469122, - -38.11950260757855, - -38.16755969147741, - -38.21072124140677, - -38.248894341163876, - -38.28198661683806, - -38.31004746306354, - -38.33319281637776, - -38.35146760812428, - -38.36494651478494, - -38.37387562965838, - -38.32517327183753, - -38.325563195508586, - -38.32203802478796, - -38.31488436178595, - -38.30442003560108, - -38.290908664721705, - -38.27455286246972, - -38.25572256911515, - -38.23479764649483, - -38.21186257736664, - -38.187270280568065, - -38.16141632205444, - -38.1344922150721, - -38.10666929825454, - -38.07835749644655, - -38.049901122024394, - -38.02122399770541, - -37.99267613214482, - -37.96459724066582, - -37.93685700127012, - -37.90954125722764, - -37.882916873448096, - -37.857010439777504, - -37.83149542524135, - -37.80656331038082, - -37.782425118288536, - -37.758483260025784, - -37.73488082765766, - -37.71189276535995, - -37.689258306005385, - -37.66671020066798, - -37.64452456788074, - -37.622863281842434, - -37.600998112604984, - -37.57929236734818, - -37.558088875806, - -37.536776571645895, - -37.51521869436675, - -37.49360189076522, - -37.471678321543756, - -37.44866249372603, - -37.42481949424418, - -37.40041807466113, - -37.37442432339932, - -37.34704133199062, - -37.31862331404773, - -37.28877388912446, - -37.25714742434684, - -37.22416465971754, - -37.190091667515496, - -37.1540271501833, - -37.116477783165074, - -37.07794068293714, - -37.03786204130868, - -36.99630940405613, - -36.95379694151883, - -36.91045215354589, - -36.865929042853395, - -36.82086417813862, - -36.775865057495594, - -36.73041803839123, - -36.68503849086009, - -36.64032845632299, - -36.596272294195494, - -36.55286600756167, - -36.51064168986821, - -36.47000232634223, - -36.430430822900554, - -36.392467557822144, - -36.356623473315885, - -36.322589111574395, - -36.29047140265531, - -36.26063929249261, - -36.23296354805736, - -36.20685035766337, - -36.18253231209624, - -36.160219437499705, - -36.13898507421277, - -36.11893899630129, - -36.10030370702387, - -36.082619373369724, - -36.06588321554835, - -36.05096567459361, - -36.037911181136145, - -36.025255110417355, - -36.01369818348973, - -36.003434702293795, - -35.99210640782076, - -35.97864893735077, - -35.963142591746944, - -35.944841562051714, - -35.921958806699486, - -35.89495834472139, - -35.864398629769305, - -35.82742306065303, - -35.784382541777504, - -35.73615390652333, - -35.682188384316184, - -35.621670903332074, - -35.55545582389499, - -35.2486908723922, - -35.17172346147306, - -35.08975547451867, - -35.00406903727193, - -34.914661214535556, - -34.8220023780065, - -34.727407764890394, - -34.63203291239032, - -34.53591625998272, - -34.44051600133372, - -34.34772550111548, - -34.10182695509661, - -33.958623766792414, - -33.801337315905336, - -33.75520896636844, - -33.71595258696205, - -33.682631591992255, - -33.654883660972004, - -33.632772599269884, - -33.615824293214494, - -33.602936873810506, - -33.593946327560886, - -33.58856136198609, - -33.58541119541907, - -33.58402584146745, - -33.583961878850985, - -33.58429300508967, - -33.584151709716956, - -33.5830963637163, - -33.58065830751154, - -33.5759101609872, - -33.56863722210119, - -33.55881918212011, - -33.546347412471626, - -33.531199749622864, - -33.51342794436974, - -33.49313361195491, - -33.470431509264785, - -33.44546374899749, - -33.41845910211603, - -33.38973097070198, - -33.359550552115934, - -33.32820133042655, - -33.29615521452966, - -33.2638843761952, - -33.231835755347284, - -33.20050050265373, - -33.17068451160897, - -33.142795765460285, - -33.11717960284582, - -33.09454797455044, - -33.07530728698044, - -33.05963706264737, - -33.04791555631911, - -33.04075944989564, - -33.03813839072213, - -33.039957662880845, - -33.04691233899495, - -33.05886626379155, - -33.07552343141331, - -33.09709512943684, - -33.12371196444155, - -33.154893911442414, - -33.19024623513031, - -33.23034547976273, - -33.274469223766474, - -33.32194586567132, - -33.373118070943754, - -33.427698482048, - -33.48492249075667, - -33.544505337926054, - -33.60671994231268, - -33.670648374397736, - -33.73544773392496, - -33.801836069960785, - -33.8690800529245, - -33.93619551747238, - -34.003301675239534, - -34.070339849846256, - -34.136299698893765, - -34.20045840068292, - -34.26349899015577, - -34.324317917618885, - -34.38199654869245, - -34.437075357126695, - -34.48920788716823, - -34.53774942439509, - -34.58291208165015, - -34.625698947371355, - -34.66573743369679, - -34.70279906998737, - -34.738419530543425, - -34.7724624576169, - -34.804703354866206, - -34.83601548859645, - -34.8677769899411, - -34.90028468291189, - -34.933218501912975, - -34.96750713605719, - -35.00249598304242, - -34.980382915578225, - -35.016664758852954, - -35.0539456056719, - -35.091811893909366, - -35.13031096908705, - -35.17005803469748, - -35.210665139560476, - -35.251825104636936, - -35.29454218732727, - -35.33881068336055, - -35.38450363152688, - -35.432129829219775, - -35.48214069864098, - -35.53422167914532, - -35.58800630632198, - -35.643948183375635, - -35.701474090473084, - -35.75998133596914, - -35.81947309592168, - -35.87958351764657, - -35.939637954647004, - -35.99920423275278, - -36.05817433093714, - -36.11590482662281, - -36.17184671397143, - -36.2260316524329, - -36.27813322469361, - -36.327817658940944, - -36.37493031310878, - -36.4193430919847, - -36.46077784846815, - -36.49899483806597, - -36.53393141119982, - -36.56542146952312, - -36.5932936461869, - -36.61748729377971, - -36.63789628687159, - -36.654515777317904, - -36.66736852495982, - -36.67634320482612, - -36.68152690488806, - -36.68303038905303, - -36.68069990200618, - -36.674680771491744, - -36.665183660989015, - -36.65223888546437, - -36.63590652446181, - -36.56020696566051, - -36.53225575477287, - -36.50209506545839, - -36.46981511335233, - -36.435645144586495, - -36.39997072422534, - -36.363226672816815, - -36.32575127944551, - -36.28791098503305, - -36.250159595332214, - -36.21289949728261, - -36.17651732852078, - -36.141403524487075, - -36.10785082433033, - -36.07605171054046, - -36.04631036737792, - -36.01893805038245, - -35.994020893257215, - -35.97169570109925, - -35.95202651562044, - -35.935067054139985, - -35.92071789364864, - -35.90889158782029, - -35.899442696474054, - -35.892073577456664, - -35.886610989593066, - -35.882863695476566, - -35.880571751949404, - -35.87942252577957, - -35.87918814391551, - -35.87973510676879, - -35.88092431157418, - -35.88256032346671, - -35.884466087273466, - -35.88649654808682, - -35.88850967249719, - -35.890383388627086, - -35.89222014066983, - -35.894119483668234, - -35.89614144132761, - -35.898468990090144, - -35.90131621772444, - -35.90465580541105, - -35.908457188827484, - -35.912960741519846, - -35.91813154099958, - -35.923901429769685, - -35.93037495163251, - -35.93762267560765, - -35.94553140336298, - -35.95401697674339, - -35.96321584257573, - -35.973025537321945, - -35.798548091319255, - -35.80949698538974, - -35.821055826037515, - -35.833099654998165, - -35.84560561784695, - -35.85866501106916, - -35.872127440067004, - -35.885843821049626, - -35.90000719189475, - -35.91453683241261, - -35.929383757699014, - -35.944715015659014, - -35.96066800178803, - -35.97715085088507, - -35.99410956019841, - -36.01179775526146, - -36.03008136880351, - -36.048808899489735, - -36.068001918850285, - -36.08755661247672, - -36.107285031112106, - -36.12707216682535, - -36.14688115147141, - -36.16649831894024, - -36.18572087276173, - -36.204476856266304, - -36.22261956507534, - -36.24005190185752, - -36.256683644718244, - -36.27249784704873, - -36.28749546138625, - -36.301644323264775, - -36.3148554383534, - -36.3271960605437, - -36.33873318747025, - -36.34933768349027, - -36.35905177556952, - -36.36798391987038, - -36.37611382531873, - -36.38331616872575, - -36.389744130937686, - -36.395479819365725, - -36.4001174463357, - -36.4038435237425, - -36.406874903953714, - -36.409068134082865, - -36.41043020585008, - -36.411280962361324, - -36.41171735850467, - -36.411414695328176, - -36.41081329183926, - -36.41010406539833, - -36.40889625251256, - -36.40749919670944, - -36.406145710982265, - -36.40461262548678, - -36.40276028668501, - -36.40087670051442, - -36.39900208107197, - -36.39663318093994, - -36.39415661679889, - -36.391644255060044, - -36.3886281430002, - -36.384996756711075, - -36.38102042153425, - -36.37671543987694, - -36.371221212686784, - -36.36488157308637, - -36.357975174014264, - -36.34977117463275, - -36.34018682349674, - -36.32953248917324, - -36.31762173077307, - -36.303723583733934, - -36.288183031037796, - -36.27134496274366, - -36.252262533365, - -36.23127476868576, - -36.208810092757204, - -36.184500096394125, - -36.15810524246058, - -36.13015596805009, - -36.10095900403512, - -36.069655957726404, - -36.036795727498706, - -36.002907179419395, - -35.967357746818884, - -35.93026192663193, - -35.89218131079605, - -35.853145955994826, - -35.81258051200786, - -35.771038269545215, - -35.72907810334591, - -35.68574683312456, - -35.64139967574905, - -35.596486700604956, - -35.55062213869244, - -35.50351167742745, - -35.455641347241524, - -35.407297204439466, - -35.26669627015549, - -35.21610024243351, - -35.16512691151383, - -35.11321503325971, - -35.06045659102563, - -35.007344592881196, - -34.9538919966478, - -34.899586048921044, - -34.844881207265935, - -34.79016376000658, - -34.734608331267204, - -34.67857421034294, - -34.62249918244333, - -34.56617674830281, - -34.50943803096405, - -34.45261703096985, - -34.39598808429542, - -34.33900544682726, - -34.28207379100327, - -34.22550896183514, - -34.16900081924191, - -34.11267053543354, - -34.05688473038427, - -34.00177217646785, - -33.94710728204452, - -33.893209402209955, - -33.840409175193265, - -33.788667296570495, - -33.73822519299187, - -33.68928868016851, - -33.641975178187536, - -33.59645712357757, - -33.552909928541354, - -33.511455105667444, - -33.47235321334854, - -33.43556502744874, - -33.4010609838947, - -33.36919185933573, - -33.33998707757024, - -33.313320658752964, - -33.28930724169337, - -33.26816458656186, - -33.24949581037711, - -33.23293665293332, - -33.21917186150964, - -33.20764747859975, - -33.19793168223277, - -33.190410894904424, - -33.18503753423861, - -33.18122209794091, - -33.17873234820184, - -33.178547805160285, - -33.18001825652833, - -33.182659092873905, - -33.1874683737974, - -33.19428436693907, - -33.2024839015234, - -33.21240537548841, - -33.22495044680696, - -33.239306384669476, - -33.254919183261805, - -33.27333656905189, - -33.29370731544743, - -33.31529126702959, - -33.33877613203711, - -33.36451400789228, - -33.39181312675792, - -33.420457085263955, - -33.45228132871589, - -33.486535537954516, - -33.52260031050949, - -33.56183713221376, - -33.6042081362276, - -33.64894602823207, - -33.696241310393205, - -33.747255565737404, - -33.8011832907, - -33.85733056751172, - -33.91755240552668, - -33.98126126093214, - -34.04765533846477, - -34.117403363176116, - -34.191008244014824, - -34.26759350275559, - -34.34662627968629, - -34.429677648536845, - -34.5157602802474, - -34.60394630870304, - -34.695128474691906, - -34.78901942709361, - -34.884587657198615, - -34.981570635521344, - -35.080559857581214, - -35.180503445269075, - -35.280456817697505, - -35.38134720678455, - -35.48246761735056, - -35.58292513233127, - -35.68275603551371, - -35.781964621204594, - -35.886130424141484, - -35.982008908033755, - -36.07647535842913, - -36.16887835718056, - -36.25872586564984, - -36.34622331463983, - -36.43111794688662, - -36.512954405250944, - -36.59154853405502, - -36.666913904566975, - -36.73861606823388, - -36.80640177421876, - -36.87042552237657, - -36.930484466171684, - -36.98629849771441, - -37.03779050275808, - -37.08503316030836, - -37.128161448768246, - -37.167246638164464, - -37.20219385665935, - -37.23334994209171, - -37.26117197904748, - -37.28560955772802, - -37.30702192144863, - -37.325898202203334, - -37.34234587824505, - -37.35616943718236, - -37.3678618833877, - -37.377762063673124, - -37.38515208178008, - -37.39034867333554, - -37.3937997342288, - -37.39521411905636, - -37.39431252703561, - -37.39158572582025, - -37.38717717157019, - -37.38023716113973, - -37.371290079059236, - -37.36082521090824, - -37.34823163300891, - -37.33361384580872, - -37.31742877062773, - -37.29955222744563, - -37.279189973905616, - -37.2566947856327, - -37.232474190672626, - -37.20531120744804, - -37.17542418122218, - -37.14325719885832, - -37.108337537292996, - -37.07023294100613, - -37.02940429241665, - -36.98614262921775, - -36.939277902925966, - -36.88929284946508, - -36.83666338055023, - -36.780383223219935, - -36.72026122040305, - -36.65686346883586, - -36.59022321612104, - -36.51941440454987, - -36.44506633915464, - -36.36794304814181, - -36.28677739564921, - -36.20205878984118, - -36.114667186999164, - -36.02454141239687, - -35.931660805956895, - -35.83726364963222, - -35.74240846919417, - -35.646363170220354, - -35.550313809798354, - -35.45562827555847, - -35.36199293835596, - -35.26999882236246, - -35.18099277574061, - -35.095646209473344, - -35.01361477499134, - -34.93633313240828, - -34.86468709383992, - -34.79750303246165, - -34.735138899392716, - -34.678239386700376, - -34.62637150837582, - -34.578990622028705, - -34.53645086082621, - -34.4989065751276 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -22158,1987 +1416,15 @@ }, "name": "Roll est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.14431913612894973, - 0.19040520029196617, - 0.23604598273965097, - 0.2809447533067604, - 0.3248440096437295, - 0.3684836535739529, - 0.4117011580186438, - 0.45423554365088853, - 0.49642352056663946, - 0.5385613048720936, - 0.5803800604956276, - 0.6217369415802281, - 0.6633553789320425, - 0.7049603244532042, - 0.7462801888714604, - 0.7877125778749972, - 0.8292436228069876, - 0.8705816374162437, - 0.9117140945416391, - 0.9529070098919754, - 0.9938649606960078, - 1.034307610998442, - 1.074530292551544, - 1.1142330603281412, - 1.152967037422699, - 1.190436321328691, - 1.2263971198759793, - 1.260471778961192, - 1.2923411308576527, - 1.3217993707960147, - 1.3486066310726543, - 1.3725713084652784, - 1.3934932541988232, - 1.41124504626493, - 1.4257774538660783, - 1.4370443206696153, - 1.4449189234413629, - 1.4495141788928836, - 1.4510158857238822, - 1.4492270305213908, - 1.444532859055539, - 1.437534328201556, - 1.4285719868264188, - 1.4181392505815877, - 1.4070223294168793, - 1.3957633505521732, - 1.3840976840958532, - 1.3724143697427806, - 1.3607357943667135, - 1.3482685484262684, - 1.3346112707700166, - 1.3196856457078803, - 1.3031218534496878, - 1.2840849333182685, - 1.262701662205079, - 1.2391528890520447, - 1.2124337784329235, - 1.1825119391404706, - 1.1495648221792452, - 1.1131518283950808, - 1.0727257452013448, - 1.028569309716111, - 0.9809115337999613, - 0.9288762848725042, - 0.8729057477163121, - 0.8135589960519376, - 0.7505051356321731, - 0.6839834557430542, - 0.6147183911702317, - 0.5430452718602552, - 0.46875446871836934, - 0.39262636266068973, - 0.315464631010383, - 0.23687423311565706, - 0.15756059895953092, - 0.07834853480308052, - -0.0006036007639578024, - -0.0791319803347956, - -0.15645558324513456, - -0.23194364002722684, - -0.30596156590156154, - -0.3778201440657669, - -0.44688659625972205, - -0.5133408706643713, - -0.5769579905913724, - -0.6372409580896945, - -0.694041376996505, - -0.7476474711691977, - -0.7977159580244664, - -0.8439599105292883, - -0.8869159807559818, - -0.926448561920481, - -0.96237966745917, - -0.9949452155818461, - -1.0244067952020801, - -1.0506752762661868, - -1.073790373994124, - -1.0942813375022498, - -1.1121832994449472, - -1.1275419891425833, - -1.1407780752828518, - -0.05814758647213776, - -0.06770655068203077, - -0.07565664205532294, - -0.08235062931920825, - -0.08788876157358211, - -0.09241689185250299, - -0.09641789887472446, - -0.10009388414472857, - -0.10361838657562325, - -0.10729547460013487, - -0.11140557163784182, - -0.1160647183267645, - -0.12139003517734394, - -0.12766526737361603, - -0.1348109694098418, - -0.1426993824353286, - -0.15141255651703395, - -0.1608945505277583, - -0.1709713200234291, - -0.18158170276562574, - -0.19283364706625108, - -0.20458050364121189, - -0.2166322794613247, - -0.22901910063393535, - -0.24158515743442172, - -0.2541403321382906, - -0.26657350785408745, - -0.27884373923071454, - -0.2908214177338725, - -0.30240766813804054, - -0.31369879141109663, - -0.32462579114498574, - -0.3351184654061973, - -0.34526784297376095, - -0.3550931830289751, - -0.36454637152674363, - -0.37367919476694356, - -0.38261523573573547, - -0.39129877793456813, - -0.3996987216474407, - -0.408054650555128, - -0.4163028520302637, - -0.4243710018451585, - -0.43236327309416817, - -0.4403877849876927, - -0.4483704397012539, - -0.4562509346214342, - -0.4642275557857458, - -0.4722036196411501, - -0.4801143804104786, - -0.4880110249499625, - -0.49586888546483254, - -0.5036251856249998, - -0.5112690658319986, - -0.5188343676655859, - -0.5262260098850139, - -0.533321851966018, - -0.5401741573306507, - -0.5467255261670783, - -0.552896498350931, - -0.55868282822045, - -0.5639855318771086, - -0.56875994103795, - -0.5730668287759753, - -0.5768253479975299, - -0.5799756014599572, - -0.582531835219885, - -0.5843829653871738, - -0.5856614625360809, - -0.5865497670873784, - -0.5870994033299826, - -0.5873031108110374, - -0.5873367911804984, - -0.587295268782438, - -0.5868999016895198, - -0.5863607433284532, - -0.5857540317703758, - -0.5848869524429336, - -0.5837515866877616, - -0.582428980689162, - -0.5808806510279462, - -0.5783968851328527, - -0.5750867530070196, - -0.5710494042463972, - -0.5655962248957255, - -0.558520943059116, - -0.5499593964211579, - -0.5397147154078573, - -0.5271472064928016, - -0.5124688738804499, - -0.4959019206148098, - -0.4764888244745499, - -0.45438422636202674, - -0.42988289247992983, - -0.4026148853589835, - -0.3722807865259358, - -0.3392792295456768, - -0.30386899345497165, - -0.26523876204980157, - -0.22387494656888748, - -0.5233955354491865, - -0.47687512357649003, - -0.42761056601290637, - -0.3761667042033305, - -0.3226019547171914, - -0.2663930987735919, - -0.20812336314723986, - -0.14833472470364648, - -0.08607720310201386, - -0.02186735607942122, - 0.043627511527896685, - 0.11066272547270618, - 0.17940616520102975, - 0.24910221207358593, - 0.31920012447338153, - 0.39052628863987254, - 0.4622649803565825, - 0.5336521123550677, - 0.6053145096939582, - 0.676765242364073, - 0.8140729831326864, - 0.8819473594416531, - 0.9483827883620679, - 1.012834259498442, - 1.0765170543419555, - 1.1388994393244054, - 1.1994019051443392, - 1.2585428559389922, - 1.3166883389758868, - 1.373214478802231, - 1.427840038059112, - 1.4817209711437633, - 1.5342651597407968, - 1.5848887905672482, - 1.634455175834794, - 1.6828894890467683, - 1.7296347783407187, - 1.7747708292851607, - 1.818987419276286, - 1.8617585618357664, - 1.9026965246818603, - 1.9429493316576556, - 1.9822471124832415, - 2.0202767821370453, - 2.057545960801573, - 2.0944662661956417, - 2.1307039484565493, - 2.166266432106699, - 2.202119620886654, - 2.2378688547497037, - 2.273229452819192, - 2.308860848391719, - 2.3447999040877368, - 2.380747561668336, - 2.416756844781279, - 2.4532406923273165, - 2.489861415931656, - 2.5263458931857286, - 2.5632096142726626, - 2.6001731735835922, - 2.636952293340755, - 2.6735401424148906, - 2.7098918650481796, - 2.7456619998648053, - 2.780579612759662, - 2.8146907994559403, - 2.8477669234760747, - 2.8795911093267943, - 2.910196446151428, - 2.939621522708037, - 2.9678590513285372, - 2.9948961621995163, - 3.020831445325572, - 3.0457888888241924, - 3.069779918256124, - 3.092649506240754, - 3.1145557082331026, - 3.1355322739112514, - 3.1553586001990888, - 3.1741026727494983, - 3.1918935009727103, - 3.208764913065817, - 3.224431547420943, - 3.239157082075828, - 3.2530183334596385, - 3.265737101492971, - 3.277359712914505, - 3.28805769010334, - 3.297746967601065, - 3.305993536328313, - 3.3129672819075386, - 3.3188414645995317, - 3.322927428687843, - 3.3254032433314, - 3.326468214797096, - 3.3257820214694975, - 3.3231688135667725, - 3.3189311920374234, - 3.3131803519323673, - 3.305185059152355, - 2.9081399155558496, - 2.8966383000273686, - 2.883001641686951, - 2.867268833073739, - 2.84982804789817, - 2.830620608377134, - 2.8091416715414304, - 2.785813302646324, - 2.761030878347238, - 2.733970128176873, - 2.7049794651959083, - 2.674503734287401, - 2.6422189125279116, - 2.6078949434761394, - 2.5720441013126436, - 2.5349775373957852, - 2.4957499760151016, - 2.4549745045387454, - 2.4132209664877444, - 2.3698550311763085, - 2.325153382873612, - 2.2797576234981873, - 2.2336703462449914, - 2.18642176921664, - 2.138822254441661, - 2.0914570423484338, - 2.0434000085100847, - 1.9953482367358253, - 1.9480549519300265, - 1.901136698346554, - 1.8545310023906283, - 1.8089938802209193, - 1.76482029632194, - 1.7207688136228858, - 1.6775616012625412, - 1.6356112011191788, - 1.5938918477373794, - 1.5523599446188057, - 1.5114749249415134, - 1.4710082051883198, - 1.4300999917457022, - 1.389311908236057, - 1.3491203138037353, - 1.3081872984513727, - 1.2670787749529222, - 1.226384268320831, - 1.1855342477726802, - 1.144339160854757, - 1.1033811657999237, - 1.0628077802771927, - 1.0214145272412263, - 0.9797372320556915, - 0.9381165310716522, - 0.8953436000678271, - 0.8510818846531565, - 0.8056236866021388, - 0.7586504456543244, - 0.709122701019607, - 0.6575795824694918, - 0.6045247980364393, - 0.5486755207328853, - 0.4904014551912516, - 0.430275415089228, - 0.36787897877590703, - 0.30281981612354786, - 0.23559829389413126, - 0.16657047531072755, - 0.09454446910891268, - 0.019992404468229627, - -0.05663643991909831, - -0.13609624921499144, - -0.21853632491665634, - -0.3034651634272941, - -0.39071888845846714, - -0.4806081459712708, - -0.5723204999985844, - -0.6650144906597651, - -0.7590001381932086, - -0.8535231080947828, - -0.9476759479292595, - -1.0411757672514363, - -1.1337429656212414, - -1.2245270549743368, - -1.312893489783828, - -1.3989846038588352, - -1.4821221132625744, - -1.5617268291143152, - -1.6377701687787052, - -1.7099210242490688, - -1.7777264809040179, - -1.9391307328570129, - -1.9878135191525226, - -2.031504794948143, - -2.070103233730947, - -2.1035085115975987, - -2.13176873104277, - -2.1550004771376847, - -2.1732464917697256, - -2.186581560022987, - -2.1952585251095305, - -2.239276624357472, - -2.2392551840291337, - -2.2352251538445778, - -2.227480983660944, - -2.216348905374138, - -2.2021007879255245, - -2.1849468328945227, - -2.165266944295123, - -2.1434511760893264, - -2.1195891768031556, - -2.094043220617501, - -2.06721878524934, - -2.039313589619352, - -2.010504320590352, - -1.9812101715477148, - -1.9517830607225606, - -1.9221463573055808, - -1.8926564088418685, - -1.8636586656390641, - -1.8350196386722668, - -1.806825537843198, - -1.7793466615611424, - -1.7526086630541404, - -1.726277704171353, - -1.7005469945016538, - -1.6756296893617162, - -1.6509156881282938, - -1.6265495420774345, - -1.6028102306472134, - -1.579431425653109, - -1.5561404005810615, - -1.5332177089476493, - -1.510827634325638, - -1.4882293635071537, - -1.4657925617850018, - -1.4438658719794397, - -1.4218281929735221, - -1.3995408319635652, - -1.3771938556428183, - -1.354535903449629, - -1.3307698088857014, - -1.3061657966209048, - -1.2809976294828274, - -1.254216884608407, - -1.2260313142224049, - -1.1968018243324743, - -1.1661278872683978, - -1.133661116915793, - -1.099830339926186, - -1.0649072042584538, - -1.0279808693516934, - -0.9895672089830813, - -0.9501717251248214, - -0.909236298162503, - -0.8668321749996065, - -0.8234818852991329, - -0.7793164124480474, - -0.7339882128741535, - -0.6881419158351645, - -0.6423914867481929, - -0.5962188861090498, - -0.5501443671429296, - -0.5047744242975358, - -0.4600924143598808, - -0.41609348795409407, - -0.3733120207601616, - -0.33215144742980773, - -0.29209005328633403, - -0.25366891076518894, - -0.2173984737582247, - -0.1829654448400578, - -0.1504746581738033, - -0.12029360236325012, - -0.09229042713349801, - -0.06586825973142005, - -0.041258182393651456, - -0.018668537604105088, - 0.0028293319751184543, - 0.023126808540817445, - 0.04200262146910322, - 0.059917839500716455, - 0.07687629920248049, - 0.09200904824108941, - 0.10527312425865193, - 0.1181335592773751, - 0.12989237452551125, - 0.14035693050756215, - 0.15188282790006022, - 0.16553257410233327, - 0.18122518591320175, - 0.19970496569245097, - 0.22275518262193347, - 0.2499084261583227, - 0.28060277254659793, - 0.31768163933280713, - 0.3607850101829991, - 0.40902781010755507, - 0.46294373234119623, - 0.5233279626974858, - 0.5893126002700556, - 0.5394253941775011, - 0.615754848672751, - 0.6969142698293426, - 0.7816108878055655, - 0.8698248748598074, - 0.9610673948067253, - 1.0540184814626465, - 1.147520727831376, - 1.2415175064985375, - 1.334560972125472, - 1.4247865153987227, - 1.6618607870332869, - 1.7984150058694695, - 1.9455465259112117, - 1.9881314449598677, - 2.023916035529673, - 2.0538352060520078, - 2.078277646149579, - 2.0972289519391047, - 2.11118805216029, - 2.1212518865050494, - 2.1276240634171693, - 2.1306262339004802, - 2.1316121055178745, - 2.1310705686328517, - 2.129465424656158, - 2.127720008157337, - 2.12669485836727, - 2.12683967047298, - 2.1286256099540024, - 2.132955716930572, - 2.140045979210925, - 2.1499227282941473, - 2.162687241949347, - 2.17835385366548, - 2.1968660218352376, - 2.2181128223583704, - 2.2419633597495205, - 2.268257439266718, - 2.2967466760462583, - 2.3271034245957987, - 2.359032934051658, - 2.392227222871357, - 2.4262008964081403, - 2.4604688403666626, - 2.4945626970749855, - 2.527978111670608, - 2.559916468588276, - 2.5899529951923186, - 2.617725183004322, - 2.642529545537661, - 2.6639527552445963, - 2.6817983362886713, - 2.695685789308147, - 2.705011743547357, - 2.709789568020414, - 2.7100984381893687, - 2.7052675615100914, - 2.6954198308329333, - 2.6808347797870993, - 2.661308035736387, - 2.6367136813029073, - 2.6075146289847257, - 2.57409499314067, - 2.5359017319217148, - 2.4936372978193626, - 2.447958098697136, - 2.3985375011972314, - 2.3456596354388113, - 2.290074754039139, - 2.232067496351562, - 2.1713770408260324, - 2.108905776050926, - 2.045485851469256, - 1.9804187973125944, - 1.914427974000338, - 1.84848548282787, - 1.7824788825182982, - 1.7164682203833943, - 1.651452615677609, - 1.5881499507321755, - 1.5258851807334688, - 1.4657510105554221, - 1.4086609500657297, - 1.3540800759539922, - 1.3023528448852641, - 1.2541238098856566, - 1.209187075956159, - 1.166546470191221, - 1.1265761593086834, - 1.0895086953546014, - 1.053813832332503, - 1.0196286637937628, - 0.9871800777969029, - 0.9555987685481974, - 0.9235167087818025, - 0.890645862452884, - 0.8573043797149734, - 0.8225550426564892, - 0.787049498012458, - 0.6732672633312172, - 0.6364179518122324, - 0.5985114189377678, - 0.5599648302946182, - 0.520733538274913, - 0.480201041340821, - 0.4387618214355801, - 0.39673101308939546, - 0.3531024756100136, - 0.30788841349002233, - 0.2612248818735405, - 0.21260681431974354, - 0.16158648937144676, - 0.10848525667273094, - 0.05367637358506501, - -0.0032942809321873595, - -0.06184506700203068, - -0.12136401336295173, - -0.18184899157329742, - -0.2429255463356808, - -0.30390769436525295, - -0.3643523578481174, - -0.4241410797654667, - -0.48261852922897364, - -0.5392239923891102, - -0.5939752948950556, - -0.6465347979357733, - -0.6965594718583973, - -0.7438833799897013, - -0.788368425232593, - -0.8297324584034388, - -0.8677340346472487, - -0.9022970759195454, - -0.9332594303556765, - -0.9604563497497511, - -0.9838209410350093, - -1.0032517314295928, - -1.0187576165050094, - -1.0303690401263492, - -1.0379730734829258, - -1.041674434069487, - -1.0416024103160644, - -1.037596996072854, - -1.029821947457988, - -1.018509811983737, - -1.0036976426460058, - -0.9854532342800585, - -0.9037305481763866, - -0.8738467930174503, - -0.8417856077394992, - -0.8076373539900241, - -0.7716419677539564, - -0.7342013657431692, - -0.6957587405306294, - -0.6566521471266809, - -0.6172601468705773, - -0.5780467633631944, - -0.5394073940659306, - -0.5017341570587142, - -0.4654228248431094, - -0.43076340872686325, - -0.39794463289441023, - -0.36727225302159494, - -0.3390566855687874, - -0.31337532136884994, - -0.29036381112196136, - -0.27008368019086554, - -0.2525818492844471, - -0.23775435313138193, - -0.22551017736632936, - -0.21569888825394118, - -0.2080170944951346, - -0.2022877281775627, - -0.19831518329608946, - -0.1958347770099086, - -0.1945297513476111, - -0.19416791298184147, - -0.19461200061483547, - -0.19571962174034524, - -0.19729134018675287, - -0.19914614675314377, - -0.2011368810116891, - -0.2031179827283607, - -0.2049638555157614, - -0.20677547210278938, - -0.20865033991508353, - -0.21064580090500554, - -0.21294319566844147, - -0.21575619066471055, - -0.21905528358244564, - -0.22280792849446557, - -0.22725509521995435, - -0.23236063168429025, - -0.23805510886334508, - -0.24444307177593544, - -0.251595274679595, - -0.25939787517409213, - -0.26776644485082596, - -0.27683861488733097, - -0.2865117438674306, - -0.334325242932434, - -0.3451211046105842, - -0.35651504664043066, - -0.36838253704905766, - -0.3807014653444189, - -0.39356405759266616, - -0.40682065489423314, - -0.42032296686147236, - -0.4342650647138152, - -0.44856731167489755, - -0.4631819539539735, - -0.4782774919005298, - -0.4939928760971399, - -0.5102376275558621, - -0.5269591314329293, - -0.5444127346977343, - -0.562465699562428, - -0.5809675891808248, - -0.5999407154303048, - -0.619281920279852, - -0.6388036663684425, - -0.6583911398451213, - -0.6780075345373046, - -0.6974389433538158, - -0.7164820984783172, - -0.7350641194242037, - -0.7530377007091823, - -0.7703053061793653, - -0.7867756232713126, - -0.8024310603362657, - -0.8172725271408611, - -0.8312673947647129, - -0.844324891786863, - -0.8565125995015276, - -0.8678978007917809, - -0.878349371424455, - -0.8879094615329177, - -0.8966872057545803, - -0.9046615371651623, - -0.9117051625077931, - -0.9179723739591269, - -0.9235456972545223, - -0.9280146620287829, - -0.9315671874540451, - -0.9344219617646473, - -0.9364337009695646, - -0.9376091692425006, - -0.9382711848776926, - -0.9385174354167356, - -0.9380196873913281, - -0.937222555301493, - -0.9363186755259066, - -0.9349131082062316, - -0.9333181273285795, - -0.9317686129083359, - -0.9300389137582149, - -0.9279879153443754, - -0.9259063505992242, - -0.9238346103685288, - -0.9212647078185271, - -0.918587280250123, - -0.9158747350549811, - -0.912654525927204, - -0.9088143350134468, - -0.9046271414551318, - -0.9001093491466728, - -0.8943923486749102, - -0.8878234672570003, - -0.8806841342627904, - -0.8722369461213539, - -0.8623988329477286, - -0.8514834512985544, - -0.8393031333692961, - -0.8251212105226898, - -0.8092866048967972, - -0.7921479672467565, - -0.7727517287506626, - -0.7514412084750023, - -0.7286495169836702, - -0.7040067566484836, - -0.6772734073585602, - -0.6489854511255104, - -0.6194531029209304, - -0.5878142380940268, - -0.5546232923614981, - -0.5204138969985138, - -0.48455179221997674, - -0.4471542676284848, - -0.40878737784514907, - -0.3694827326240094, - -0.32866460025880506, - -0.286890028062423, - -0.2447205414030006, - -0.20120124494605948, - -0.15668923335942256, - -0.11163576594375264, - -0.06565480382499182, - -0.018452566013063713, - 0.029484171107712502, - 0.07786954564338125, - 0.09615893554544541, - 0.14674054503975972, - 0.1976756158295986, - 0.24952469875827504, - 0.3021958066891688, - 0.3551975077872713, - 0.40851740171435275, - 0.46266616232401864, - 0.5171910102083515, - 0.5717077930441922, - 0.6270372668648834, - 0.6828214500110098, - 0.738625251737695, - 0.794653765337825, - 0.8510740221631791, - 0.9075538459353967, - 0.9638211672536364, - 1.020416591133628, - 1.0769384740436123, - 1.1330735997440045, - 1.189128732266544, - 1.244983805977981, - 1.3002765386921982, - 1.3548804056376784, - 1.4090185590776916, - 1.4623761832491442, - 1.514628226103745, - 1.5658160510439947, - 1.6157031912244755, - 1.6640883471834025, - 1.710858532351795, - 1.755847043954895, - 1.7988833615154258, - 1.8398504293106854, - 1.8784970226893325, - 1.9148630645506546, - 1.948978938967397, - 1.9805047388115413, - 2.009413915329838, - 2.0358309576940465, - 2.0596456694105565, - 2.08064779176627, - 2.0992260404944276, - 2.115736594388466, - 2.1295122475140555, - 2.141094051295374, - 2.1509033173636225, - 2.1585627726092342, - 2.164119027568567, - 2.168147178369594, - 2.1708735534555355, - 2.171341939605329, - 2.1701868168524676, - 2.1678810460563405, - 2.163449928137667, - 2.1570512315085137, - 2.149293375307869, - 2.1398454058455476, - 2.1278260190969758, - 2.1140286268243553, - 2.0989939701886864, - 2.081208190560476, - 2.0615022538545373, - 2.0405987741911153, - 2.017823619354975, - 1.9928303551973199, - 1.9662940153850033, - 1.9384247599308362, - 1.907422401824462, - 1.8740189333240906, - 1.8388190140807046, - 1.8004848077771265, - 1.759049634871836, - 1.715263127121217, - 1.6689352957731522, - 1.6189210587517424, - 1.5660075743864317, - 1.5108738517386235, - 1.451690191487477, - 1.389029123153172, - 1.3236756992980598, - 1.2549657222837327, - 1.1823965213640986, - 1.106826900831949, - 1.0287781689160092, - 0.9466901115601333, - 0.8615319058350422, - 0.7742167793281987, - 0.6838537268361435, - 0.5907206658000964, - 0.49583637174224376, - 0.3994579027336955, - 0.3009920405463005, - 0.20148224964177167, - 0.10186895214861039, - 0.0012252424352070573, - -0.0997447425745702, - -0.2001477678682319, - -0.30001863157869413, - -0.39936039057511946, - -0.5146944131654603, - -0.6109001205929856, - -0.7057751936002019, - -0.7986599407649, - -0.8890532119646193, - -0.977156002085323, - -1.0627073627350336, - -1.1452409224773565, - -1.224563277034849, - -1.3006806319942736, - -1.3731457960575761, - -1.441694601706723, - -1.50647570776516, - -1.5672761184322546, - -1.6238040430661813, - -1.6759736630541442, - -1.7238523737528337, - -1.7675720160804838, - -1.8071999824572509, - -1.8426344720671253, - -1.8742251070903289, - -1.9024347238834403, - -1.9272088642037424, - -1.9489117292663314, - -1.9680405836719046, - -1.9847034275953512, - -1.9986993426081314, - -2.0105306551695485, - -2.020542335474589, - -2.0280007385774446, - -2.0332287913939693, - -2.0366834892705885, - -2.038067416657531, - -2.037095827851533, - -2.0342704204986006, - -2.029737908174592, - -2.0226326592790524, - -2.0134916539322734, - -2.002815705093242, - -1.9899835613341563, - -1.9751046493063267, - -1.9586471796811085, - -1.9404862619235124, - -1.9198146310484687, - -1.8969943010869559, - -1.8724427845912859, - -1.8449228701878868, - -1.8146603493108011, - -1.7821100295566805, - -1.7467928850497467, - -1.7082724536221006, - -1.6670202892985675, - -1.6233340086026924, - -1.5760267188575117, - -1.5255916599112742, - -1.4725134960873576, - -1.415770679333368, - -1.3551712519690722, - -1.2912913758256745, - -1.2241647676050587, - -1.1528541060194353, - -1.0779997434335045, - -1.0003758228231057, - -0.9187010959445191, - -0.8334728806128423, - -0.7455809534229846, - -0.6549629360362071, - -0.5615985046542896, - -0.4667349091480994, - -0.37143376354510316, - -0.27495407445557357, - -0.17848447468944434, - -0.08339110983540773, - 0.010647530488477282, - 0.10304508289806702, - 0.1924593961472259, - 0.27822626337563217, - 0.36069568657986667, - 0.43843892326039385, - 0.5105773228471541, - 0.5782846126871153, - 0.6412044264892753, - 0.6986941046587815, - 0.7511827367157822, - 0.7992075522848083, - 0.8424109426523382, - 0.8806338174558102 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -24149,1988 +1435,15 @@ }, "name": "Roll true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.09703415811726286, - 0.14431913612894973, - 0.19069303640248858, - 0.236564401988293, - 0.2818194452930425, - 0.3261906233908509, - 0.3699212280756172, - 0.4133522828046241, - 0.45621621187294054, - 0.49843698288496546, - 0.5406230125447148, - 0.5826080012598247, - 0.6241455783501779, - 0.6656706711416257, - 0.7073058786852058, - 0.7487777244917856, - 0.7900850111181676, - 0.831597910231492, - 0.8730480270777277, - 0.9142110957441407, - 0.9554036707445884, - 0.9964927462353519, - 1.0371916584674699, - 1.0775098247611883, - 1.1174848588320259, - 1.156694707484237, - 1.1947306194043417, - 1.231404233462488, - 1.2663580268213004, - 1.299243998572568, - 1.3298103250136661, - 1.3578302599434795, - 1.3830888554368292, - 1.4054045973013671, - 1.4245900315714124, - 1.4405733079881364, - 1.4533365755643213, - 1.4627314069839505, - 1.468791612902667, - 1.471667655368948, - 1.4713562524404702, - 1.4679328503399491, - 1.4619101827273866, - 1.4538499245027983, - 1.4440023678282332, - 1.4331243337518325, - 1.4219317443467676, - 1.4104097908266071, - 1.3987257535230666, - 1.3870488625812398, - 1.3750528769609474, - 1.361938152573302, - 1.3475808714829378, - 1.33187519601936, - 1.313952123601751, - 1.2936083942946826, - 1.271021400195749, - 1.2457777602980011, - 1.2172852503166451, - 1.1856858453369192, - 1.1509863477668636, - 1.1123530298438002, - 1.0698459849779565, - 1.0237876060341227, - 0.9736971993069304, - 0.9194544046337612, - 0.8615776403918309, - 0.8002837834085396, - 0.7352647169042607, - 0.6671725076283008, - 0.5966626285828793, - 0.5234877672539119, - 0.4481188742460151, - 0.3713567511077502, - 0.2934014584857325, - 0.21434215688349817, - 0.13501771538135582, - 0.05604282937739294, - -0.02274136543976358, - -0.10067177826419142, - -0.17699119852465575, - -0.2517297692147822, - -0.3246150441789508, - -0.3949868536414049, - -0.4625505349454318, - -0.5274872999289808, - -0.589309606079222, - -0.6476083372487731, - -0.7026823189125792, - -0.754368289624014, - -0.8023546054178874, - -0.8467704185524302, - -0.8878596111479619, - -0.9254240483526116, - -0.9594192772936387, - -0.9902856244504915, - -1.0179962170356984, - -1.0425009453900385, - -1.0641713840733826, - -1.0832334254660505, - -1.0997304566518658, - -1.1138651150167962, - -1.1260444291464322, - -1.1363821610539302, - -1.1449963952324709, - -1.152219830694717, - -1.158246033998002, - -1.1631824544156957, - -1.1673574486774672, - -1.1711263994866787, - -1.1746621501598251, - -1.1781753227061238, - -1.1820291441808333, - -1.1863780914476176, - -1.1913265351684121, - -1.1971166699019582, - -1.2038162956218608, - -1.211316134518102, - -1.2195680453686488, - -1.2286470686952677, - -1.2384014667690373, - -1.2486756557129999, - -1.259577074273299, - -1.271045891616139, - -1.2829046372034052, - -1.2950745617059598, - -1.3075066728052078, - -1.3200183120498648, - -1.3324287081537451, - -1.344721470830128, - -1.3567821813230247, - -1.3684884309866, - -1.3798661889427954, - -1.3909117716836115, - -1.401559083252856, - -1.4118007532626917, - -1.4217346512714921, - -1.4313222211327128, - -1.4405407849158043, - -1.4495393543773463, - -1.4583113435594282, - -1.4668160886860926, - -1.4751606735841483, - -1.4834435056705229, - -1.4915789621852982, - -1.4995522351646573, - -1.5075518418009386, - -1.5155461876993477, - -1.523454851921947, - -1.5313822168282833, - -1.5393582678861408, - -1.5472933381789873, - -1.55517934241055, - -1.5630535668336552, - -1.5708550595248743, - -1.5785332595637698, - -1.5861373585830507, - -1.5936119270439566, - -1.6008485687050822, - -1.6078086606805357, - -1.6145008359735638, - -1.6208476869525164, - -1.6268020748440235, - -1.6323308199791857, - -1.6373466387008824, - -1.6418628972272267, - -1.6458835504833205, - -1.6493165376808239, - -1.6521411899428535, - -1.6543277653531696, - -1.6558610505449243, - -1.6569095674624323, - -1.6576437473596457, - -1.6579942310398077, - -1.658103503635758, - -1.6580934632858253, - -1.657861275577154, - -1.6573789570375408, - -1.65680508379606, - -1.6561090977354864, - -1.655077462483506, - -1.6538289557104457, - -1.6524159120805786, - -1.6503423972580098, - -1.647391778929825, - -1.6436695970651007, - -1.638953095312804, - -1.6325894106283314, - -1.62467348682793, - -1.6152870492803306, - -1.6037361102091237, - -1.5899759120777406, - -1.5742270115418386, - -1.5561155129827093, - -1.5351809723982413, - -1.5117152151660014, - -1.4858138058307186, - -1.4568053846057427, - -1.4249480462468953, - -1.390627690376153, - -1.353379287773291, - -1.3131779428206136, - -1.2705057290056043, - -1.2254108670970547, - -1.1773584053630588, - -1.1268764259528248, - -1.074415566105934, - -1.0193727271079673, - -0.9620138973085048, - -0.9028934201698834, - -0.8417988570192051, - -0.7784432651215699, - -0.7135047408114303, - -0.6473686161318091, - -0.5793657223340456, - -0.5100735286553576, - -0.4402152420068173, - -0.3694152348656115, - -0.29783664292599993, - -0.22627373878417215, - -0.15491287588319497, - -0.08332054816389102, - 0.056493284789253445, - 0.12473075276297511, - 0.19180555844413624, - 0.25713317098954247, - 0.321076456611197, - 0.38403736446659964, - 0.4453634823222352, - 0.5048442172872077, - 0.5634279375057122, - 0.6206579619093917, - 0.6760179190313806, - 0.7302223606307754, - 0.7833434801618749, - 0.834798541683378, - 0.8846241182293798, - 0.933540431117202, - 0.9810262808761632, - 1.02665582416096, - 1.0712753102705128, - 1.1146612256126942, - 1.156387360609663, - 1.1968383645634668, - 1.236529866592757, - 1.275085966842022, - 1.3124514786049013, - 1.3494955365678096, - 1.3859932804278488, - 1.4217406172167055, - 1.4574415083234629, - 1.4931996707748696, - 1.5286925386302763, - 1.5640296828755518, - 1.5997944639495973, - 1.6357033790290376, - 1.6715328769414448, - 1.7077752815317597, - 1.7443027867673915, - 1.780810598918904, - 1.817439007131923, - 1.8543308416867919, - 1.8911644277531112, - 1.9277346910214126, - 1.9641712841541046, - 2.000180289024599, - 2.0354406710042716, - 2.06989077405861, - 2.10340318475482, - 2.1357636873221897, - 2.1668609471062585, - 2.1967786945470635, - 2.2255137068977997, - 2.25305895058964, - 2.2794413606017048, - 2.3048044525258113, - 2.329199888120834, - 2.3525427120608002, - 2.374846568137891, - 2.3962159317285736, - 2.416582437819717, - 2.4357725855587873, - 2.4539606512044223, - 2.4712527081743527, - 2.4874047405221256, - 2.502530739524002, - 2.5167616690815664, - 2.530022313014376, - 2.5421148577140795, - 2.553200634807144, - 2.563421957928874, - 2.572297792889501, - 2.579825194412006, - 2.5861846263215793, - 2.591093273883613, - 2.5942765655451323, - 2.5959651948992795, - 2.59618235722978, - 2.5944119928895, - 2.59089290046485, - 2.585865511930598, - 2.5788625843922617, - 2.5697986668257404, - 2.558999127306807, - 2.5464298704648205, - 2.531615782316294, - 2.5149267905148456, - 2.4966353041611744, - 2.476155922295199, - 2.4536390105818247, - 2.429494049053041, - 2.403494636308795, - 2.3753496133852012, - 2.34552357415238, - 2.3142199233791203, - 2.280789017604689, - 2.245603497726409, - 2.2091417597205587, - 2.170855255502263, - 2.130749740357687, - 2.089413953262799, - 2.0469189736500057, - 2.002785634402013, - 1.95768100439138, - 1.912069179538877, - 1.8652971605674111, - 1.817830883250497, - 1.7703405650321757, - 1.7226222513188423, - 1.674529117026091, - 1.6268753824710773, - 1.5800040383166145, - 1.5332131268547031, - 1.4871705294180255, - 1.4424803287151364, - 1.398338825221345, - 1.3547407109460234, - 1.3122303210219595, - 1.2706113445951885, - 1.2289895675033962, - 1.1878181107530967, - 1.1473866203969496, - 1.1066660988865202, - 1.0658221984180545, - 1.0253714102630036, - 0.9848417485760967, - 0.9438034879993247, - 0.9029234002270737, - 0.8623929186240558, - 0.8213306278747232, - 0.7802782429289613, - 0.7396425517945888, - 0.6985973773728466, - 0.6570555685609307, - 0.6154364976711448, - 0.5734115740008917, - 0.529844403540083, - 0.484936665426979, - 0.43887676237136997, - 0.39049083854368344, - 0.3398498992548732, - 0.2874755954822348, - 0.2329682060328557, - 0.1757739345005162, - 0.11647490567512808, - 0.05533430904542097, - -0.008533423328193086, - -0.0747881278688663, - -0.14292434956134464, - -0.21360505742419392, - -0.28701726225305607, - -0.36270669039146014, - -0.4407076542580665, - -0.5218075022411829, - -0.6056315392431484, - -0.6917122906360901, - -0.7804517141590304, - -0.8713792667347277, - -0.963668879792213, - -1.0570566608800809, - -1.1513850365619092, - -1.2457499976523916, - -1.3394390366641529, - -1.4324725161672371, - -1.5240999741042185, - -1.6135411168795002, - -1.700693396148376, - -1.7851875095806269, - -1.8664051096196552, - -1.943999302327586, - -2.017922461606988, - -2.0876955755557476, - -2.2696634326711966, - -2.3206516269174933, - -2.3665683198016287, - -2.407453336942706, - -2.4431866870549395, - -2.473722961188284, - -2.499202092463587, - -2.5196752431747615, - -2.535195875281964, - -2.5459424862756737, - -2.552138738233578, - -2.553998126093542, - -2.551742004559049, - -2.5456349456299416, - -2.5359917942774177, - -2.523133105295863, - -2.5072487453780123, - -2.4886669957353376, - -2.467773269666552, - -2.4448087627243975, - -2.4199814908460953, - -2.393692922036567, - -2.3662883186008448, - -2.3378483335322584, - -2.308733447902339, - -2.279349884406522, - -2.249772749440294, - -2.2201824940622945, - -2.1909301606458342, - -2.1621684604177256, - -2.1337465555929356, - -2.1059192932253064, - -2.0789044919421356, - -2.0523728622359996, - -2.0263505335811303, - -2.0010466181241062, - -1.976262513274148, - -1.95171405371028, - -1.9276682239988134, - -1.9042346153717256, - -1.8808812646619195, - -1.8577674140517484, - -1.8351656076076166, - -1.81263111766253, - -1.7900900979178749, - -1.767906027972196, - -1.7460286825316156, - -1.7238371316670449, - -1.7015011384285879, - -1.6791201172894774, - -1.6558310385788633, - -1.6315818537078872, - -1.6066456695699418, - -1.5806298265738323, - -1.5530475955272272, - -1.5242592484579773, - -1.4943961510514654, - -1.4627021260223156, - -1.4294514005786605, - -1.3950559797567934, - -1.358990704242275, - -1.3212053970240494, - -1.282212753278786, - -1.2420889577577896, - -1.2003049881967138, - -1.1573384590688816, - -1.1136402564149568, - -1.068782631767784, - -1.0231197614243779, - -0.9772791322577693, - -0.9313013079146086, - -0.8851332383552742, - -0.8394008589557396, - -0.7945107926872679, - -0.7501614309800125, - -0.7067923912490205, - -0.6649145303842002, - -0.6243176011446121, - -0.5851167393277374, - -0.5478421922667894, - -0.5126625505907364, - -0.47926735029818684, - -0.448024117819632, - -0.41915067942242923, - -0.3920025327263979, - -0.3665611484626932, - -0.34305201825507275, - -0.3211021077478496, - -0.30024912594004866, - -0.2807186432592772, - -0.2625231730424588, - -0.24505132236341448, - -0.22905612559231425, - -0.21503395878392773, - -0.20196004555544708, - -0.1896263739561782, - -0.17860799025470092, - -0.16790581770081225, - -0.15520947837190072, - -0.14042720841169762, - -0.12350082240773348, - -0.10247373122782645, - -0.07712516048313323, - -0.04797559463855964, - -0.01389041015567273, - 0.026568544726546028, - 0.07257393287533431, - 0.12362777311301595, - 0.18115683471156896, - 0.2447006660828016, - 0.3132304493502256, - 0.3870306227592787, - 0.4661037451573822, - 0.5493280978722137, - 0.6358243890476163, - 0.7258002786111722, - 0.8181034847552395, - 0.91129617615319, - 1.0051545856681368, - 1.0987579347182677, - 1.190399008107547, - 1.4467754622869586, - 1.5933904803680468, - 1.7679167962821967, - 1.8134337076454239, - 1.8522760225195085, - 1.8846665190317908, - 1.9115573346723116, - 1.932960090466401, - 1.9489907483149949, - 1.9607782718092266, - 1.968773158859823, - 1.9732460222479966, - 1.9750481480731155, - 1.9751446664793324, - 1.9739647667664466, - 1.972129338308364, - 1.9707332163030282, - 1.9703090353066064, - 1.9712907602900176, - 1.9744434963314668, - 1.9802863317382438, - 1.98890805611255, - 2.00035942370061, - 2.014725029494775, - 2.031967457493512, - 2.0520019643904237, - 2.0746986385308444, - 2.099918042819503, - 2.127451481377522, - 2.157003773436675, - 2.1882598793292947, - 2.2209261476869697, - 2.254613939102329, - 2.2887966906730672, - 2.3230230377580727, - 2.356812107595104, - 2.389465650870311, - 2.420404768200955, - 2.4492371674542683, - 2.4754727232669245, - 2.49844848484969, - 2.5179318998497418, - 2.533703019162998, - 2.5450979159078915, - 2.5519312347337766, - 2.554255878777089, - 2.5517769516586797, - 2.5441785792092864, - 2.531713435397854, - 2.5145240786976393, - 2.4921853815366672, - 2.465030678949441, - 2.43353325053681, - 2.397449405128169, - 2.356972617130034, - 2.312787530408193, - 2.2651557896498717, - 2.2137853045528346, - 2.159367490750052, - 2.1025702126923833, - 2.0430165825772013, - 1.9812899000604807, - 1.918242073729103, - 1.853936544407886, - 1.7882938217833875, - 1.7222739236234113, - 1.656474218867317, - 1.590384315139539, - 1.5248639789686738, - 1.460807991327741, - 1.397992479302501, - 1.3368273221383764, - 1.2783126746545896, - 1.2227427169558094, - 1.1696840285380274, - 1.1198591913201912, - 1.073648179439964, - 1.0299572494902582, - 0.9887792193123713, - 0.95041339204818, - 0.9141765755791811, - 0.8793124153549793, - 0.8460945603497324, - 0.814376188109066, - 0.7826349820703241, - 0.7501029352793466, - 0.7170277165878928, - 0.6828676882252209, - 0.6476791847131811, - 0.6119861039686988, - 0.5757536471593225, - 0.5383041343903904, - 0.5000293563540222, - 0.4612494175714878, - 0.42128168919657244, - 0.3802412648325351, - 0.33846276057938873, - 0.2956153496800551, - 0.2511208454156617, - 0.20510644631311892, - 0.15753229562538285, - 0.10758512066989247, - 0.05539556601458124, - 0.00136856972828978, - -0.05467070504174972, - -0.11255496582469565, - -0.1716873254032536, - -0.2316935338898949, - -0.2925581027744778, - -0.3536404691475357, - -0.4143011343405228, - -0.4744426853014945, - -0.533566131408445, - -0.5910548505351726, - -0.6466590131063912, - -0.7002404178878102, - -0.751440474119938, - -0.7999700979800374, - -0.84576594531742, - -0.8885669960244831, - -0.9281017609160831, - -0.9642369960534874, - -0.9968454671447294, - -1.0257590724455803, - -1.0508673636074035, - -1.0720859099959383, - -1.0893669061265066, - -1.1027599919301898, - -1.11217840214343, - -1.1176385505431494, - -1.1192733943867748, - -1.1170575539817267, - -1.1109778080213142, - -1.1012580673607975, - -1.0880644515925233, - -1.0713629839783925, - -1.0024554528024356, - -0.973742993582346, - -0.9426477252292887, - -0.909473791278775, - -0.8743001912152736, - -0.837497455435909, - -0.7994991878374028, - -0.7606821981355946, - -0.7214102245520309, - -0.6820919083008125, - -0.6431872154242808, - -0.6050679399968348, - -0.5681334862231272, - -0.5327552410984187, - -0.4991026431566342, - -0.4674613866540529, - -0.43813917885542475, - -0.4113252402403891, - -0.3871217022193707, - -0.36562822627616504, - -0.3468956778358435, - -0.3308901404771981, - -0.31750662445858474, - -0.3066424130934038, - -0.29803037522950665, - -0.2914515304704692, - -0.2867175350858501, - -0.283604811311243, - -0.2818034292591428, - -0.28104526875407376, - -0.2811359254131377, - -0.2819713411061168, - -0.28335863726922794, - -0.28510781751119224, - -0.28705786153598356, - -0.2890617847450287, - -0.2909843992271897, - -0.292796760470189, - -0.2946451409880476, - -0.2965856958415004, - -0.2987146050028135, - -0.30130307665835865, - -0.30439067261213226, - -0.3079467822374592, - -0.3120765334657644, - -0.31689538060108724, - -0.32233416068134024, - -0.32837597263205437, - -0.3351967291618657, - -0.34271870210054556, - -0.3508316799865942, - -0.3595981960542125, - -0.36901123541459, - -0.37896896857511925, - -0.3894606035668923, - -0.4005965241912119, - -0.41226179369298327, - -0.4243532899748316, - -0.43698382276227005, - -0.4500756082373726, - -0.4634794788211357, - -0.4772190220093522, - -0.4913635357066113, - -0.5058413509225321, - -0.5206702756306087, - -0.5361138484494841, - -0.5521274884197828, - -0.5686237777714012, - -0.5857577380811849, - -0.6035518817336173, - -0.6218653696631495, - -0.6406100941828856, - -0.659800534340024, - -0.6792552747998506, - -0.6988038382146252, - -0.7184225568441782, - -0.737955175949673, - -0.7571895097284603, - -0.7759848575128908, - -0.7942410049514853, - -0.8118345307816259, - -0.8286668994557677, - -0.844688891723924, - -0.859896363370119, - -0.8742799916387144, - -0.8877539330973553, - -0.9003281972430622, - -0.9120697773764843, - -0.9229651872689592, - -0.9329171098929757, - -0.942039736937355, - -0.9504134676894307, - -0.9578607953132672, - -0.9644725591580481, - -0.9703534104612357, - -0.9753249090997379, - -0.9792751199489329, - -0.9824271999449055, - -0.9848933846717318, - -0.9864137147848087, - -0.9872917274658904, - -0.9877499440022249, - -0.9875450764404547, - -0.9868610277396481, - -0.9859961072145343, - -0.9848645561011485, - -0.9833265159512707, - -0.9817518860359504, - -0.9801986991064965, - -0.9782489964427484, - -0.9761766082973031, - -0.974102305258596, - -0.971714631438825, - -0.9690786080249908, - -0.9663788705851358, - -0.963505383150704, - -0.9599146769853839, - -0.9558717416408481, - -0.9515527409724636, - -0.9463401398924498, - -0.9401320490881744, - -0.9332313611133806, - -0.9254959730258044, - -0.9162618097337585, - -0.9058083555248483, - -0.8943402346862583, - -0.8810343032179349, - -0.8659186402743798, - -0.8493421792229512, - -0.830991297407802, - -0.8105101900820114, - -0.7883560272175639, - -0.7647113204401825, - -0.738874740170059, - -0.7112530623817279, - -0.6823219805515786, - -0.6515861767049617, - -0.6190562601659334, - -0.585275416074486, - -0.5502848150810135, - -0.513535419557107, - -0.47557221601743355, - -0.4368332696082033, - -0.3966546777107339, - -0.355276226040601, - -0.31324907877262276, - -0.2703779814570081, - -0.22628521266290075, - -0.18145273422016636, - -0.13606614358467276, - -0.08938438819736635, - -0.04175353470788729, - 0.006379260898309827, - 0.055544493450338274, - 0.10578047534771157, - 0.15658436658548508, - 0.20789958998070102, - 0.2602328516326893, - 0.31311176865805174, - 0.36616492054188626, - 0.41996824226999335, - 0.4743466300376946, - 0.5288806873543828, - 0.5838126065265138, - 0.6394171004110928, - 0.6952323425580325, - 0.7510319371787382, - 0.8072947162094577, - 0.8637638339930865, - 0.9200966990000858, - 0.9765647630946312, - 1.0331371278524906, - 1.0894503202588408, - 1.1454668262802405, - 1.2014289286585247, - 1.2569893303285573, - 1.3118443360953491, - 1.366199805023792, - 1.4199218776630107, - 1.4726841617892574, - 1.5243443870906375, - 1.574824488755066, - 1.623881405381396, - 1.6713716086293937, - 1.7171662580771851, - 1.761079136395845, - 1.8029808331777804, - 1.8426624350551606, - 1.8800342220233812, - 1.9151506302770605, - 1.947877205407837, - 1.977943486263788, - 2.005461638138398, - 2.030512426647098, - 2.0527412652449373, - 2.072366545956006, - 2.0897757464302433, - 2.1047654272863765, - 2.117292425240952, - 2.127852729609903, - 2.1366155786856753, - 2.1430642190040348, - 2.1477390626694013, - 2.1510912900092913, - 2.152502261205906, - 2.152033971613225, - 2.150206495466942, - 2.1468848434036616, - 2.141310888324644, - 2.1341215057249476, - 2.1256471801040746, - 2.1147072587934614, - 2.101659399472119, - 2.087147689225858, - 2.070611840642596, - 2.051699457869628, - 2.0312841520523675, - 2.0096087155073072, - 1.9855469876622445, - 1.9596637295941874, - 1.9324882367183398, - 1.9028326716907846, - 1.8704605978881228, - 1.8360286384999864, - 1.7993368997378707, - 1.759234746124577, - 1.716456423126763, - 1.6715215614528047, - 1.6231016176939428, - 1.5714414325775474, - 1.5172612185789558, - 1.4599640429027327, - 1.3988089074325638, - 1.3346150443608655, - 1.2677106987240667, - 1.1968127770580332, - 1.1225360635099466, - 1.0456730017534392, - 0.9653313721323369, - 0.8814883081855412, - 0.7950825525316555, - 0.7062893676630481, - 0.6143282685698662, - 0.5201626520245015, - 0.42463830067917896, - 0.32703431091096724, - 0.22792532430242168, - 0.12829860805036725, - 0.028142547664044858, - -0.07273914154036214, - -0.17345534426343612, - -0.27340340891114345, - -0.37303800763793327, - -0.47172785109023374, - -0.5687560165221449, - -0.6642779503817244, - -0.7580904445720509, - -0.8496376970465803, - -0.938695209162586, - -1.0254275670225832, - -1.1093350294558166, - -1.1900564873313852, - -1.26764662401905, - -1.3417734138300939, - -1.4120884733225985, - -1.4785573423814586, - -1.5411595462120884, - -1.5996158074257645, - -1.6537447017776856, - -1.7035349540418145, - -1.7491077214522073, - -1.790574092817526, - -1.8278548923996019, - -1.861130173781427, - -1.8908231801745556, - -1.9171653689152328, - -1.9401898470045438, - -1.9604246375693328, - -1.978266679964984, - -1.9934149493233422, - -2.0061645488278335, - -2.016970376857161, - -2.025577967910301, - -2.0317740851329003, - -2.0359686468420537, - -2.0384315046756205, - -2.0384723568814933, - -2.036448853782056, - -2.0327274321206987, - -2.026729967607288, - -2.018455906050791, - -2.008421093592638, - -1.9966813476682062, - -1.9826864662251569, - -1.9669006868784762, - -1.9496547656546659, - -1.930083428624672, - -1.9082001935466117, - -1.8843933306728313, - -1.8582658334659683, - -1.8292009120718318, - -1.797646462903338, - -1.763768446077254, - -1.726654232147661, - -1.6865959521515745, - -1.644053369751746, - -1.598340996604465, - -1.5492760315782248, - -1.4973605680818214, - -1.4424582027696842, - -1.3835565207152076, - -1.3211101841953423, - -1.2556254789241788, - -1.1861552462194203, - -1.112851343209356, - -1.0364142733336374, - -0.9566257373901274, - -0.8729425163449073, - -0.7861781772027684, - -0.6969947997984506, - -0.6047788512379473, - -0.5104974065324667, - -0.4153975636485861, - -0.3193545080436504, - -0.22279239665173753, - -0.12698301798022094, - -0.03262133392203671, - 0.06060882384054569, - 0.15146490181231265, - 0.23873680220598315, - 0.3227786297582026, - 0.40271334102849554, - 0.47742989891995985, - 0.5470667661589086, - 0.6121776945075447, - 0.6721425649737741, - 0.7266801340350078, - 0.7767297656396476, - 0.8221212910626896, - 0.8625234269042183 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" } ], @@ -26357,57 +1670,6 @@ "type": "heatmap" } ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], "histogram": [ { "marker": { @@ -26608,6 +1870,17 @@ "type": "scattergl" } ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], "scattermapbox": [ { "marker": { @@ -27083,7 +2356,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 10, "id": "9d0e25cc", "metadata": { "tags": [ @@ -27105,1987 +2378,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -1.4086429568352088, - -1.408226139474844, - -1.4024903159982174, - -1.3920348913159717, - -1.377458853133389, - -1.3582913020164344, - -1.335547268592933, - -1.3098537392812282, - -1.2800899459898738, - -1.247992022110453, - -1.214048125422103, - -1.176560987407982, - -1.1377561568519239, - -1.097887078929119, - -1.057142231885771, - -1.013434633485015, - -0.9691127921969585, - -0.924279791207379, - -0.8767938969059257, - -0.828960875912969, - -0.780821227351904, - -0.7323724217881742, - -0.6815830360589479, - -0.6305545980844482, - -0.5792603062662842, - -0.5260107429129699, - -0.4725944058361431, - -0.4190288785249414, - -0.3640347773587369, - -0.30892817587068166, - -0.25372168555119856, - -0.19837308227979022, - -0.14218614973773835, - -0.08594349235740317, - -0.029539736676579942, - 0.027034859534958322, - 0.08367568101497103, - 0.14045883876506116, - 0.19746775482561807, - 0.25420302978657583, - 0.3112933432461431, - 0.36880397959033084, - 0.42569759471824975, - 0.48306322546859404, - 0.5408120304391204, - 0.5967639334391448, - 0.6532018098068968, - 0.7098434598791914, - 0.7666659630356518, - 0.8210520639437768, - 0.8755551873436405, - 0.9300418613419787, - 0.9811757424887046, - 1.0325535904697016, - 1.084000231879402, - 1.1355167398753419, - 1.1834558067646825, - 1.2318837704478, - 1.2807652118805448, - 1.3253144265492685, - 1.3706424193475577, - 1.4166336593355928, - 1.4576820769370014, - 1.4997535460143396, - 1.5427241742884856, - 1.586614662341931, - 1.6249346359350545, - 1.6646716513722248, - 1.7058213605707069, - 1.7411259748249575, - 1.7783205668451836, - 1.8176106118393296, - 1.8588771928989969, - 1.894798690761105, - 1.9332842179954346, - 1.974182679703135, - 2.0102062064595256, - 2.049062048414202, - 2.0906914479852285, - 2.127868620008772, - 2.168083453231974, - 2.2113194613034004, - 2.2575771515708327, - 2.2998931783516148, - 2.3454366507793276, - 2.3941987036445944, - 2.439224061208362, - 2.4875715131063876, - 2.5391690317500033, - 2.593962533168465, - 2.6452365031376166, - 2.699810882421856, - 2.757636822248334, - 2.8118739796791514, - 2.869345133451906, - 2.9300145307448866, - 2.9869666998929145, - 3.0468754764968335, - 3.109891586384922, - 3.176098083114247, - 3.238429233773929, - 0.9434940700510852, - 0.9851084349376169, - 1.0248750173435566, - 1.066879736140486, - 1.111061552608552, - 1.1575509531323704, - 1.2022631313504752, - 1.2489954429215877, - 1.2976484284349667, - 1.3444398266517257, - 1.3929678302680557, - 1.4430056674037677, - 1.4907643553591297, - 1.539914338964821, - 1.5901828046091144, - 1.6411961923276324, - 1.6897007689599555, - 1.738885947699449, - 1.7883947882177722, - 1.8352575460960296, - 1.882320975579522, - 1.929476359273926, - 1.976395937706458, - 2.0208312591119233, - 2.065038862821171, - 2.108801548053221, - 2.150296539548193, - 2.191520411313729, - 2.232353392898043, - 2.2712457629488085, - 2.3099487505938203, - 2.348345264896886, - 2.3863542865806235, - 2.42302624158935, - 2.4595778694784505, - 2.4958897124652366, - 2.5311982415268512, - 2.5664798864291196, - 2.6016780334907086, - 2.6367387546342376, - 2.6713346590949962, - 2.705970603676505, - 2.740579212563096, - 2.775108465669311, - 2.809731375616948, - 2.8444260988676477, - 2.8795064007864197, - 2.9147452318078435, - 2.950178468782258, - 2.9857099555854956, - 3.0221661585813324, - 3.0587980553751053, - 3.095579685671167, - 3.133621596227219, - 3.171835929783987, - 3.2101725058431425, - 3.2485528501562775, - 3.288473695756479, - 3.328504632878408, - 3.3686112772652597, - 3.4102807266028625, - 3.4517113276464704, - 3.4929533889009274, - 3.5356199518873415, - 3.577844620489188, - 3.619748188425558, - 3.6612032306590203, - 3.7039966266546767, - 3.7462130353393883, - 3.788027843789746, - 3.8309947267358737, - 3.8731386753655492, - 3.9147897343827713, - 3.9561258089742846, - 3.9985618025662006, - 4.040643223096112, - 4.082518115507174, - 4.1257520832990595, - 4.1687375746103115, - 4.211562903726886, - 4.255841207571569, - 4.299695907459659, - 4.343269431375442, - 4.386561831168821, - 4.430808876397056, - 4.47456507109376, - 4.517880715482347, - 4.562009886528731, - 4.605570965487763, - 4.648635801915722, - 4.691239082936757, - 4.734406839794388, - 4.776990708937108, - 4.8190265091841855, - 4.8614841699219316, - 4.903280365659278, - 4.944452906060176, - 4.98584883959648, - 5.026539564138345, - 5.06658609548734, - -0.23192234858903937, - -0.21982714663569025, - -0.2079531048773826, - -0.1962865833975984, - -0.185051444122192, - -0.17399534562979468, - -0.16304912694729135, - -0.15216923389435033, - -0.14166369573981497, - -0.13113733882019973, - -0.12056811325014527, - -0.1103508432433351, - -0.10003605640364066, - -0.08958850877121405, - -0.0795193130342251, - -0.06921850262641316, - -0.05863866439822685, - -0.047755160746338454, - -0.03702278487226174, - -0.025756094367544335, - -0.0024392374274833095, - 0.009548635993220422, - 0.021844564985033177, - 0.03443135303687672, - 0.046793402429870845, - 0.05945877856381099, - 0.07241735417442952, - 0.08502158590210485, - 0.09790256996778846, - 0.11105656056071256, - 0.123760886558272, - 0.1366911369918209, - 0.14985352275746155, - 0.16320550202481288, - 0.17597512066367127, - 0.18896541561458102, - 0.20216314926166667, - 0.21484564003997875, - 0.22775314574342387, - 0.24093703954623447, - 0.2543956141783581, - 0.2672195118100511, - 0.28031094156318614, - 0.2936349415831785, - 0.30626540183338813, - 0.3191340335153625, - 0.33212891063868266, - 0.34416398942618587, - 0.3561586749045009, - 0.3681507723408548, - 0.3801359839656926, - 0.3912179627798782, - 0.40226828829214334, - 0.41330145781964367, - 0.42354746330824344, - 0.4337974426237561, - 0.4440955237956481, - 0.4544829440099156, - 0.4641913949866181, - 0.47397227769946904, - 0.4838017949769755, - 0.4930672690518523, - 0.502435614754277, - 0.5119096621605599, - 0.5208638975077085, - 0.5299385569076116, - 0.5391609277642466, - 0.5484571622082588, - 0.5572387440331616, - 0.5660046979107358, - 0.5747529806924292, - 0.5831079215305053, - 0.5914831157243841, - 0.5998136035081556, - 0.6081256537734236, - 0.6160718462956551, - 0.6240844963767032, - 0.6321257789440788, - 0.639925142816542, - 0.6477054871927219, - 0.6555549817366639, - 0.6630918148100573, - 0.6706138021771326, - 0.6781465465784691, - 0.6856857289215026, - 0.6929040044235881, - 0.7001113275665674, - 0.7072868017763407, - 0.7141907587037255, - 0.7210712183403065, - 0.7278922655805116, - 0.734707415679694, - 0.7413109525200343, - 0.7479253286033694, - 0.7545653645101731, - 0.7610678737373502, - 0.7675842877012737, - 0.7741560739054254, - 0.7807411963179192, - 0.7873872584805484, - -1.0795404468911878, - -1.0786093689190304, - -1.0773778233069407, - -1.076092512439056, - -1.0747187989704132, - -1.0728483323204505, - -1.070895601669586, - -1.0688381127841335, - -1.0666503648099768, - -1.0637521058129222, - -1.0607173264638419, - -1.05750194563577, - -1.0532850055682874, - -1.0489090544521884, - -1.0443140541055729, - -1.0383734658806338, - -1.0323000085262013, - -1.0260975473739247, - -1.019777467527879, - -1.0119078722712984, - -1.0039924687708377, - -0.9960639435561485, - -0.9864557700997081, - -0.976965742665082, - -0.967592661109109, - -0.958320594999811, - -0.9472641074718879, - -0.9364780669797577, - -0.9258993898725774, - -0.9131889913122995, - -0.9009155957119075, - -0.8890490317334645, - -0.8745935177017201, - -0.8607082041366074, - -0.8473325821166902, - -0.8344794290069331, - -0.819153554413361, - -0.8045001089233543, - -0.790532130702412, - -0.7740694913130557, - -0.7584521922545837, - -0.7436698553409558, - -0.7297661875735806, - -0.7135093080885735, - -0.6982885899727198, - -0.6841157194318159, - -0.6676556460491487, - -0.6523275391129337, - -0.6382398562180418, - -0.622035152066976, - -0.6070695178088523, - -0.5933277386701892, - -0.5808497576256737, - -0.5663736200875336, - -0.5533564585377675, - -0.5416804583757493, - -0.5280674113936186, - -0.5158037072655417, - -0.5048158923417654, - -0.4950605566869746, - -0.4833912031387826, - -0.47300249141831174, - -0.46381937689104125, - -0.4526371060390382, - -0.4427148695388492, - -0.4339437736751579, - -0.42304160240296595, - -0.41328821358879964, - -0.4045673948036015, - -0.39675998211903063, - -0.3867791355227419, - -0.37775630923507264, - -0.36970075305345684, - -0.3596373334297276, - -0.35088624053906425, - -0.343249017676591, - -0.3365364136213955, - -0.3280454644746875, - -0.32054871315380096, - -0.3138887383027198, - -0.3052678456118172, - -0.29751827098389816, - -0.29050752507069966, - -0.28142473032763426, - -0.27321054500480324, - -0.2656991456669142, - -0.2587398354916446, - -0.2499932657501489, - -0.24195028897207083, - -0.23449433794576624, - -0.21073653818238336, - -0.20337090665091795, - -0.19441510549387164, - -0.18603120278179475, - -0.17816703524040411, - -0.16879825238346324, - -0.1599795978048122, - -0.15165992140020768, - -0.1418965944648014, - -0.132693314950024, - -1.092253642083745, - -1.0860376592287306, - -1.0786076310477852, - -1.0716132200446256, - -1.0650285249346998, - -1.0571668965549845, - -1.0497376962057932, - -1.042717744122208, - -1.0360772222905708, - -1.0281712306114712, - -1.0206622934352425, - -1.013517221702194, - -1.0050200216925422, - -0.9969068481645689, - -0.9891250209442779, - -0.9800023518781518, - -0.9713405509858513, - -0.9631198398460701, - -0.9553136745502389, - -0.9464321458708058, - -0.9380471794628427, - -0.9301262350861048, - -0.9212114516708487, - -0.9128334462352972, - -0.9049424177979555, - -0.8974994289508209, - -0.8893548268652451, - -0.8815750023166005, - -0.8741237168751179, - -0.8659613210994834, - -0.8581458405732776, - -0.850616152533026, - -0.8424113255294756, - -0.8344422067588173, - -0.8266135502744838, - -0.8189014365872604, - -0.8106227136254318, - -0.8025298239171612, - -0.7946159725940238, - -0.7863407093791055, - -0.7783016614770808, - -0.7704893416984102, - -0.7628929440743575, - -0.7552157164045159, - -0.747794468027964, - -0.7406193517793611, - -0.7335657378707108, - -0.7267480110069731, - -0.7201504606946845, - -0.7138564263609879, - -0.7077988753702948, - -0.7019623103399817, - -0.6963098465882136, - -0.6911193935761122, - -0.6860817650717306, - -0.6811556282348887, - -0.6767857718153139, - -0.6725235495425257, - -0.6683443157619489, - -0.6642335249087086, - -0.6608494881622129, - -0.6574952495025157, - -0.6541421587671246, - -0.6515120451929577, - -0.6488330461472718, - -0.6460926320397431, - -0.6440809207920415, - -0.6420002557932591, - -0.6398513734334261, - -0.6376393211757123, - -0.6361869289501725, - -0.6346616664948095, - -0.6330347768198834, - -0.6320865896815879, - -0.631093610757733, - -0.6300476185837431, - -0.6289349751886892, - -0.6284192738892287, - -0.6278390866194199, - -0.6271620408691896, - -0.6272920039094714, - -0.6270373900559196, - -0.6265549547790967, - -0.6272601037354253, - -0.6281778789085681, - -0.6297067796977642, - -0.6313329500920588, - -0.6345882608559101, - -0.6380367903094106, - -0.6416205259215515, - -0.6489460784489438, - -0.6562549079210014, - -0.6634394553418874, - -0.6703877225193517, - -0.6808348767446946, - -0.691168172695797, - -0.7011991347126543, - -0.7131221599028839, - -0.7250391864821348, - -0.7367603336088364, - -1.3057653682557948, - -1.3192988754040635, - -1.33271104918067, - -1.345711867919876, - -1.3600195328792963, - -1.374088888585353, - -1.3876271669228668, - -1.4021367680633177, - -1.4161916408824808, - -1.4292203472543128, - -1.4407068824578897, - -1.4671884649842213, - -1.4839450295519676, - -1.4962398913149388, - -1.4982948398700042, - -1.4982773160897978, - -1.4991210576255714, - -1.4980961198818812, - -1.4952557403951003, - -1.4931476976285392, - -1.489337472320707, - -1.4843583785957375, - -1.4783472618636053, - -1.4726389541850244, - -1.4661051204052404, - -1.4587243958536165, - -1.4516419612186993, - -1.4439732219921968, - -1.4359545490965977, - -1.4280701630385109, - -1.420091901633373, - -1.411772607421767, - -1.4030517432386118, - -1.3945070254400804, - -1.3858321018203847, - -1.3769740818208314, - -1.3682696020449894, - -1.3596874665504677, - -1.35141832844089, - -1.3435032966976208, - -1.3357199669903892, - -1.3284937923148865, - -1.3219029988372402, - -1.315161759457852, - -1.309115706189935, - -1.3037948564175132, - -1.298059725200841, - -1.2930439541050602, - -1.288823849323205, - -1.285421929156504, - -1.281489519805565, - -1.2784513715233201, - -1.2763464319248694, - -1.2734315296719632, - -1.271437218842729, - -1.2703700690612048, - -1.2702252981734905, - -1.2689809458692263, - -1.2686596322172348, - -1.269270368023138, - -1.2685589494729674, - -1.2687243827554104, - -1.2697485715848085, - -1.2691086172468082, - -1.2692474624047196, - -1.270191569309307, - -1.2719292039600574, - -1.2716831972823963, - -1.2721377973925245, - -1.273243025198059, - -1.271824913005357, - -1.2709827716678028, - -1.2706228140686677, - -1.2706908724906354, - -1.2676015898648234, - -1.264941138733479, - -1.26258165368151, - -1.2564954420126155, - -1.2507283596868426, - -1.2451678240400559, - -1.2354101737998384, - -1.2259936494319736, - -1.216886185734095, - -1.2080554244042176, - -1.194861232168554, - -1.182290224465343, - -1.1702120704333352, - -1.153884394032482, - -1.1381742205939835, - -1.1230654596755392, - -1.1085373870915032, - -1.0901955135796992, - -1.0726559364373016, - -1.055914041337574, - -1.0357529279509583, - -1.0171613771828167, - -0.9995811525205283, - -0.9786895986623585, - -0.9588500288794095, - -0.9401213977996683, - -1.3797629385930068, - -1.3601676099470297, - -1.3418933064560603, - -1.3249740464075503, - -1.3058815510322497, - -1.2883881691324799, - -1.2724116713256348, - -1.2579306597404964, - -1.2416260841545321, - -1.2268351806261357, - -1.2137186920265188, - -1.199165316903565, - -1.1861957368357736, - -1.1746022821885749, - -1.161674392050557, - -1.1502102096555697, - -1.1401241263118886, - -1.1313366033159007, - -1.1216389260293171, - -1.1132587361145867, - -1.1061107718982075, - -1.0983065032952513, - -1.0917263543361764, - -1.0862482433248215, - -1.0818274099471359, - -1.0771143665582148, - -1.073411211016637, - -1.0706174629553806, - -1.0676577994564427, - -1.0655337878830524, - -1.064071661825147, - -1.0626862393809349, - -1.0619051777986634, - -1.0615235072649336, - -1.0614095774990853, - -1.0615237463473468, - -1.0617580333637255, - -1.0620299145735412, - -1.062572061430909, - -1.0630957723618109, - -1.0635563571639233, - -1.0638234161643843, - -1.0645635686281416, - -1.0650549488563232, - -1.065230550740682, - -1.0659547996726422, - -1.0663255672205503, - -1.0665228114933198, - -1.0662864061554835, - -1.0654707503789793, - -1.065397540415334, - -1.0647433241487179, - -1.063516064979852, - -1.0631381816812195, - -1.0621028087474316, - -1.060438153137549, - -1.0580525118670496, - -1.056679325666764, - -1.0546946199295941, - -1.0520044522111904, - -1.0501069634991105, - -1.0475688198115098, - -1.044348805688499, - -1.0418455388684433, - -1.0387023011951755, - -1.034899936415197, - -1.0304124365253637, - -1.026705535224519, - -1.0223910487698686, - -1.0175037168333654, - -1.0132892395716935, - -1.0086024767317037, - -1.0034163185469651, - -0.9977541935517753, - -0.9928021071909259, - -0.987417934748213, - -0.9816339270714252, - -0.9765717882558804, - -0.9711736473511337, - -0.9654685833892993, - -0.9603723367135657, - -0.9550324634355185, - -0.9494770929220013, - -0.9437262474554275, - -0.9384626130463161, - -0.9329671686462533, - -0.9272594999846511, - -0.9219290836279779, - -0.9164266309103861, - -0.9107898912444969, - -0.9050627496621984, - -0.8996955566388358, - -0.8942872871148488, - -0.8888690220348643, - -0.8837016534540825, - -0.878579845692036, - -0.8735335874551267, - -0.8687398318569961, - -0.86401951608747, - -0.8593811832225839, - -1.2188863103980474, - -1.2149525882003083, - -1.2111593389470245, - -1.2075322641221895, - -1.2038509506188475, - -1.2003704096478847, - -1.1971191001922228, - -1.194113119772089, - -1.190979576597953, - -1.1880738329063392, - -1.1853934477387706, - -1.1824744776066796, - -1.179825047813331, - -1.1774596907390864, - -1.1748808144666967, - -1.1726170183817475, - -1.17068675806443, - -1.1690965308346726, - -1.167335452839948, - -1.1659216144758189, - -1.1648526158414756, - -1.1636447247406458, - -1.1628079785011174, - -1.1623726355355841, - -1.16233241373724, - -1.16219643728183, - -1.1624221211231855, - -1.1629854582658046, - -1.1634377475083975, - -1.1641625874132073, - -1.1651687930189618, - -1.1660975169886043, - -1.1672654551955224, - -1.1686572336062515, - -1.1702545030804445, - -1.1717723190893579, - -1.1735300705562213, - -1.1754548152102728, - -1.1772537446955913, - -1.1791849516146262, - -1.1812212345925777, - -1.1833265517279814, - -1.1853329857167982, - -1.187363624988752, - -1.189374394938801, - -1.1913490826441684, - -1.1932686840356135, - -1.195133496750858, - -1.1968977096480506, - -1.198584268571867, - -1.2001448454733372, - -1.2015240491196835, - -1.2027777225574023, - -1.2037881280169873, - -1.20453216130072, - -1.205164603560679, - -1.20559920292943, - -1.2058077186340699, - -1.20578680284387, - -1.2060740935939662, - -1.2061818145261454, - -1.2060992695130763, - -1.2062456278714007, - -1.2062820656582915, - -1.2061512036140278, - -1.206208877569299, - -1.2061677440714151, - -1.2059915991734163, - -1.2056762885756844, - -1.205626601619097, - -1.205454871966156, - -1.2051462842468104, - -1.2051085898461933, - -1.2049465475938692, - -1.2046330713609317, - -1.20417976884588, - -1.2040197046581838, - -1.203720998601395, - -1.2032601210471205, - -1.2030338032078238, - -1.202678380048321, - -1.2021598458540128, - -1.2018346656458747, - -1.2014090990687787, - -1.2008983408919356, - -1.200276674591651, - -1.1999065451463526, - -1.1994439684935445, - -1.1988569752713552, - -1.1984469232951018, - -1.1979183910167777, - -1.1972491683525839, - -1.1963441179099825, - -1.1953711686258424, - -1.1940724061247376, - -1.192446749618287, - -1.190704160526179, - -1.1886674510884248, - -1.18632628390823, - -1.1838413513016963, - -1.5160288418610972, - -1.5134793913440514, - -1.5106822834470228, - -1.5077937704854218, - -1.5046978857786777, - -1.501449765493919, - -1.4982035917478318, - -1.4948883643145954, - -1.4915188954653167, - -1.4881356303587436, - -1.484820995643516, - -1.4815070280951037, - -1.4782028104103326, - -1.4749532269619687, - -1.4717721205882757, - -1.468684013500763, - -1.465630267588797, - -1.4626442789054883, - -1.4598026477131554, - -1.457131905410199, - -1.4544523961828004, - -1.4518722172680376, - -1.4493904098002703, - -1.446816103331663, - -1.444398671679265, - -1.442075632011727, - -1.439824709373351, - -1.4372951267820289, - -1.4348448446039008, - -1.4325201938259065, - -1.429766088720253, - -1.4270706253972179, - -1.4244188814194838, - -1.4210896983941645, - -1.4178357644940895, - -1.4147316355342143, - -1.411709563742994, - -1.407838087896312, - -1.4040731002211972, - -1.4003959215788158, - -1.3956916640520902, - -1.3911566618127436, - -1.386744451955429, - -1.3825875361399642, - -1.3774848288060755, - -1.3727416651600772, - -1.36837511269534, - -1.3630291331290978, - -1.3581404336259992, - -1.3536742084957372, - -1.3480710432823748, - -1.3430109563822439, - -1.3383021412834697, - -1.3339640715180188, - -1.3283324398526577, - -1.3230670041787076, - -1.3180214467255331, - -1.3114700472067344, - -1.3051537729018048, - -1.2990842247020498, - -1.2932631126968328, - -1.285844005020587, - -1.278692318419629, - -1.2718657880580544, - -1.2636167404985008, - -1.255769859418243, - -1.2484019874374188, - -1.2398981548324006, - -1.231938726101312, - -1.2245519631028456, - -1.2177488949526782, - -1.210031508066852, - -1.202966362966158, - -1.1965616000472301, - -1.1894045726190003, - -1.1829431834811712, - -1.177139805023182, - -1.1719594774275943, - -1.1661442719796644, - -1.1610084306530575, - -1.1564901459256833, - -1.1513748881510601, - -1.1468985907453189, - -1.1430092031138699, - -1.1386028957665106, - -1.1348228975108807, - -1.131645740537571, - -1.129015193621786, - -1.1261096176328993, - -1.1237791222598688, - -1.1219833753992736, - -1.1200804834319473, - -1.1186969121252983, - -1.1177864605602061, - -1.1172959920475019, - -1.116817452768427, - -1.116699914305912, - -1.1168985202908537, - -1.1172015296244728, - -1.117749714792818, - -1.452292576723419, - -1.4537310360052755, - -1.455375349067767, - -1.4570940229780427, - -1.458857243663221, - -1.4609509782876553, - -1.4630376375762189, - -1.4649798122976962, - -1.4673933755846216, - -1.469684294971336, - -1.471764564627259, - -1.4735679257580394, - -1.4759493880754433, - -1.4781370594225645, - -1.4801974086420315, - -1.4829354859138943, - -1.4851823371957877, - -1.4869652365389634, - -1.489443951519923, - -1.491393270607792, - -1.4927810714422913, - -1.4936485728779205, - -1.4953059611236739, - -1.4963075805479467, - -1.4967798897297895, - -1.498232537633585, - -1.4991892263763433, - -1.4997371793487237, - -1.4999033548968144, - -1.5011086757148708, - -1.5019455922299618, - -1.5023539854864256, - -1.5040153422362408, - -1.5053974572951587, - -1.506502619521855, - -1.5088475250827933, - -1.511035939301441, - -1.5130099342327528, - -1.5147471095251044, - -1.5176980130664661, - -1.5203872276035553, - -1.5227951340634986, - -1.5261248167747403, - -1.5291235722160001, - -1.5317424468987384, - -1.5339793680839926, - -1.5369850867831927, - -1.5395555697525907, - -1.5415944662713983, - -1.5440632413159052, - -1.5460089477937031, - -1.5473404947154497, - -1.5488030179791534, - -1.5496384499383293, - -1.5498108906727937, - -1.5492410794233444, - -1.5483380280994947, - -1.5467294276612207, - -1.5443726612996043, - -1.5413918570853982, - -1.5377491627346347, - -1.5334377015566798, - -1.5283786976950486, - -1.522747517601569, - -1.516219409895968, - -1.509000674378247, - -1.5009513448245457, - -1.4922221463480014, - -1.482776777008624, - -1.4724119391863801, - -1.461426039890506, - -1.4497850189062687, - -1.4375143798222068, - -1.424491900039036, - -1.4110557592840767, - -1.3973024413540418, - -1.3831426180051185, - -1.3688803324389582, - -1.3546498442139037, - -1.340434173877872, - -1.3259900795726316, - -1.3116500287617354, - -1.2975671605137542, - -1.283603521829181, - -1.2701101928648664, - -1.257163818893713, - -1.2447940021576072 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -29097,1987 +2398,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -2.673554020902561, - -2.679004127689214, - -2.689941638274587, - -2.7056619722937336, - -2.725470532662321, - -2.752168429672534, - -2.782181957396652, - -2.814805893301664, - -2.853810993518891, - -2.894536572422405, - -2.9364598712181857, - -2.9839469111694603, - -3.0319325828804233, - -3.0800708152009966, - -3.1281207677449174, - -3.1805417272236225, - -3.2324354114674803, - -3.2836989613115666, - -3.338794301337378, - -3.392973263389811, - -3.4462209157968005, - -3.498543152108539, - -3.554021144757062, - -3.6083686585031054, - -3.66161679685968, - -3.7172398787356, - -3.7716681823053433, - -3.8250133844243805, - -3.880082790051385, - -3.9340535889225947, - -3.987078309493656, - -4.039301747624377, - -4.092690189096408, - -4.145388960663961, - -4.19755011162447, - -4.250468611027303, - -4.302930221144678, - -4.355150207798852, - -4.407437180054455, - -4.460401381691261, - -4.513872803497577, - -4.568101587851148, - -4.622715958492275, - -4.678582808263677, - -4.735963062330529, - -4.793457414598231, - -4.852730828485699, - -4.913492447149009, - -4.975417856588813, - -5.036736032296806, - -5.099168282330884, - -5.16248112967685, - -5.224064958666061, - -5.286678764175375, - -5.350044586672253, - -5.414154388132902, - -5.476049100821948, - -5.538909308888048, - -5.602653887223699, - -5.66381440252358, - -5.726092728679465, - -5.789373365962787, - -5.849409719182956, - -5.910696405874506, - -5.973109716607104, - -6.036603176244759, - -6.096806436472619, - -6.158254576509429, - -6.220943824547392, - -6.280020467823684, - -6.340566351625489, - -6.4025222935922805, - -6.465903948040439, - -6.525644542278892, - -6.586948738770153, - -6.649871252326978, - -6.708879761967818, - -6.7696506892744335, - -6.8322493735335765, - -6.8906021996219895, - -6.950942684440479, - -7.013282566922058, - -7.077614475953614, - -7.137590173201591, - -7.1997076275726455, - -7.263989703576932, - -7.323612923619589, - -7.385557866719968, - -7.449817111368668, - -7.516373375924957, - -7.578189692933042, - -7.642420473955111, - -7.708985293087678, - -7.7705291611045455, - -7.834526678632576, - -7.900878852202064, - -7.961972773757598, - -8.025657013830507, - -8.091794305022505, - -8.160206944214417, - -8.223368200178854, - -5.8701741518601604, - -5.910635807085568, - -5.947630205894525, - -5.986387001561896, - -6.026765837505319, - -6.068600966910633, - -6.107063080495404, - -6.147153832903264, - -6.188743712086106, - -6.226733038122804, - -6.266283796477189, - -6.307328485894615, - -6.344792778576904, - -6.383786060592101, - -6.424313485289664, - -6.4663551412025075, - -6.504973957461225, - -6.545058230605026, - -6.586624632467613, - -6.624658495581347, - -6.664130033417458, - -6.704857997832928, - -6.746820691260556, - -6.78549637171312, - -6.825533872391265, - -6.866828301309432, - -6.904971842323112, - -6.94452669436, - -6.985407964387017, - -7.023330494233107, - -7.062666637744082, - -7.103308777781582, - -7.145191282850599, - -7.1844881844758195, - -7.225066950751306, - -7.266843730771523, - -7.306190781846391, - -7.3467483429171665, - -7.388420489178879, - -7.43110226190324, - -7.471660039097002, - -7.513198961990939, - -7.555641654953739, - -7.596151414704817, - -7.6375134664199305, - -7.679615525197007, - -7.719857934128074, - -7.760824139505877, - -7.802404149994226, - -7.8444811405330785, - -7.884794154421862, - -7.925570711291908, - -7.966709428827759, - -8.006229948067622, - -8.046048560481973, - -8.086074766110102, - -8.126227646567978, - -8.164946839852103, - -8.203716886939768, - -8.242458464518462, - -8.279982629540772, - -8.317501527666998, - -8.354952267871619, - -8.391532120585975, - -8.427998903003411, - -8.46428376292047, - -8.500385304497971, - -8.535938930674849, - -8.57119972344422, - -8.606176589367752, - -8.640964255388338, - -8.675434876352103, - -8.709686923027213, - -8.743818902565456, - -8.77791099236597, - -8.81171684599747, - -8.84534077119503, - -8.87920837715302, - -8.912456561334906, - -8.945550164978936, - -8.979764295825074, - -9.013436877190676, - -9.046964628985595, - -9.080514536501333, - -9.115326153259456, - -9.149924522948451, - -9.184462774160039, - -9.220665881787506, - -9.256627984887034, - -9.292456245291858, - -9.328203929985403, - -9.36567336167267, - -9.402909196040973, - -9.439943383860017, - -9.478768599589872, - -9.51722967771197, - -9.555348422790019, - -9.595256734831061, - -9.634668626733664, - -9.673619579543901, - -4.702828543715316, - -4.717046268661376, - -4.731038222859921, - -4.744815329789809, - -4.75972564759012, - -4.774342188086215, - -4.788598051731226, - -4.80246883908157, - -4.817312329553124, - -4.831627682723228, - -4.845413960003032, - -4.860077744599957, - -4.874145919792481, - -4.887612617599267, - -4.901997220504505, - -4.91568148197544, - -4.928661688608717, - -4.940930435264527, - -4.953801019237063, - -4.965836545696417, - -4.989148487468402, - -5.000179684906053, - -5.010587415653919, - -5.020429354933761, - -5.030847731970236, - -5.040730422517826, - -5.050121685523202, - -5.060139658658301, - -5.069730843776336, - -5.0789272348645955, - -5.088799674106792, - -5.098373544926687, - -5.107668765575525, - -5.11676590048414, - -5.126652231749323, - -5.1363389118007206, - -5.145895985273023, - -5.156117842951451, - -5.166233668502818, - -5.176181291058049, - -5.186005828223644, - -5.196535307111281, - -5.206967531079574, - -5.217313127234972, - -5.22836178815291, - -5.2393171877197755, - -5.250275242594422, - -5.262049949211596, - -5.273988976799403, - -5.286024512507195, - -5.298161080680089, - -5.31098384205341, - -5.323981924929551, - -5.337144695539244, - -5.350808868728716, - -5.364579539055086, - -5.378473724133055, - -5.392483313308828, - -5.406996382536601, - -5.421639586225618, - -5.436431534669739, - -5.451577895010846, - -5.466810560070183, - -5.482108828464549, - -5.497688917876203, - -5.513352220140316, - -5.529072090041667, - -5.544845560006145, - -5.560818938717242, - -5.576906710702517, - -5.593094578040294, - -5.609293615878824, - -5.625655650431353, - -5.6421715866665005, - -5.6587733211203055, - -5.675353330271589, - -5.692020443331645, - -5.708733327632537, - -5.725229763767127, - -5.741942157004404, - -5.758737431795278, - -5.775287832226958, - -5.792156981427031, - -5.809147866646731, - -5.8262369469221635, - -5.843243437291807, - -5.860418065546299, - -5.8778132102346206, - -5.894945128012257, - -5.912279428034873, - -5.929838415866424, - -5.9475160638519835, - -5.964916244759332, - -5.982473797384726, - -6.000131212271082, - -6.017377662368752, - -6.03477738741913, - -6.052270906083421, - -6.069205505496463, - -6.086274680135579, - -4.120107470876052, - -4.131205143559875, - -4.141773927299111, - -4.152393064652232, - -4.163031379224787, - -4.172982623102885, - -4.182976895413033, - -4.192984073674545, - -4.2029755021102595, - -4.212126819240365, - -4.221268064633069, - -4.23035249217187, - -4.2383718593046, - -4.24635431544279, - -4.254239768340344, - -4.26079896278266, - -4.26733351358175, - -4.27384198168946, - -4.2803311751905015, - -4.285326777589041, - -4.290350911750532, - -4.295445216537808, - -4.298988553088693, - -4.302660362687769, - -4.306490820579031, - -4.310460517398368, - -4.312768666672411, - -4.3153096595907146, - -4.318057805600705, - -4.318912705725049, - -4.320114985171654, - -4.3216696433158885, - -4.321040038900627, - -4.320841613274551, - -4.321087337242293, - -4.3218167178332285, - -4.320445386833185, - -4.319653569541005, - -4.319462665896682, - -4.3172075725644214, - -4.315640219335302, - -4.314755737125145, - -4.314620217933512, - -4.312536865407733, - -4.311281503619899, - -4.3108760817597505, - -4.308656030985544, - -4.307281494176704, - -4.306906233796998, - -4.30501216179455, - -4.3039974263069425, - -4.304017476519309, - -4.3051198199627665, - -4.304789590314648, - -4.305610369691591, - -4.307531538820651, - -4.308262447388312, - -4.310080973901096, - -4.3129906215955, - -4.316959710619722, - -4.3197911494579015, - -4.323644483160267, - -4.328464392651217, - -4.332151392545971, - -4.336767875859466, - -4.3422105355225264, - -4.346451130869855, - -4.351423166955014, - -4.357016830840075, - -4.363129322713859, - -4.367942473730777, - -4.373248601322341, - -4.379098470395953, - -4.383906985733918, - -4.389492272006722, - -4.395702909121485, - -4.402411842002731, - -4.4082406373953775, - -4.414576307871508, - -4.4213045425979836, - -4.427029198798213, - -4.433116475439931, - -4.439479099096037, - -4.444768365768001, - -4.450406036433506, - -4.456275393711511, - -4.462275105875635, - -4.467393975267605, - -4.4727396363869385, - -4.478242264121601, - -4.493247344402768, - -4.498431832852113, - -4.50288401815223, - -4.5074671993170785, - -4.512164941749763, - -4.516221400645714, - -4.520392521548091, - -4.5246617421705775, - -4.528359149866354, - -4.532183942539717, - -3.5547301244208027, - -3.5566122353516336, - -3.5578604639557208, - -3.5592995562795835, - -3.560913282602459, - -3.5618445369059817, - -3.562947577876929, - -3.5642096214155776, - -3.565615259027717, - -3.5663421167156595, - -3.567206668691084, - -3.5681925086754687, - -3.568463171709795, - -3.5688548352135596, - -3.5693386790799835, - -3.569158691987774, - -3.5691515733365238, - -3.5693164021343904, - -3.5696497671116916, - -3.5695361391215963, - -3.5696456680716935, - -3.5699703854640967, - -3.5699931845135335, - -3.5702682790613305, - -3.570779869918426, - -3.5715180675073186, - -3.572222261475346, - -3.5730404795990602, - -3.573957094430346, - -3.574903234708545, - -3.5759460992091063, - -3.577043834435151, - -3.5782002232056067, - -3.579379723368622, - -3.580548303232317, - -3.581685538848188, - -3.583021117054808, - -3.5844147973967573, - -3.585863559443904, - -3.5878049503775626, - -3.589787242851428, - -3.591804525555527, - -3.5938496357458156, - -3.5965722568077245, - -3.5992995669116237, - -3.602020643182793, - -3.6055537367621797, - -3.6090209332306458, - -3.612406238577371, - -3.6167020043145515, - -3.6208850426868544, - -3.6249473222615296, - -3.6288728514729143, - -3.633736101989911, - -3.638396244674968, - -3.6427841719380973, - -3.6480453131164516, - -3.653024239793807, - -3.6576930178302134, - -3.662065014371449, - -3.6674242209791608, - -3.6724623377298817, - -3.6771809766005963, - -3.6828840771447475, - -3.688242753536975, - -3.693272169096901, - -3.69924797087058, - -3.704904590965576, - -3.710249588409822, - -3.71534122651167, - -3.7213906998071566, - -3.7272404172759734, - -3.732899142749429, - -3.7394986386701428, - -3.746028742752789, - -3.7524963817846957, - -3.7589222323883327, - -3.766121274009401, - -3.773294524535004, - -3.780438010402364, - -3.788521638752263, - -3.796312686040264, - -3.8039431717073717, - -3.81278381382132, - -3.82195518921493, - -3.831840354424909, - -3.8420439051357373, - -3.85415918418032, - -3.8666361893833363, - -3.8793557508024312, - -3.8954492231977706, - -3.911660144707117, - -3.92784503660609, - -3.9438655089562964, - -3.9630118225631303, - -3.982153736905865, - -4.00108669030193, - -4.0214602495662435, - -4.042039864311411, - -4.062552580492651, - -3.4424109416241606, - -3.4632181552118126, - -3.48385891074519, - -3.503873701319372, - -3.524779343349236, - -3.545314664864428, - -3.5650842439043195, - -3.5850816438156716, - -3.6045133074917928, - -3.62266734873648, - -3.6390498418310537, - -3.6781135619306893, - -3.702790778980104, - -3.7278143219599547, - -3.7347042119185243, - -3.7400815273130785, - -3.7459020149309454, - -3.750459287804658, - -3.753780237708799, - -3.75737150646295, - -3.759852947950005, - -3.761750083421065, - -3.7631857862092324, - -3.7643603410909066, - -3.765286996363578, - -3.7659500464328364, - -3.7662873789302123, - -3.766621892610167, - -3.7671879968375124, - -3.7672064811311907, - -3.76771679936514, - -3.768360971623448, - -3.769031355820447, - -3.7689932003309785, - -3.769280569874086, - -3.7697883437194166, - -3.7695015720516354, - -3.7697543953701986, - -3.7707106180659746, - -3.7723467995998052, - -3.77316115902157, - -3.774882725998017, - -3.777554579381219, - -3.779037619809496, - -3.7815064002281025, - -3.7849315641503725, - -3.786829306131253, - -3.7896877650064185, - -3.7935804127592765, - -3.798511415206776, - -3.8019331705657256, - -3.8065394817911358, - -3.8123403199893735, - -3.816416908143665, - -3.8217464268318158, - -3.8283367903442826, - -3.8361145149195632, - -3.842068909963512, - -3.849279995500022, - -3.857757997205905, - -3.8642965820167525, - -3.87206916845824, - -3.881039028633186, - -3.887799460217858, - -3.8956927333490112, - -3.904693600493294, - -3.914778176525075, - -3.9224303942810455, - -3.9310836637656834, - -3.9406504060439373, - -3.9473592886149724, - -3.9548887585643717, - -3.96312177739677, - -3.971966066993171, - -3.977412373349308, - -3.983453236893453, - -3.989946857148447, - -3.9926040533077916, - -3.995691525495447, - -3.9990827743882544, - -3.9982786677172504, - -3.9978699826759927, - -3.9978110638981774, - -3.9980679480401715, - -3.994066509262346, - -3.990697303474854, - -3.9878391960006976, - -3.9809125530010716, - -3.9745731157228086, - -3.9687969940741343, - -3.963549205450372, - -3.954646389579591, - -3.9464306074912536, - -3.938869125177206, - -3.9279708895072796, - -3.91808984722138, - -3.9090612702632552, - -3.897069552277825, - -3.885994001804804, - -3.8759216021721556, - -3.3902322620864838, - -3.378138193908959, - -3.3672467527312078, - -3.3576003509432115, - -3.3463541910122494, - -3.336543734877085, - -3.3280829847918403, - -3.320955427304536, - -3.3125692444366415, - -3.305451648074099, - -3.299747746266191, - -3.2931978663631862, - -3.2879664497193213, - -3.2839031115657855, - -3.2792376842797584, - -3.275789291454613, - -3.2734740499983315, - -3.272208165608218, - -3.2707138729346186, - -3.2702375147911664, - -3.2706859104666623, - -3.2711488450717012, - -3.2724867757749014, - -3.27458292017517, - -3.277430261358542, - -3.2805922579238125, - -3.284438377028051, - -3.288879333608866, - -3.2937559668420926, - -3.2991282169065155, - -3.304826078495557, - -3.311155772319599, - -3.3177256083342233, - -3.324347906849323, - -3.3309175355788536, - -3.3382228221332957, - -3.3453189276126967, - -3.3521536202684725, - -3.3597554920700383, - -3.3670244675531, - -3.373940146027139, - -3.3803808984477586, - -3.387752622484137, - -3.39458570877433, - -3.400829979217683, - -3.408078683056777, - -3.4147012746279373, - -3.433393019180203, - -3.4391224481324425, - -3.4440568620216934, - -3.4501577052121597, - -3.4554481423760635, - -3.459961708046549, - -3.465708147214265, - -3.470578782682906, - -3.4746368417745455, - -3.47781233799815, - -3.4823476472918644, - -3.4861127003110415, - -3.489031893451801, - -3.4931230406253047, - -3.4964525067644145, - -3.499016541433897, - -3.5026741616039994, - -3.5056238399063107, - -3.5078619638475628, - -3.5094015984619347, - -3.5120752043858756, - -3.51412360809167, - -3.515577899106183, - -3.5180354727916088, - -3.5199942823989128, - -3.5214422135262113, - -3.5224160841496923, - -3.524381227836037, - -3.5258981560077416, - -3.527012959843913, - -3.5290640294082354, - -3.530759313428943, - -3.5321364300610885, - -3.534321703632587, - -3.53623148994697, - -3.5379022837697915, - -3.5393624131325545, - -3.5414592882643605, - -3.54329833114381, - -3.5449241383710426, - -3.547069166924109, - -3.5490509345796535, - -3.5509088934810578, - -3.5526861326864667, - -3.55495421124803, - -3.557177475280473, - -3.559388898259888, - -3.5619522661385616, - -3.564548324097344, - -3.567208191842769, - -3.5702290788681603, - -3.5733007754050576, - -3.5764339318793583, - -3.154318916291614, - -3.1569814821557642, - -3.159763461244683, - -3.1626909258803035, - -3.1656217104745155, - -3.168726158034646, - -3.17203228989399, - -3.1755570973469416, - -3.179000392014194, - -3.182633841758068, - -3.1864557410925913, - -3.190074934616211, - -3.1939321499640965, - -3.198045294617133, - -3.201993118586066, - -3.206231851307998, - -3.210781861851979, - -3.215651885201572, - -3.2203972875852678, - -3.2254689230244553, - -3.2308672990311917, - -3.2361730098896633, - -3.241830641650999, - -3.247877188365418, - -3.2543094328692757, - -3.2606843413259003, - -3.2674097932807875, - -3.274464498576701, - -3.2814363134619873, - -3.2886671298995847, - -3.2961694135021666, - -3.3036178763525257, - -3.311295429981131, - -3.319190936807451, - -3.327289166592938, - -3.335321140755298, - -3.3435912305588924, - -3.352030561555657, - -3.360358970392499, - -3.3688265551538867, - -3.3774167115385203, - -3.386096157045327, - -3.3946862449824198, - -3.4033251495175563, - -3.4119581289863534, - -3.4205636461560376, - -3.4291375121628427, - -3.4376822846729387, - -3.446119350809541, - -3.4545170443717765, - -3.462820294866651, - -3.4709680246133043, - -3.479000319812287, - -3.4868214912340747, - -3.4943946006311055, - -3.501827904033197, - -3.509113887645941, - -3.5161932909244538, - -3.523060537745338, - -3.5302057778360165, - -3.537203283791472, - -3.5440263858690666, - -3.551006904852254, - -3.5579153733052817, - -3.5646871078814133, - -3.5715487403808073, - -3.578354434711027, - -3.585060365901817, - -3.5916488827657087, - -3.5984159681853862, - -3.6051037179849157, - -3.611702009922931, - -3.6185374095160983, - -3.6253307046158287, - -3.6320329127594944, - -3.6386398787566163, - -3.6455161627809893, - -3.6523087215496117, - -3.65898363989785, - -3.665910844091808, - -3.672745507570894, - -3.6794545818374003, - -3.68640418595311, - -3.6932600073542527, - -3.700033236429192, - -3.7067051491826235, - -3.71367408627905, - -3.7205362089407856, - -3.7272696877375484, - -3.7342424027845422, - -3.7410758776222215, - -3.7477482758404133, - -3.7541594837934986, - -3.7605699778085255, - -3.766651211845833, - -3.772399438364496, - -3.7781195570987327, - -3.783526687985189, - -3.7886248576630277, - -3.7936703486082735, - -3.4249693352151342, - -3.428904385621693, - -3.4325679488817697, - -3.4362634045478417, - -3.439724906506038, - -3.4429788110819466, - -3.4463170451401637, - -3.449533104530899, - -3.4526449818872558, - -3.455697356303876, - -3.4588940302429707, - -3.4620444002800497, - -3.4651604479960745, - -3.4684036948064128, - -3.4716788795211473, - -3.475017094056228, - -3.4784430077478845, - -3.48190890124898, - -3.4854972126573496, - -3.489256444630011, - -3.4930489209871256, - -3.49692415027122, - -3.500882659665148, - -3.5047621495380463, - -3.508813884024021, - -3.512952602936824, - -3.5171517744382284, - -3.521046172271239, - -3.5250274787734446, - -3.5291641246226666, - -3.5328069364274954, - -3.5365234509916155, - -3.540301572959636, - -3.5433104258303323, - -3.5464462110557182, - -3.5498006946592255, - -3.553269181089159, - -3.5557868050037382, - -3.558480181917961, - -3.561327410603071, - -3.5630856175809598, - -3.56510580941832, - -3.5673212969174246, - -3.569836052168358, - -3.5713838515367, - -3.573356584908787, - -3.575747144943134, - -3.577120039271726, - -3.5790254268261417, - -3.5813902049396633, - -3.582610772242049, - -3.5844281977003494, - -3.5866297100011977, - -3.589217094788191, - -3.5905718208364004, - -3.5922973830718727, - -3.5942513311814555, - -3.5948130415384725, - -3.5956248696538706, - -3.596671423502248, - -3.597960240687125, - -3.597799661902569, - -3.597856234085566, - -3.5981852860826455, - -3.597299982388664, - -3.596739526431781, - -3.5966029153991763, - -3.5956531659720437, - -3.595184638242843, - -3.5952254459811703, - -3.5957857340707813, - -3.5957986551485726, - -3.5963722058093457, - -3.5975121258584815, - -3.5983426332650876, - -3.5997530625845933, - -3.6016997175356806, - -3.6041516765888097, - -3.6064503582710383, - -3.609278365487049, - -3.6125675504177646, - -3.6157996253478597, - -3.6194870970919846, - -3.623573605419425, - -3.627731787677024, - -3.6322862481752622, - -3.637194251230708, - -3.642387814562535, - -3.6478249400155844, - -3.653532719319511, - -3.659466995659585, - -3.665754897069797, - -3.6722231909468213, - -3.6788316725885966, - -3.6855379451926162, - -3.692610347028087, - -3.699686118329915, - -3.7067625471500687, - -3.7142341345981764, - -3.721643271723768, - -3.3856973098137786, - -3.392902621839811, - -3.399987904026875, - -3.406883309690857, - -3.4136148413193546, - -3.420873933656153, - -3.4279507832655605, - -3.4347682011921634, - -3.442186340942298, - -3.4493836024372904, - -3.456299484901436, - -3.462850233374704, - -3.470080881514089, - -3.477068739772473, - -3.4838917875023503, - -3.49140705937407, - -3.498567982245352, - -3.5053912535546754, - -3.512827522053305, - -3.519905213324744, - -3.5266129357330813, - -3.5329770170337245, - -3.540063934619635, - -3.5467116753589245, - -3.553024580240458, - -3.5601624609460667, - -3.5670160139952913, - -3.573653140302154, - -3.5800337737767225, - -3.5872576182772695, - -3.5942589544084766, - -3.600976883303544, - -3.608648514029725, - -3.616205183844209, - -3.623612618462245, - -3.6319112805224663, - -3.640210769549867, - -3.6484244864625692, - -3.6565038810774864, - -3.6655061514174285, - -3.6743692421420926, - -3.6830588331311764, - -3.6923895826873903, - -3.701525125646979, - -3.710400756160641, - -3.7190017769289896, - -3.7281682193021393, - -3.737034581149948, - -3.7454901214735203, - -3.7541942409652425, - -3.7625278870322814, - -3.7703841728293725, - -3.77823203517975, - -3.785625950075162, - -3.792506095346846, - -3.798781738684484, - -3.80469197278231, - -3.8100569542350633, - -3.8147965171565907, - -3.8189161456100207, - -3.8225415900280506, - -3.825633583953902, - -3.8280495017819662, - -3.830023431195467, - -3.831193150459036, - -3.831698550835318, - -3.831408299925114, - -3.8304379728821702, - -3.828699674773458, - -3.8260636201707783, - -3.822753631143273, - -3.818751679535703, - -3.814023180807701, - -3.8085490314762716, - -3.8025378652118853, - -3.7960144858808826, - -3.788966524278541, - -3.7815837524335825, - -3.7740534295028363, - -3.7665566623193385, - -3.758929002685449, - -3.751509649157991, - -3.7444677364469285, - -3.73757467802435, - -3.731291018135731, - -3.7256917875574036, - -3.720609441405718 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -31087,1987 +2416,15 @@ }, "name": "vx est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -2.041098488868885, - -2.043615133582029, - -2.046215977136402, - -2.0488484318048528, - -2.051464692897855, - -2.0552298658444843, - -2.0588646129947925, - -2.062329816291446, - -2.0669504697543823, - -2.071264297266429, - -2.0752539983201443, - -2.0802539492887213, - -2.0848443698661736, - -2.088978947065058, - -2.092631499815344, - -2.0969881803543187, - -2.1007741018322195, - -2.103989376259473, - -2.107794099121652, - -2.11096706965139, - -2.113521071574352, - -2.1154577869483564, - -2.117802090408005, - -2.119461628293777, - -2.120438551562982, - -2.121625310824285, - -2.1221312940707433, - -2.122021131474661, - -2.122058783705061, - -2.121490882396638, - -2.1203999975224272, - -2.1188374149520834, - -2.117438169417073, - -2.1156662265106823, - -2.113544924150525, - -2.1117168757461724, - -2.1096272700648533, - -2.1073456845168956, - -2.104984712614418, - -2.1030991759523427, - -2.1012897301257167, - -2.0996488041304087, - -2.098509181887013, - -2.0977597913975417, - -2.0975755159457043, - -2.0983467405795433, - -2.0997645093394013, - -2.101824493634909, - -2.104375946776581, - -2.1078419841765146, - -2.1118065474936216, - -2.116219634167436, - -2.121444608088678, - -2.1270625868528366, - -2.1330221773964255, - -2.1393188241287797, - -2.146296647028633, - -2.153512769220124, - -2.160944337671577, - -2.169249987987156, - -2.1777251546659535, - -2.186369853313597, - -2.1958638211229777, - -2.2054714299300833, - -2.2151927711593093, - -2.224994256951414, - -2.235935900268782, - -2.246791462568602, - -2.2575612319883427, - -2.269447246499363, - -2.2811228923901523, - -2.2924558408764755, - -2.303513377570721, - -2.3154229257588934, - -2.3268322603873592, - -2.3378442863119218, - -2.349336777754146, - -2.3602943204301154, - -2.370778962774174, - -2.381366789806609, - -2.3914296156042525, - -2.400981552809329, - -2.4100186621913906, - -2.4188484974249884, - -2.427135488396659, - -2.434895499966169, - -2.442194431205613, - -2.4489931768067903, - -2.4553240398093323, - -2.461205421378246, - -2.4664765948977125, - -2.4713047957666276, - -2.475674235419672, - -2.479327590712697, - -2.4825907725903353, - -2.4854321607285885, - -2.4875030369323414, - -2.4893907686668366, - -2.4909513593187915, - -2.4920544305500854, - -2.492469483202462, - -2.4633400409045376, - -2.4627636860739757, - -2.461377594275484, - -2.459753632710705, - -2.4578521424483832, - -2.4555250068891312, - -2.4523999745724643, - -2.449079194990838, - -2.4455476418255695, - -2.4411466057355393, - -2.4366579831045665, - -2.432161409245424, - -2.4270142116088875, - -2.42193586081364, - -2.4170653403402746, - -2.4125794744374374, - -2.4076365942506346, - -2.4030861414527886, - -2.3991149221249204, - -2.3947004747426583, - -2.390904528918968, - -2.3876908192795008, - -2.3852123767770492, - -2.3823325563005984, - -2.380247504785047, - -2.379013376628105, - -2.37733765138746, - -2.3765031415231355, - -2.376527285744487, - -2.3760423656421494, - -2.3763589435751307, - -2.3774817564423483, - -2.3794184981349873, - -2.3807309714432345, - -2.382744540636428, - -2.3854770091531434, - -2.38749627015977, - -2.3901342282440234, - -2.393371227844085, - -2.397181753634501, - -2.400162690001003, - -2.403614179157217, - -2.4075312211953217, - -2.410521474517753, - -2.4138910454014915, - -2.4175947131646796, - -2.4201757666708272, - -2.4230394538490168, - -2.426112840605984, - -2.4293855924737913, - -2.431313997920265, - -2.433386327958401, - -2.435564871578296, - -2.4363041759202013, - -2.4371063153489927, - -2.43795113013348, - -2.4388373982058504, - -2.4382365720478125, - -2.43760612703068, - -2.436923593626601, - -2.434850951468955, - -2.4328951000102643, - -2.430999439485346, - -2.4279560843493164, - -2.4250771412571117, - -2.422267787247456, - -2.419591036919476, - -2.415971152010086, - -2.4124933440524163, - -2.4090743727890027, - -2.4049847643262323, - -2.401148100493277, - -2.3974485943222215, - -2.393846546795586, - -2.3896745948998843, - -2.3855368114506796, - -2.381411327843928, - -2.37672814692698, - -2.371859493362298, - -2.3669936306260246, - -2.361961544126752, - -2.356870484865508, - -2.351847598805076, - -2.346976352666256, - -2.3422586384311996, - -2.3376797259273454, - -2.3332910293388465, - -2.3293279976293872, - -2.325528509699635, - -2.3219102216880674, - -2.318482423524323, - -2.3156332609391415, - -2.3129592435519326, - -2.310458437337916, - -2.30864221483397, - -2.306974656026347, - -2.305447758364921, - -2.3047039476172904, - -2.304064531297659, - -2.303516742028281, - -2.4673754461521775, - -2.468436707648533, - -2.4694956638686514, - -2.4705509565937036, - -2.472388545856156, - -2.474168766858005, - -2.4758235893392584, - -2.47731903648796, - -2.479488012646469, - -2.4813825107717142, - -2.482991036626589, - -2.485214293921646, - -2.487090988098061, - -2.4886005631852406, - -2.4907582667693653, - -2.4924499923009265, - -2.4936501765034715, - -2.494342798005433, - -2.4954119020546623, - -2.495796320031981, - -2.4957938624479428, - -2.4953155244564162, - -2.4943714253344433, - -2.492999000948442, - -2.4920271647701826, - -2.4906358219770075, - -2.4888521656743863, - -2.487559036378098, - -2.4859141369042734, - -2.4839353371519413, - -2.48251939377426, - -2.4808412039674335, - -2.4789076214090318, - -2.476780199229663, - -2.475338555542826, - -2.47368674809307, - -2.471866418005678, - -2.470636101455736, - -2.469240261379697, - -2.4676221257559074, - -2.4658051070226428, - -2.464657897650615, - -2.463328294758194, - -2.4618390928258966, - -2.461048193159761, - -2.4600915771022067, - -2.4590731659778697, - -2.4589429798927047, - -2.458915150947451, - -2.4589368700831704, - -2.459012548357198, - -2.459882939636766, - -2.4608568183187036, - -2.4619216188598, - -2.4636307027102364, - -2.4653910482156647, - -2.4671891001687034, - -2.4690001846494565, - -2.4714024937749914, - -2.4738336542630748, - -2.476314869846382, - -2.4792553129794968, - -2.482187472657953, - -2.4850995831519946, - -2.488412510184247, - -2.491706831616352, - -2.49495558113871, - -2.498194198898943, - -2.50179009734204, - -2.505451006395891, - -2.5091707986739324, - -2.513092847174159, - -2.5170862673534846, - -2.5211789915791725, - -2.525323833673441, - -2.529640741987967, - -2.5339679734774707, - -2.5383037743442287, - -2.542652310475292, - -2.547118334905841, - -2.551591225029307, - -2.5560980087084504, - -2.5607715896249488, - -2.5655006600341306, - -2.5702756090003307, - -2.5751697164341096, - -2.580153368989866, - -2.5852632042291397, - -2.5903771846542654, - -2.5956041048472835, - -2.600973075142956, - -2.606404324086145, - -2.6118026461196484, - -2.6172742343906785, - -2.6227829238804548, - -2.628154894315701, - -2.633596549858928, - -2.6390574160889977, - -2.6442321545892717, - -2.6494437108275153, - -2.59982395888362, - -2.6049072562394526, - -2.6095758753030256, - -2.614242788545644, - -2.6188750890976, - -2.622915477711668, - -2.6269362485413095, - -2.630911093229339, - -2.6348129334601182, - -2.6379394625266435, - -2.6409926955484555, - -2.64392721890382, - -2.6458284324364434, - -2.6476316849474895, - -2.649276911222959, - -2.649586214331647, - -2.649816761053976, - -2.6499697645316926, - -2.6500543213591903, - -2.6486173249301697, - -2.6471716902606848, - -2.645754580046978, - -2.6427221615942003, - -2.6398130526764256, - -2.63704174084407, - -2.6343905561990892, - -2.6300163870721494, - -2.625893863285236, - -2.621978597736641, - -2.6160508485186744, - -2.6105152904417808, - -2.6053593375246766, - -2.597816778301173, - -2.590774908705579, - -2.584209959679492, - -2.578148073420081, - -2.569799470623273, - -2.56207683923218, - -2.5549973982995473, - -2.5456385319387387, - -2.537046205794943, - -2.5292127962330504, - -2.522193202753546, - -2.513023086748153, - -2.504785046796309, - -2.497495900595783, - -2.4881558385173466, - -2.4798045166448186, - -2.47257304500752, - -2.463523656930763, - -2.4555334720578976, - -2.4486726075947494, - -2.44298478879422, - -2.435581605201091, - -2.4294834141146793, - -2.4246059985982003, - -2.4181649293909655, - -2.412942340583319, - -2.4089032569686326, - -2.406010133653348, - -2.401591176298342, - -2.3983234872892893, - -2.396141884771129, - -2.3923942492925048, - -2.3897413726991577, - -2.388077154598842, - -2.3847463666364104, - -2.3823556902719067, - -2.380792112821838, - -2.379944652416445, - -2.3773608046267594, - -2.3755024552787067, - -2.374399611724705, - -2.371772159581823, - -2.370189256272893, - -2.369475963399038, - -2.3694741278120635, - -2.3681430509350325, - -2.3675625105126548, - -2.3675966404503517, - -2.3661485222050147, - -2.365317373211915, - -2.364993312083368, - -2.3630965480478174, - -2.3618082907191544, - -2.3609872696892125, - -2.36050747068364, - -2.358693620508877, - -2.357344962679505, - -2.3563683010336836, - -2.351991941292576, - -2.350901369751515, - -2.3486495618230507, - -2.3467492010494366, - -2.3451659884950833, - -2.3425098265145885, - -2.3401860596764514, - -2.3381608317853924, - -2.335127872165578, - -2.3324386287448706, - -2.3234918832522737, - -2.321324947290182, - -2.318234047501753, - -2.3154563881621044, - -2.3129709037685795, - -2.309505716730483, - -2.306342637041361, - -2.303463682768893, - -2.3008462406591437, - -2.2972566736635653, - -2.2939344810631632, - -2.290854865188831, - -2.2867415967011686, - -2.2828808416890642, - -2.2792318500121307, - -2.274580521932963, - -2.2702460621611875, - -2.26621812099023, - -2.2624817208309653, - -2.257984142496201, - -2.253846423767268, - -2.2500483102751008, - -2.245602318092191, - -2.241550862648314, - -2.237861143858191, - -2.2345087482290698, - -2.2307885441702955, - -2.2273077409578304, - -2.224040405652732, - -2.220432277904014, - -2.217045969891192, - -2.2138299934840884, - -2.210305774367541, - -2.2069109650637198, - -2.2035809267534003, - -2.2002934877177243, - -2.19682191534012, - -2.193472310656959, - -2.190239766018964, - -2.187072829878334, - -2.1840444521642546, - -2.1811469336269687, - -2.1783712899100864, - -2.17589398660612, - -2.1735470174697937, - -2.171319997481077, - -2.1695597373164452, - -2.1678844721188093, - -2.166278349636028, - -2.16527921533777, - -2.1643419590285746, - -2.1634548163007556, - -2.162591349030564, - -2.1624277477830116, - -2.1622390048733493, - -2.161969900086493, - -2.1624155424658826, - -2.1627738946681663, - -2.163018666796081, - -2.163149269640079, - -2.1641368545706867, - -2.1649787936161986, - -2.1656615676838604, - -2.1671980611688526, - -2.168537899842123, - -2.169682400568322, - -2.171664445831311, - -2.1734524233794175, - -2.175050480921624, - -2.176490273843691, - -2.1787888143786645, - -2.1809510418853915, - -2.182966959784656, - -2.1857926141758655, - -2.188561176755261, - -2.1912720001842194, - -2.193928603788511, - -2.197270273949315, - -2.200566805577212, - -2.203800025635777, - -2.2079068213308672, - -2.211675038048092, - -2.2152490632432342, - -2.2200219587783727, - -2.225066534061749, - -2.2307735670613367, - -2.236688427613898, - -2.244373722518115, - -2.2523364898463734, - -2.2604881383619913, - -2.2721976508233572, - -2.283957526314059, - -2.2956422459739887, - -2.307126615737824, - -2.3219233496539124, - -2.336660954800831, - -2.3511429125072922, - -2.367291204734564, - -2.383539525396773, - -2.399656457050744, - -2.3740881549399777, - -2.391258515307938, - -2.40828497996293, - -2.424792784619624, - -2.442399438114266, - -2.4597017767248905, - -2.476355705413593, - -2.4936092059394945, - -2.510352474187137, - -2.5259438479953964, - -2.5398783621444716, - -2.572651013457455, - -2.5933679042660356, - -2.6120271066374467, - -2.6164995258942643, - -2.619179421701438, - -2.6225115362782585, - -2.6242777038432696, - -2.6245179890519497, - -2.6252596020457446, - -2.624595210135356, - -2.623054231008401, - -2.620766524036419, - -2.6184996476379654, - -2.615696058384409, - -2.6123372211432265, - -2.6089646700744558, - -2.605297557301182, - -2.601571272967055, - -2.5976383220848507, - -2.5939043504992565, - -2.5900667895226075, - -2.5860415495295292, - -2.5817501128855294, - -2.5775563358472353, - -2.573381212770124, - -2.5688855870483125, - -2.564720930960333, - -2.5610644732534324, - -2.557925048148713, - -2.5544405630059797, - -2.551688259156452, - -2.5497287891092295, - -2.547099689633674, - -2.545311053209019, - -2.544363210283943, - -2.542444515666047, - -2.5413658595557393, - -2.5412021310412407, - -2.54196667218164, - -2.5417113451856452, - -2.542495426657228, - -2.5443433759571215, - -2.544924218907814, - -2.5465918228372724, - -2.5493534297027436, - -2.5531699065465268, - -2.555524927916369, - -2.5589698138586283, - -2.5635141826145214, - -2.56642776574486, - -2.570396775606825, - -2.5753938001089973, - -2.578454038732333, - -2.5824700978768655, - -2.5874425849013005, - -2.5933536902425662, - -2.5970567957817208, - -2.601610730579104, - -2.6069467156209982, - -2.609592100810165, - -2.612935765116087, - -2.616872295732719, - -2.6213284697419033, - -2.622506981607066, - -2.6241971878134662, - -2.6262642554149784, - -2.6245497476602035, - -2.623209942591145, - -2.6221252992141553, - -2.6168444207585444, - -2.6119318160539833, - -2.607348624816136, - -2.6030616862221945, - -2.59446387071545, - -2.5864937639700987, - -2.5790256332170163, - -2.5673984735167767, - -2.556373668158396, - -2.5459312268748366, - -2.5360432962709374, - -2.522420951579645, - -2.5095432719642776, - -2.49739158325739, - -2.481861908729119, - -2.4676256122020983, - -2.4543212113918917, - -2.4378795754700917, - -2.4224220153421068, - -2.408021499985912, - -2.3849976003397453, - -2.369152901927994, - -2.354570029593634, - -2.341287198675381, - -2.3261178710222494, - -2.3124659520047826, - -2.3002473280587377, - -2.289443043522516, - -2.277097664295587, - -2.2661434143501173, - -2.256733219146355, - -2.2461815916333756, - -2.2370810932775473, - -2.22925269687718, - -2.2204560381651577, - -2.2129997505550913, - -2.20679908815511, - -2.201772384462059, - -2.196176399481968, - -2.1917481254528766, - -2.188398341182435, - -2.1847276741834762, - -2.182106565055539, - -2.1804155817499957, - -2.179628835652839, - -2.1788533122410136, - -2.178924794022344, - -2.1797483982821233, - -2.1807068831492677, - -2.182331002394784, - -2.184448870160352, - -2.186921005850267, - -2.1898153930664432, - -2.1929357070571283, - -2.1961635565389694, - -2.1998732842403212, - -2.203538480488211, - -2.207091767421007, - -2.2111637767504737, - -2.2150601199574553, - -2.2187482515955312, - -2.2221021573060713, - -2.2261580955561393, - -2.2298203288153267, - -2.2330302649791824, - -2.2370167413647097, - -2.240513420924244, - -2.2499579153367613, - -2.252704427143963, - -2.2547638062003363, - -2.2577776228137467, - -2.2600957332623905, - -2.2617388865132004, - -2.2644231644477424, - -2.266340795715169, - -2.2675374974560474, - -2.2679324249326, - -2.269513486479314, - -2.270403660120318, - -2.270518172831496, - -2.2716150020622075, - -2.272010663287962, - -2.271682673561198, - -2.2722598502362215, - -2.272163070550743, - -2.27138095013138, - -2.269907017493649, - -2.269390369805197, - -2.2682573284307694, - -2.266540807969774, - -2.265662356181651, - -2.264298379565308, - -2.2624292660365883, - -2.2600851388507337, - -2.2585916675134814, - -2.256658045377977, - -2.254323443457669, - -2.252817908832058, - -2.2509664803900384, - -2.2488025067251938, - -2.2473470201730765, - -2.2456319766912443, - -2.2436896883458965, - -2.241544330293991, - -2.2399609506553384, - -2.2381327498950316, - -2.236091819177847, - -2.2344991252760433, - -2.23273878274502, - -2.2308493923627775, - -2.2288744411743324, - -2.227324883943433, - -2.225732381197661, - -2.224128960147376, - -2.222826959796322, - -2.22156408489469, - -2.220370889648948, - -2.2194844553625783, - -2.218660145746264, - -2.217907557550971, - -2.1866026133448306, - -2.1859670351780363, - -2.185461400095854, - -2.1851115950012465, - -2.1847363305466816, - -2.1845482838412655, - -2.1845756950431063, - -2.1848351085595152, - -2.1849899843060734, - -2.1853538373322037, - -2.185924594415681, - -2.1862747061114454, - -2.186878598888714, - -2.1877524926781096, - -2.1884369665263814, - -2.189424434844873, - -2.1907343099582044, - -2.1923742080181223, - -2.193866370212608, - -2.195695268750137, - -2.1978599574363336, - -2.1999088673151546, - -2.2023193100760583, - -2.205124911950501, - -2.208320923303258, - -2.211440389303865, - -2.2149159572019865, - -2.218724978421253, - -2.2224370304851924, - -2.226414858656396, - -2.2306691032605643, - -2.234857696670565, - -2.239280442588327, - -2.243924085206851, - -2.2487718348366914, - -2.253546729922328, - -2.258560650557557, - -2.263742688382965, - -2.268806357544045, - -2.2740057533842566, - -2.279318973065549, - -2.2847113543866544, - -2.290009615349609, - -2.295344387253154, - -2.300666261962577, - -2.305956364400103, - -2.311203098099228, - -2.3164078907118983, - -2.3215085302287957, - -2.326550656471822, - -2.331482570169994, - -2.336246036866494, - -2.3408890211848448, - -2.345304809625531, - -2.3494633809659127, - -2.353496253796938, - -2.3573565452876855, - -2.3610005047792617, - -2.364423670294604, - -2.3681399357149915, - -2.3716925491588086, - -2.3750628276910715, - -2.3786262663618274, - -2.3820987194817866, - -2.3854191557477207, - -2.3888788089750532, - -2.392261089391221, - -2.3955259825376167, - -2.3986625856706967, - -2.4020212849022418, - -2.4052792949755357, - -2.4084241470848706, - -2.4118229996811458, - -2.415138626104849, - -2.418332992060213, - -2.4214098238012483, - -2.4247679337195867, - -2.4280148600755034, - -2.4311218804724852, - -2.434472323649816, - -2.4377119438096075, - -2.4408072138457064, - -2.4441194257994923, - -2.447334553211516, - -2.450465788660564, - -2.4534909118871373, - -2.456790315712701, - -2.459990088717165, - -2.463063331504452, - -2.466344663039822, - -2.4694971343194996, - -2.4724987220964985, - -2.4752518008517406, - -2.477970573217184, - -2.4803618089852852, - -2.4824230939913914, - -2.484411858812456, - -2.486097069536807, - -2.487475570785629, - -2.488755849954985, - -2.4704990885381157, - -2.4711918884828723, - -2.4716251161643963, - -2.4720285875166317, - -2.4722113961423577, - -2.4722142882879328, - -2.4722603184439977, - -2.472210734422747, - -2.4720819386762862, - -2.47191649333131, - -2.4718575129432434, - -2.4717757141875767, - -2.4716816292032036, - -2.4716784608841906, - -2.4717255000547116, - -2.4718505537784954, - -2.472036637668341, - -2.472276590077234, - -2.4726499301852525, - -2.473194175020105, - -2.473750658584963, - -2.4743981837696287, - -2.4751365347327092, - -2.475789126434855, - -2.476606277851643, - -2.4775141174742754, - -2.4784882419057896, - -2.479170649526634, - -2.4799361616886726, - -2.4808421592242866, - -2.4812865125738743, - -2.4817970381944168, - -2.48236022718956, - -2.4822000621122484, - -2.482140987774904, - -2.48226616509672, - -2.4824893724160764, - -2.481812446450025, - -2.481276641069579, - -2.4808616660909433, - -2.479388640816525, - -2.478131235615532, - -2.4770328744364267, - -2.4762117941541613, - -2.4744343401713875, - -2.473049125034432, - -2.472061128819237, - -2.470074586200412, - -2.4685829302260704, - -2.4675322067177, - -2.465340907762212, - -2.4637195770412967, - -2.462465925642334, - -2.461590583153105, - -2.459452130344529, - -2.45768219362529, - -2.456136388953494, - -2.4531415443726035, - -2.4503893212778376, - -2.447877824102149, - -2.445611676691979, - -2.441821833461578, - -2.4382742762525975, - -2.43502553707035, - -2.4304583614435824, - -2.426254692925012, - -2.4225024514182976, - -2.417775660402222, - -2.4135616821720776, - -2.409888704542008, - -2.40676731451173, - -2.4029150816077123, - -2.399669284387752, - -2.397036862952856, - -2.393873602942044, - -2.3913481230328824, - -2.3894197612794312, - -2.388055577008202, - -2.3862973151253515, - -2.385143398070053, - -2.384528848171724, - -2.38358725674946, - -2.3831928439186516, - -2.3832914042666475, - -2.383167341721767, - -2.3835545728430714, - -2.3844199958841394, - -2.3857015040921605, - -2.3869672788242418, - -2.38865592078969, - -2.3907251855294294, - -2.392917690250872, - -2.39546005153606, - -2.3983090665744013, - -2.401416968620059, - -2.404713899898257, - -2.4081930163179135, - -2.4118305337204613, - -2.4157178321113246, - -2.419696493258293, - -2.418994943268599, - -2.4233168289225433, - -2.427681626547321, - -2.43198866633445, - -2.436236042491288, - -2.440912455971904, - -2.4454942104208897, - -2.44987400674493, - -2.4547898582634597, - -2.4595339487043133, - -2.4640320247643475, - -2.4682090795663716, - -2.473015134794766, - -2.477602899597519, - -2.482044598072191, - -2.487171272643982, - -2.49187515972057, - -2.4961782450468193, - -2.501135736786614, - -2.505649241966268, - -2.509697003587686, - -2.5133127949558225, - -2.5176849478716545, - -2.5215096279534355, - -2.524902234985124, - -2.529197499289826, - -2.5331026201858173, - -2.536695159825439, - -2.5399685643367684, - -2.5441831469960703, - -2.5481022733192193, - -2.5516654343949847, - -2.556331928132983, - -2.560801320569684, - -2.56505761899205, - -2.57037940280263, - -2.575623354425654, - -2.580717210347661, - -2.5856254953012954, - -2.5916020822419474, - -2.597378234872824, - -2.6029269835973374, - -2.6092571997310654, - -2.6153243489314897, - -2.6210716015296898, - -2.626490572506491, - -2.632576653042666, - -2.6382950754512695, - -2.6435422938724593, - -2.649128741140574, - -2.6542684174129922, - -2.658862333772411, - -2.6635175265794517, - -2.6676322000067456, - -2.67115849300982, - -2.6740114090539144, - -2.676515000440902, - -2.678393190948142, - -2.6795845892280976, - -2.6801540013477094, - -2.6801453763813425, - -2.6795356427552908, - -2.6782140997385073, - -2.676385474398518, - -2.6737062801775022, - -2.6703496126067825, - -2.6661798223748296, - -2.6613300596150857, - -2.655738225891041, - -2.6492377796785793, - -2.6420898355168894, - -2.634268349220986, - -2.625768780314954, - -2.6165204657576537, - -2.606796812247981, - -2.5966584636174623, - -2.5860545711418297, - -2.5752320424362702, - -2.56435163685837, - -2.5534954180986054, - -2.5424595411290403, - -2.531579838959863, - -2.5210174484803414, - -2.5105890999267655, - -2.5007006055002985, - -2.4914278032255583, - -2.4827017217816625 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -33078,1988 +2435,15 @@ }, "name": "vx true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - -2.0431455475937126, - -2.041098488868885, - -2.039318557594581, - -2.037355353048201, - -2.035562050700945, - -2.034072097061162, - -2.032647292847854, - -2.031245953849539, - -2.030158276169029, - -2.02931606112836, - -2.0284768131838087, - -2.027923280686132, - -2.0276827217702342, - -2.027563256290576, - -2.027653684016173, - -2.0280651497872046, - -2.028744595343627, - -2.029622638537643, - -2.030812728594668, - -2.0323059935519496, - -2.034042991432525, - -2.036067654915326, - -2.0383905773698223, - -2.041000524980993, - -2.043891722549696, - -2.047070777286002, - -2.0505373529506565, - -2.0543162935309294, - -2.058356615341344, - -2.0626395886746147, - -2.0672342229877954, - -2.0720969131777176, - -2.0771670634892128, - -2.0824740367951313, - -2.0880701919027236, - -2.0938261887318816, - -2.099738077652051, - -2.1058959758019693, - -2.1121989080662025, - -2.1185953897371057, - -2.125126700661352, - -2.13176772449692, - -2.138410278988359, - -2.1450621566648698, - -2.1518050239073165, - -2.158496952172767, - -2.1651122202347395, - -2.1717316474338975, - -2.178328363415193, - -2.184847000100373, - -2.1913257923621066, - -2.197801747973288, - -2.2041969682747276, - -2.2105126008658242, - -2.216788131732953, - -2.222998461237478, - -2.229131620672331, - -2.235204944261683, - -2.2412313983044387, - -2.2472005032809435, - -2.2531000678756286, - -2.258883559845295, - -2.2646317890084173, - -2.2703551065437284, - -2.2759755034143985, - -2.281539458682037, - -2.287097306445556, - -2.2925744057525703, - -2.297876664236431, - -2.3032226659976174, - -2.3086001966496297, - -2.3137841307683056, - -2.318999589325326, - -2.3243469301285886, - -2.3296444649855497, - -2.334892568208537, - -2.3403275036753346, - -2.3458775570043557, - -2.3513695750057164, - -2.357033921201113, - -2.3628867780983915, - -2.3687728249533713, - -2.374772029783066, - -2.380974964145824, - -2.3873186053842264, - -2.3937217826507777, - -2.400322168420795, - -2.4071041983249444, - -2.413959345322838, - -2.4209557978833827, - -2.4281114607519085, - -2.435366335170189, - -2.4426948814035088, - -2.450160635127997, - -2.4577393988481218, - -2.4653487381440953, - -2.473044733863541, - -2.480798668457392, - -2.4885536280451617, - -2.4962875902279222, - -2.504011745422065, - -2.5117137473441637, - -2.51935382578494, - -2.5269368063587585, - -2.534411985534768, - -2.5418075492447407, - -2.5490672642046324, - -2.55618091363364, - -2.5631658329488505, - -2.570005314318777, - -2.5766246625361493, - -2.583029802099579, - -2.5892769324987372, - -2.595261810256118, - -2.600957493995364, - -2.606430001037026, - -2.6116435915502336, - -2.6165171986562186, - -2.62107463927431, - -2.6253914295863376, - -2.6293473703699104, - -2.632930289754145, - -2.6362926856661706, - -2.6393205588150934, - -2.6419741518614566, - -2.64436209601123, - -2.6465083011975303, - -2.6482704612736216, - -2.6497099661278987, - -2.651008704051774, - -2.651959829544119, - -2.6525464324178296, - -2.653004284054642, - -2.6532323163336313, - -2.6531016018981433, - -2.6527357020925133, - -2.65229851508962, - -2.651546056788673, - -2.650490209744761, - -2.649379619697229, - -2.6480497313037716, - -2.6464304186269407, - -2.644666474777054, - -2.6427977575444843, - -2.6406765961732286, - -2.6383560595852065, - -2.6360039808186437, - -2.633439922718961, - -2.6306551792380977, - -2.627836148321401, - -2.624905302015289, - -2.6217777988560282, - -2.6185392182335065, - -2.6152850274326958, - -2.6118723565529556, - -2.608323768967819, - -2.6047652917486537, - -2.601110251591164, - -2.5973394995376937, - -2.5935188474047783, - -2.589660389532735, - -2.585716413836379, - -2.581711978305492, - -2.5777008575176064, - -2.573654631323507, - -2.569585816963968, - -2.5655091937836256, - -2.561410899116417, - -2.5573044809894534, - -2.5531824732390653, - -2.5490255376303765, - -2.5448327226101872, - -2.5406084043038297, - -2.5363136653546228, - -2.531970321711207, - -2.527611327746382, - -2.5232017549014807, - -2.5187458641537996, - -2.5143271650081465, - -2.509923113934743, - -2.5054832823748936, - -2.501097317638329, - -2.496735842941311, - -2.4922736982478764, - -2.4877826505495073, - -2.483320393377629, - -2.478813688992871, - -2.4741739156263995, - -2.4695737534084383, - -2.4649998149227113, - -2.4602688446983336, - -2.455539484969212, - -2.450873993545394, - -2.446136367177385, - -2.441311905726711, - -2.4365828453242844, - -2.4319062348718448, - -2.427101149032551, - -2.4223934274618864, - -2.417818606936521, - -2.4131796001123287, - -2.4085859351567, - -2.404167045099572, - -2.3998431760979804, - -2.3955010544219277, - -2.391358751444559, - -2.3874060374531276, - -2.383439651717472, - -2.379639739499514, - -2.376087161344615, - -2.37265452507265, - -2.3693343269175804, - -2.3663005693508046, - -2.363505508755924, - -2.3607858177876313, - -2.358330717468218, - -2.3561625063514513, - -2.354128798822804, - -2.352306645745814, - -2.3507819237587464, - -2.349474862168032, - -2.3483188133137487, - -2.346899224866363, - -2.3464304791366573, - -2.346190740439876, - -2.346183819172775, - -2.3463277068911994, - -2.3466203547211766, - -2.347108485587073, - -2.3477611222662547, - -2.3485039810417843, - -2.3493894988174184, - -2.3504150384625575, - -2.3515109230800757, - -2.3526875634471467, - -2.3539613410132607, - -2.355303233190073, - -2.356679728998679, - -2.3581118006508786, - -2.3595811076394027, - -2.3610707257471413, - -2.3625848440577286, - -2.364126699797161, - -2.3656888299935375, - -2.367264417895337, - -2.3688491697319485, - -2.370430292300737, - -2.372040469241474, - -2.37364757927878, - -2.3752393955040874, - -2.376910573875902, - -2.378651172017621, - -2.380412423789804, - -2.382230885730166, - -2.3841738120561313, - -2.3861230554450774, - -2.3880832740587272, - -2.3901995469950523, - -2.392378681793206, - -2.3945732889506792, - -2.396877402662809, - -2.39931805223458, - -2.4017615900168505, - -2.404240411106565, - -2.406902752078194, - -2.40959649705028, - -2.4122993882434707, - -2.4151525041583115, - -2.418090053372537, - -2.4210285211953715, - -2.424030774070207, - -2.427184326019289, - -2.430343095483443, - -2.4335169367624596, - -2.4368622875205466, - -2.4402439652869186, - -2.443619457333311, - -2.4470962419275226, - -2.4506926393938713, - -2.4542989332206684, - -2.457948690658271, - -2.4617532750444644, - -2.465570592397603, - -2.4694018388301555, - -2.473328207281492, - -2.477297457839008, - -2.4812644228807783, - -2.485259766314849, - -2.4893206364580833, - -2.493369740701497, - -2.49741322617988, - -2.5015040296875934, - -2.505585232549158, - -2.5096343128092893, - -2.5136855627985897, - -2.517749416804595, - -2.5217874195880907, - -2.5258019507184497, - -2.529804995898574, - -2.5337681683931956, - -2.5376967892793107, - -2.5415981566565407, - -2.545462515585885, - -2.549287376586323, - -2.5530699496181546, - -2.556796045610329, - -2.5604649475924757, - -2.564086120636365, - -2.5676278369181222, - -2.5711028325517775, - -2.5745285478949564, - -2.577871093665459, - -2.5811090113793624, - -2.5842880122734178, - -2.587401761042651, - -2.5903690874246705, - -2.5932526824448567, - -2.5960679335405645, - -2.5987252996024583, - -2.601241308226582, - -2.6036559809137167, - -2.60591703308868, - -2.6079114879088645, - -2.609746915788405, - -2.6114261949149298, - -2.612751552095933, - -2.613823197051316, - -2.6147192062374276, - -2.6153041980660676, - -2.6155058742132864, - -2.615497543368734, - -2.6152314212893573, - -2.614433802351755, - -2.6133752377796813, - -2.612122925972609, - -2.61039028870685, - -2.608291236180279, - -2.606043469122516, - -2.6035381141887615, - -2.60056844389566, - -2.5974624099150665, - -2.5942223901111103, - -2.5905276677956848, - -2.5866331360400228, - -2.5826590998612695, - -2.5783834953462827, - -2.5737732688933184, - -2.569105453974845, - -2.5643086030424747, - -2.559096273027432, - -2.553809508551113, - -2.5484779597090608, - -2.54279537245869, - -2.5369098617866475, - -2.5310037876507683, - -2.5249278439634697, - -2.518457168520003, - -2.511970660344304, - -2.5054846009765463, - -2.4986395372328705, - -2.491726316807037, - -2.48488327053507, - -2.4778657654964826, - -2.4706291505358577, - -2.463511910084798, - -2.4564392075399786, - -2.449052568958302, - -2.4417966669281075, - -2.4347486996844014, - -2.4275268621736625, - -2.4203443512540006, - -2.413459323982333, - -2.4066919782234186, - -2.399782649465769, - -2.393167530052845, - -2.386798594837642, - -2.380209013075616, - -2.373765886384419, - -2.367623149370385, - -2.361453291012029, - -2.3551995466504145, - -2.3492635645331696, - -2.343533193415962, - -2.3375681046284265, - -2.3318564467878673, - -2.326464772267245, - -2.3209236181992443, - -2.3154441049755325, - -2.3103114352107847, - -2.3052997801353396, - -2.30008900050042, - -2.295208904007165, - -2.28117668115503, - -2.276916719138748, - -2.2726321227828112, - -2.268229811900109, - -2.2642147011162366, - -2.260446705785637, - -2.2563487051429445, - -2.2525421519282993, - -2.249111204695865, - -2.245425846116853, - -2.241748676036632, - -2.2384354795009758, - -2.2351908250277597, - -2.2315871252836534, - -2.228280168258539, - -2.225230654348591, - -2.2217496108878465, - -2.218356535221295, - -2.215255459090257, - -2.211971181110578, - -2.2083932966943944, - -2.2050806041601643, - -2.2018656053062737, - -2.198108427376121, - -2.1944885946249806, - -2.1910888324140405, - -2.187259054283813, - -2.1832882529753284, - -2.1795439485011725, - -2.1757345001135295, - -2.1714494416098544, - -2.1673538208682213, - -2.1634152283537285, - -2.159011711403157, - -2.1546218430824986, - -2.1504433875750424, - -2.146084240865145, - -2.1414556435403966, - -2.137017626866044, - -2.1326441373050384, - -2.1278584444612823, - -2.123188226625059, - -2.1187028556120118, - -2.113944736823934, - -2.109099982241923, - -2.104416335576278, - -2.0997064185706265, - -2.09471363331536, - -2.089878118467131, - -2.085191533095867, - -2.0803188191708424, - -2.0755402733384005, - -2.0709743044952647, - -2.066463810654393, - -2.0619893682814907, - -2.0577649575146046, - -2.0537585912349723, - -2.049829401156161, - -2.046146880561194, - -2.042738533433557, - -2.039531450404421, - -2.0365754677526495, - -2.033925802711227, - -2.031577433182553, - -2.029526597322461, - -2.0277959521548548, - -2.026377177872153, - -2.0253062757891134, - -2.0245684973749416, - -2.0241430698589196, - -2.0240757061005024, - -2.0243787338753787, - -2.024985727519881, - -2.025919139087103, - -2.027297030534302, - -2.028981933881933, - -2.030942104928879, - -2.0333209009572926, - -2.036040967950322, - -2.0389953656364224, - -2.042253657352336, - -2.045923220610949, - -2.0498004404712753, - -2.0538803395989205, - -2.0583469468504085, - -2.063024618870569, - -2.067841634735134, - -2.072905038887328, - -2.0782249352395854, - -2.083651796169639, - -2.089208137354131, - -2.0950122087596044, - -2.101011856019244, - -2.107116429000842, - -2.113276356479119, - -2.1194212617787955, - -2.125483430585179, - -2.1314834023568, - -2.1373757567093943, - -2.1432521903904664, - -2.149078450219, - -2.154339655090127, - -2.159472610916896, - -2.1646767601163908, - -2.1695863686664194, - -2.1740871307278082, - -2.1786780675463975, - -2.18333013745263, - -2.1876955356093384, - -2.1920853064616246, - -2.196618075779979, - -2.2010453268453607, - -2.2054119743350937, - -2.2099601734795526, - -2.2146403619247463, - -2.2191801599821193, - -2.2239651507835827, - -2.2291066690350334, - -2.2341776426454083, - -2.2395093787210714, - -2.245445641177345, - -2.264846398399858, - -2.280138034569753, - -2.3075086073724633, - -2.3174693172784773, - -2.3284297423540954, - -2.3398784944374507, - -2.351223723845483, - -2.3633695218291266, - -2.376220727159781, - -2.388854164977415, - -2.4019460359110676, - -2.415620510605388, - -2.4293229277833013, - -2.442922961383606, - -2.4569646585259504, - -2.4712648883004724, - -2.485149545562389, - -2.4992550883022773, - -2.513615537718999, - -2.5275982374836117, - -2.5414203131432886, - -2.555418611771632, - -2.569306259169433, - -2.5826630855272104, - -2.596071847154022, - -2.6094710166400352, - -2.6222746166131605, - -2.634847562110849, - -2.6472686563439334, - -2.659238510003545, - -2.6706712681421774, - -2.681831097562555, - -2.692612505764494, - -2.7027760306675788, - -2.7125299018972844, - -2.7218814377292895, - -2.730676045040183, - -2.7389470649266356, - -2.7467346580917593, - -2.7539872508888985, - -2.760661240963244, - -2.7667727406725753, - -2.772306617720438, - -2.7772893673645127, - -2.7816820047633968, - -2.785464589283358, - -2.7886854628455597, - -2.7913454740763415, - -2.7933679733617796, - -2.7947887719819002, - -2.795699932016385, - -2.796000763011243, - -2.79570232069332, - -2.7949171475278582, - -2.7935866405111214, - -2.7916702458699545, - -2.789240031292897, - -2.786347310397232, - -2.7829273547229807, - -2.779007386800202, - -2.7746164475029147, - -2.7697233441830638, - -2.7643744533615107, - -2.758543864367326, - -2.752216998778029, - -2.745468697504477, - -2.7383292567128326, - -2.7306550010615624, - -2.722590164432336, - -2.714212850275341, - -2.7053149469153532, - -2.6959841798273, - -2.6863822712655097, - -2.6764327174926468, - -2.6659785941669907, - -2.655381274400476, - -2.6446683835151354, - -2.633492242705869, - -2.6221415816036826, - -2.610764698936049, - -2.599098636856298, - -2.5871015464683773, - -2.5751499229289263, - -2.563154200283476, - -2.550673229807108, - -2.5381939096231, - -2.525823835220907, - -2.5130599696320575, - -2.5001343309451105, - -2.4873290440201052, - -2.4744039478651856, - -2.4610239854129192, - -2.447775200659152, - -2.434661234862857, - -2.42110475446251, - -2.4076245328554955, - -2.394459336765298, - -2.3811774811566013, - -2.3677531698884127, - -2.3547939921928562, - -2.3421508460700706, - -2.329197161502029, - -2.316636062166032, - -2.3045125944375044, - -2.292091408880014, - -2.2797177875542447, - -2.2678180661255345, - -2.256051873666299, - -2.243937278024267, - -2.2322923533467414, - -2.2210926790812713, - -2.2095033317484636, - -2.1982217276256093, - -2.1875362549156603, - -2.1768704036263964, - -2.166127677178518, - -2.156025919826511, - -2.146387259140188, - -2.136464889917912, - -2.1271338188619486, - -2.11855209068354, - -2.10992255900592, - -2.1016361901321035, - -2.0941860605497067, - -2.0871917581474584, - -2.080138141050894, - -2.073892046699544, - -2.068392872062449, - -2.062798281133434, - -2.0577695828843123, - -2.0535495256139784, - -2.0495833476917626, - -2.0457494511366945, - -2.042720532302813, - -2.040304736610645, - -2.037754236854674, - -2.0334010356676795, - -2.032443220734694, - -2.0321723149531135, - -2.032247022186978, - -2.032178900657765, - -2.0326852479491646, - -2.0337034387773176, - -2.034506618224362, - -2.0356372419811977, - -2.0372925503716073, - -2.0389882146044513, - -2.0405760214246653, - -2.0426046046831225, - -2.0449303386264592, - -2.0469696653528118, - -2.0492953408137673, - -2.0519864575202957, - -2.054488864848703, - -2.0570062061096728, - -2.0598345087415413, - -2.062746438781409, - -2.0654041576906286, - -2.068290468006004, - -2.0713640193845912, - -2.0741723879379474, - -2.0770360158583245, - -2.0800839716145982, - -2.083056615471447, - -2.0858872889416364, - -2.088865584352114, - -2.091915136083311, - -2.094745126870928, - -2.0976538059016003, - -2.1006750572916437, - -2.103579081553962, - -2.1064561208403205, - -2.1094265587180763, - -2.112413361299734, - -2.1153106082289566, - -2.118268811966989, - -2.121269024546246, - -2.1241830329140288, - -2.1271023939215223, - -2.1300572080235756, - -2.1329886830457263, - -2.1358835462444072, - -2.1388004689745657, - -2.141727252943157, - -2.1446249188128226, - -2.1475323813300196, - -2.1504533330296978, - -2.1533683796011855, - -2.156276875600707, - -2.1591831798386747, - -2.162085161486443, - -2.164982048190234, - -2.1678736185844283, - -2.1707595046444164, - -2.1736566492233833, - -2.1765489608568984, - -2.1794258685864545, - -2.1823081934015818, - -2.1851992262238107, - -2.1880748073968515, - -2.1909449983142117, - -2.193841607592873, - -2.1967261709900896, - -2.1995911711648213, - -2.2024679373557974, - -2.205334238006635, - -2.2081717611403526, - -2.2109999118842922, - -2.213836388657617, - -2.216644678946257, - -2.219427648482093, - -2.2222171436008074, - -2.224987237055386, - -2.2277276148842526, - -2.2304571092430536, - -2.233180201693093, - -2.2358762344318177, - -2.2385539927136255, - -2.2412398157660176, - -2.243913257402837, - -2.246567952524509, - -2.2492226565723943, - -2.251877019790444, - -2.2545234446841893, - -2.257166701459659, - -2.2598101981439274, - -2.262448461127657, - -2.2650912029107335, - -2.267742132574739, - -2.2704034475809367, - -2.27307501399387, - -2.2757539886390914, - -2.2784549637485125, - -2.281185904141227, - -2.2839400658437805, - -2.2867014603139904, - -2.2895030357055615, - -2.2923420801982637, - -2.29519634806108, - -2.2980839532477413, - -2.3010158286112388, - -2.3039760278674897, - -2.3069404810361855, - -2.3099285850695517, - -2.3129232711039767, - -2.3158724425272452, - -2.318796812574766, - -2.3217035471247693, - -2.3245517479246995, - -2.327298560683624, - -2.3300210009075633, - -2.332719308280239, - -2.3353266093325287, - -2.337899537047695, - -2.3404563757399846, - -2.3429579908424034, - -2.3454179819755154, - -2.3478582223852675, - -2.350264567932437, - -2.352619102531689, - -2.3549513298822307, - -2.3572558225904032, - -2.359507052146737, - -2.3617230676066896, - -2.36391344409525, - -2.3660511197072798, - -2.3681354142383237, - -2.370194183071835, - -2.372222284918526, - -2.3741987453940347, - -2.3761544547496616, - -2.3780899552996466, - -2.3799817326690635, - -2.3818419633781804, - -2.3836827822716278, - -2.385493160717644, - -2.3872587449432343, - -2.3890026437343646, - -2.390722819946807, - -2.3924016125907093, - -2.3940594736725695, - -2.39570583845107, - -2.3973565236558185, - -2.3990305342305835, - -2.400737182153443, - -2.402476286908796, - -2.4042568524309225, - -2.4060664662914024, - -2.407910595645763, - -2.4098173874786637, - -2.41177805102897, - -2.4137748160368444, - -2.415821441353518, - -2.417944073291594, - -2.420100343666391, - -2.4222924299848043, - -2.4245801787092764, - -2.426921560268454, - -2.4292920869038985, - -2.4317226392030413, - -2.4342287669236886, - -2.436750246533848, - -2.439297165565874, - -2.4419372422456336, - -2.444564328025002, - -2.4471616457519514, - -2.449815762873422, - -2.452482484957278, - -2.4550951679658524, - -2.4576770563232766, - -2.4602899609247553, - -2.462851637672736, - -2.4653602851930105, - -2.4678683377682327, - -2.4703132827731626, - -2.472687491229749, - -2.4750323481320438, - -2.477347246825834, - -2.4795757797092386, - -2.481714570461191, - -2.4838071108317554, - -2.4858114386979495, - -2.487718961499778, - -2.4895451292011246, - -2.4912651900404525, - -2.4928549214293096, - -2.494318376234315, - -2.4956391222363212, - -2.4968256172919046, - -2.497875360520532, - -2.498740513670672, - -2.4994273857223606, - -2.4999513645208835, - -2.500274781771506, - -2.5003627251471747, - -2.500278624605929, - -2.5000201329120233, - -2.499501894197391, - -2.498812158418659, - -2.497997541555346, - -2.496975724210275, - -2.4957810333039383, - -2.494488069228382, - -2.4930637367758606, - -2.491446161715971, - -2.4897608670630915, - -2.488001103542875, - -2.4860379961626378, - -2.4839836436677336, - -2.481894933091114, - -2.479694287689113, - -2.477391516181183, - -2.47510211213891, - -2.4727956938494264, - -2.4703849633976325, - -2.467981189176746, - -2.465572563429832, - -2.4630396522973816, - -2.4604209367246916, - -2.4577737055377518, - -2.455062883102655, - -2.4522399843634783, - -2.4494044217375217, - -2.446552301572161, - -2.443608683466217, - -2.440645732144225, - -2.43770271858231, - -2.434746038475588, - -2.431768806158671, - -2.4288231036358345, - -2.425900960983456, - -2.4229709971611104, - -2.4200762294492577, - -2.417233175399718, - -2.4144293361616453, - -2.4116799506054787, - -2.4090106848828063, - -2.4064335793144234, - -2.4039419760156964, - -2.4015503679602586, - -2.3992641001980326, - -2.397087963419785, - -2.3950257976445304, - -2.3930922638335415, - -2.3913135841981816, - -2.3897134154726642, - -2.3882967345530446, - -2.3870560575554456, - -2.386024479582757, - -2.385192828481085, - -2.3845640039646208, - -2.384164922387742, - -2.383974966385576, - -2.383990454889905, - -2.384222456949327, - -2.384693794124092, - -2.385345516976183, - -2.386194140070922, - -2.3872691620596402, - -2.3885210390258185, - -2.389967314717067, - -2.391656012892517, - -2.3935505922669016, - -2.3956275968160092, - -2.397875947480236, - -2.4003138509639497, - -2.4029027580996463, - -2.4056189123636136, - -2.408470003535782, - -2.411468096345565, - -2.414612764190538, - -2.417877679510836, - -2.421250508352094, - -2.4247578248214134, - -2.4283576045396194, - -2.4319953253804116, - -2.4356963183989166, - -2.439460399470422, - -2.4432483900191992, - -2.4470544741842954, - -2.4509072379842385, - -2.4547978295069246, - -2.4586629300759646, - -2.462540127655287, - -2.4664374707323664, - -2.4702941240245533, - -2.4741146608351676, - -2.47793798946877, - -2.481737770133844, - -2.485453879356318, - -2.489159173101969, - -2.492864206860764, - -2.4965138118972083, - -2.500158639372075, - -2.5038182955746016, - -2.507445140352494, - -2.5110252281963326, - -2.5146242708349815, - -2.518249753242218, - -2.521830326592765, - -2.525434949054328, - -2.5290925094985344, - -2.5327358151575985, - -2.536387875654318, - -2.5400933255366835, - -2.543837935752558, - -2.547583441915566, - -2.5513633805665537, - -2.555181349050322, - -2.5590089302029506, - -2.562832600783954, - -2.566656544017216, - -2.5704785169798896, - -2.574256778745405, - -2.5779960972725635, - -2.581654932837584, - -2.5852417899278586, - -2.5887025101195853, - -2.592023403319748, - -2.5952445512656657, - -2.5983193886856517, - -2.6012293005494525, - -2.6039544304410103, - -2.6065140141301226, - -2.6088127480249934, - -2.610800034310008, - -2.612537764503129, - -2.6138857549462853, - -2.6148079598062934, - -2.61543333619132, - -2.615800900254162, - -2.615801182540155, - -2.615455392685229, - -2.614926063599705, - -2.6140504354367975, - -2.612821318363887 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -35069,1987 +2453,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - 0.4919672793655029, - 0.49636928426530147, - 0.5054325913938322, - 0.5185517616785604, - 0.5351696314411565, - 0.559205554549915, - 0.5861040074940266, - 0.615224015022944, - 0.6512263141796585, - 0.6887858746714396, - 0.7273031883732359, - 0.7718031339926564, - 0.8166438949893309, - 0.8615602614425714, - 0.9063382182284987, - 0.9559930678192767, - 1.0050907309191417, - 1.0535608620285377, - 1.106284852961964, - 1.1580974334402905, - 1.2090314402341342, - 1.2591005936633561, - 1.31251076479117, - 1.3646517143687094, - 1.4155056280278095, - 1.4682148617588981, - 1.5195761222507678, - 1.5697299961350855, - 1.6208741693444215, - 1.670951200612131, - 1.720138303197246, - 1.7686148797875691, - 1.8175703830174332, - 1.86591604824495, - 1.9138686438290518, - 1.961711524897728, - 2.0093526721716612, - 2.0570646927242775, - 2.1050530868976995, - 2.1525695196201653, - 2.200908095197107, - 2.2506125390927787, - 2.2997004997613417, - 2.350863227471671, - 2.4043033565217744, - 2.4562291768796602, - 2.5107195734712064, - 2.5667877531104613, - 2.6237449093634835, - 2.6775321447770613, - 2.7319019730664706, - 2.7867822735853642, - 2.8368732818136198, - 2.887609315273525, - 2.939103514305757, - 2.9913563721697027, - 3.0385318479158543, - 3.086576798842991, - 3.1356001363232298, - 3.179040591661894, - 3.2238597482643545, - 3.270250387814198, - 3.3109335163850533, - 3.3535756367814633, - 3.398296639608051, - 3.445209655172715, - 3.486397545513287, - 3.5302264525382148, - 3.576766276628353, - 3.6174711586755635, - 3.6612581376135553, - 3.7083022818555955, - 3.7584823197646196, - 3.803213724449635, - 3.851578014333645, - 3.9034073279347354, - 3.9499264243828325, - 4.000155244011725, - 4.054070169368932, - 4.102733512605296, - 4.15514926702265, - 4.211270986963855, - 4.270917226371121, - 4.3254590780832824, - 4.383556565229126, - 4.445094589324884, - 4.501425693039166, - 4.5611780072033, - 4.624243450093047, - 4.690501231642145, - 4.751470908406578, - 4.815644871946478, - 4.882898493198667, - 4.944735518444357, - 5.009614643681306, - 5.077355248163363, - 5.139618360208235, - 5.20469698160363, - 5.272379653901407, - 5.3425931651897605, - 5.407403903349651, - 3.265501278201696, - 3.3103320234714495, - 3.35178602960665, - 3.3950136309495895, - 3.4403545437412695, - 3.4874207715829177, - 3.5308359696265357, - 3.575996109071925, - 3.622653673780344, - 3.665622726899129, - 3.710100138423282, - 3.7560223530867467, - 3.7984616755077925, - 3.8424161127344423, - 3.887874644222757, - 3.9348972481361066, - 3.978786229158039, - 4.024018352801148, - 4.070565096174988, - 4.1138242241059055, - 4.158174018649806, - 4.203485591403485, - 4.249794332789951, - 4.293040222500682, - 4.337261813992984, - 4.382614285346174, - 4.425090989618064, - 4.46835695738711, - 4.51234023116868, - 4.553835607883567, - 4.59595587236379, - 4.6384543986628834, - 4.681498594269062, - 4.722413050928583, - 4.763814454174876, - 4.8057035601585145, - 4.8452639934197865, - 4.885568734147069, - 4.9264189212946246, - 4.967742294156984, - 5.007049152651077, - 5.047083625190061, - 5.087750590984847, - 5.126814002286128, - 5.166404647808588, - 5.206473322825317, - 5.245622360864989, - 5.285365880333414, - 5.325612233555729, - 5.366321598467112, - 5.40648272226186, - 5.447164368355334, - 5.488318216983396, - 5.52918394424537, - 5.570562650504073, - 5.6124699131032205, - 5.654953428487985, - 5.697545154989531, - 5.740509338874257, - 5.783815749670436, - 5.827679209605191, - 5.871811045412826, - 5.915954733019972, - 5.960639481978994, - 6.005400512901767, - 6.050065036382732, - 6.094427922191688, - 6.139445219522266, - 6.183715000667374, - 6.227057273345704, - 6.2711218947044935, - 6.313808549236492, - 6.3554871403099025, - 6.396375860343333, - 6.437952924036041, - 6.478589664038775, - 6.518786388166476, - 6.560455065731568, - 6.601063712881539, - 6.641214916016275, - 6.684358593423284, - 6.726609206526997, - 6.768387741040847, - 6.809954102530307, - 6.854621104456516, - 6.898667940087841, - 6.942211185732766, - 6.989171724293259, - 7.035305743924167, - 7.080726904922095, - 7.125511474646639, - 7.173627899341056, - 7.220804622496007, - 7.267066276014495, - 7.31654187557757, - 7.364755837041393, - 7.411719909972668, - 7.461724868748453, - 7.510187285453811, - 7.557201579397305, - 2.302018832495439, - 2.3229235365920102, - 2.3425395293467406, - 2.360932432764129, - 2.381587827055403, - 2.4008791751581526, - 2.4189341870099437, - 2.4357845183911744, - 2.4549590408609068, - 2.4726772341636525, - 2.488959859639065, - 2.5075775265424642, - 2.5246124156970042, - 2.54010890891474, - 2.5580929103911823, - 2.5744052573508216, - 2.5890840731778773, - 2.602081926023951, - 2.6171967543840453, - 2.630219680384752, - 2.655866263838279, - 2.667254651155444, - 2.6773413579276384, - 2.686270424242611, - 2.697723272513631, - 2.7077317849147784, - 2.7166767258875977, - 2.7283400445616164, - 2.7385842883197107, - 2.7477847186133637, - 2.759740299799038, - 2.7702905582576824, - 2.779799738487635, - 2.788290359739895, - 2.7991043646029974, - 2.8089693360462547, - 2.817830954910921, - 2.8292066184529148, - 2.8394925243564835, - 2.849103740401964, - 2.8582049202230158, - 2.8693860774329565, - 2.8800278557290904, - 2.890182521442688, - 2.902425181701884, - 2.91397660307738, - 2.9250967794246825, - 2.938312292125789, - 2.950864710477796, - 2.962913546859432, - 2.9745360679102313, - 2.9877405879658405, - 3.000465590738039, - 3.012677829155201, - 3.0260352024950015, - 3.0388293826320623, - 3.05115452538939, - 3.063059661311174, - 3.075877228388848, - 3.0882006712721903, - 3.1000989033009523, - 3.1123905652331834, - 3.1241536989123566, - 3.135410301548586, - 3.1467491153278786, - 3.1576778658282785, - 3.1682561162530005, - 3.1785391348750816, - 3.1887737184097222, - 3.19901417065777, - 3.2092695896444257, - 3.219231933351537, - 3.229471005873944, - 3.239876665386033, - 3.250344007618842, - 3.2604463253845486, - 3.2708641485021794, - 3.2813698320100197, - 3.291121724812764, - 3.30142039448257, - 3.312125603570282, - 3.3216152221118387, - 3.3322001813156485, - 3.34313572103599, - 3.3543447069223378, - 3.3648809990292876, - 3.3758929611295247, - 3.387643647700356, - 3.3978079767470173, - 3.408472362477483, - 3.419665493631282, - 3.4311240376376215, - 3.4411903149030563, - 3.4518340442963247, - 3.462839232952435, - 3.4720179257495136, - 3.4818979204268325, - 3.49225212643066, - 3.500536842749736, - 3.509506798222566, - 1.405050628587331, - 1.4086701610868506, - 1.410420776993856, - 1.4128403032049206, - 1.4158971570295646, - 1.4169445898002242, - 1.4187858672176015, - 1.4214583173064057, - 1.4248581283969834, - 1.4263644473121238, - 1.4287974205447243, - 1.4321610924131976, - 1.4334498573533336, - 1.4357646197366312, - 1.4390130956364096, - 1.4399583529201807, - 1.4420949031659795, - 1.4453815873099987, - 1.4497895140089825, - 1.4520992646342412, - 1.4557475450458228, - 1.4606319586866587, - 1.4632811292829344, - 1.4675301329043189, - 1.4732208757804157, - 1.4802370471454003, - 1.4855637220477724, - 1.492668176359659, - 1.5011802544715456, - 1.5077579015855003, - 1.5162810246340772, - 1.5264010054396913, - 1.5338779212950784, - 1.5435398658328507, - 1.5544808689846796, - 1.5663887776211527, - 1.5759274401153416, - 1.5864220472259984, - 1.5976653813995338, - 1.6064141648194632, - 1.6162700950166584, - 1.6270630234678927, - 1.6383826108340753, - 1.6475074357384494, - 1.6575927615744461, - 1.6684215526437343, - 1.676598654479838, - 1.6859466040836102, - 1.6955981909109845, - 1.7019420373604213, - 1.7092955863291424, - 1.7171949044133878, - 1.7252015951822852, - 1.7296027918887198, - 1.7341378945525368, - 1.7392842394413344, - 1.7417639391212534, - 1.745093994371495, - 1.7493007421631657, - 1.7543258514436293, - 1.7569184551546027, - 1.7602757804457276, - 1.764404377440158, - 1.7660973991800335, - 1.7686117725589254, - 1.7719817511823748, - 1.7730770580546342, - 1.774979659786598, - 1.777629225068411, - 1.78094903770948, - 1.7819740753415148, - 1.7832572642321736, - 1.7850992374940486, - 1.7856366983668468, - 1.787054601157637, - 1.7896556745564394, - 1.7936564726920314, - 1.7970531160346046, - 1.801981095444968, - 1.8084182403333875, - 1.8147377098957587, - 1.8223762424601093, - 1.8312605392170989, - 1.840455851459706, - 1.8507193476725, - 1.862111185888587, - 1.8743725870716057, - 1.8870899723134125, - 1.9005003459282364, - 1.9144632174357523, - 1.9606394483424578, - 1.9762603111729922, - 1.9921789062904238, - 2.0081661959407433, - 2.024257552522094, - 2.0408851357811555, - 2.0573129573019777, - 2.0736439906029442, - 2.0906064404606455, - 2.1070051986431992, - 1.1180452758618447, - 1.1312304057466174, - 1.1449296148691905, - 1.1578247355501807, - 1.1699082636941165, - 1.1828784318943641, - 1.1948703204138504, - 1.205918261166987, - 1.2160530401463476, - 1.2272528615674352, - 1.2374396205420168, - 1.2466651333925585, - 1.2572878399769183, - 1.2668906542496838, - 1.275560565971925, - 1.2859056467258019, - 1.2950953374832577, - 1.3032219837702272, - 1.3103837590744194, - 1.3190732204611353, - 1.326753749921145, - 1.333526942622381, - 1.3424100407046398, - 1.3502703360853079, - 1.3572621479334361, - 1.3635096026707303, - 1.3719107634101881, - 1.3793263373676015, - 1.3858212013870193, - 1.394956848211708, - 1.403151354263818, - 1.410423466002551, - 1.4199309584657198, - 1.4283835306968846, - 1.4358230212789118, - 1.4422890629693232, - 1.4506949168507395, - 1.4584774445527728, - 1.4656800385188677, - 1.4756982267315775, - 1.4848691997071777, - 1.4932480865732918, - 1.5008861977610697, - 1.5112065965320982, - 1.520575157404452, - 1.5290180035612932, - 1.5399913817704083, - 1.5498938510572042, - 1.558761861673966, - 1.5699539353170724, - 1.5799613651026487, - 1.5888496616237686, - 1.596740476456275, - 1.6065911446944363, - 1.6153558565610322, - 1.6227683577021697, - 1.6313299981834646, - 1.6386236601939788, - 1.6445518062727023, - 1.6492310896073494, - 1.6548882263385258, - 1.6593204737122855, - 1.6626154805311868, - 1.6670130469800473, - 1.670331906548286, - 1.6726329626690102, - 1.6758951189745903, - 1.6781090806177663, - 1.6792014440532854, - 1.6793767735809126, - 1.680596859062867, - 1.6811249324546305, - 1.6810821307355772, - 1.6826698754482738, - 1.683921968120212, - 1.684846345149575, - 1.6855917033390018, - 1.6880056112177928, - 1.6900775389097784, - 1.6918630178706944, - 1.6954670143079258, - 1.6978009481541327, - 1.6990019411577464, - 1.7029688822268882, - 1.7062400659649606, - 1.7079903880626242, - 1.7100966439654328, - 1.7176241913186843, - 1.7252182612984475, - 1.7326860373843456, - 1.7438096502941423, - 1.7543828079133579, - 1.7642383417295464, - 1.7732442305138054, - 1.786660039036721, - 1.7988646868160827, - 1.8097208043254112, - 1.8235673176349678, - 1.8364699250229548, - 1.8479431396501365, - 1.1586103893409034, - 1.1698642083543753, - 1.1794434163239251, - 1.1867159733941748, - 1.1949113779325593, - 1.2012099978819035, - 1.2051365575361699, - 1.2090041728027079, - 1.2109926768297707, - 1.210425887447951, - 1.2071443319390263, - 1.1866514658754197, - 1.1729187609708902, - 1.1518611189177272, - 1.1446575512272994, - 1.137593392529756, - 1.1323470973315004, - 1.127612151567543, - 1.1232559224074337, - 1.1209967494606332, - 1.1193422563945474, - 1.1185305804778147, - 1.1187485068140166, - 1.1208472131840574, - 1.1240967060107256, - 1.128578563557165, - 1.134719942704194, - 1.141983683898447, - 1.150397289196127, - 1.1598572966361715, - 1.1703154215372609, - 1.1812303025151554, - 1.1923722285486915, - 1.2032194289494018, - 1.21431528037437, - 1.2253889595909588, - 1.2356729546379697, - 1.245953217193745, - 1.2561187785935854, - 1.2659040646800055, - 1.2746420510061724, - 1.28305651631374, - 1.2910436846235336, - 1.2975089918161087, - 1.3033756912636, - 1.3084975486124744, - 1.3115868509272657, - 1.3139129729694, - 1.3155426668297343, - 1.3164886654401502, - 1.3155879489740347, - 1.3142802688163713, - 1.3124779663871387, - 1.3087091622851668, - 1.3047433930710968, - 1.30075135549443, - 1.2964162548349119, - 1.2906039767458575, - 1.2848088683431333, - 1.2792712665452755, - 1.2725038501929071, - 1.266150941726893, - 1.2603513816859064, - 1.2532319802457228, - 1.2468815732068745, - 1.2412602950753822, - 1.2366019544574667, - 1.2304540880003587, - 1.2254864205820195, - 1.2217838069680955, - 1.2167706684255504, - 1.2132200860970603, - 1.2111884530418138, - 1.2106537074053572, - 1.2081877820991047, - 1.207449537550014, - 1.2086472448133123, - 1.2079618202965936, - 1.2092958627058445, - 1.2124984783337944, - 1.2140927638746102, - 1.2181298084315135, - 1.2245467494525901, - 1.2332151441781622, - 1.240595654934056, - 1.2504669274125684, - 1.2619916555325688, - 1.2710807022323025, - 1.2813873035818109, - 1.2927284092917206, - 1.3046346382151743, - 1.3139246248098806, - 1.323964161911396, - 1.3344265049092316, - 1.341294452227662, - 1.3461932949341153, - 1.3519842585138067, - 1.3550546212672319, - 1.3592747567381918, - 1.3643450373180486, - 0.8392538057096149, - 0.8418556507375295, - 0.845297430301249, - 0.8494479374315075, - 0.8517554319559721, - 0.8547379255613407, - 0.8583081820040306, - 0.8623725162662248, - 0.8647600747801937, - 0.8671475773900666, - 0.8695103616436162, - 0.8696426165331568, - 0.869562441710461, - 0.8696445931238328, - 0.8686483355021022, - 0.8681913824465332, - 0.8683725222702777, - 0.8694182805346232, - 0.8703179465839629, - 0.8721056188084397, - 0.8749773300272362, - 0.8781000844932562, - 0.8822152963017186, - 0.8874132471962282, - 0.8932982268291689, - 0.8994986451865349, - 0.9061093402051759, - 0.9131070209901531, - 0.9205828736224091, - 0.9283576035510218, - 0.9364485370278841, - 0.945071792050858, - 0.9538647248721055, - 0.9627559658339354, - 0.9716539357601159, - 0.9812286698507421, - 0.9906709488587292, - 0.9998609904866483, - 1.0097356181252855, - 1.0193006121052235, - 1.028437905821467, - 1.0372801219872505, - 1.0467875830331084, - 1.0557127008715177, - 1.064318282912525, - 1.0734456973124966, - 1.0820638602539587, - 1.10602432234432, - 1.1136291542297538, - 1.1206389342200247, - 1.1279438687703425, - 1.1345079675928769, - 1.1403563173109594, - 1.1458649729981498, - 1.150686083776647, - 1.1549536119934651, - 1.1585211114749427, - 1.1615556904138138, - 1.1639462621104104, - 1.1657053605473182, - 1.167505607536786, - 1.168801251108801, - 1.1697810532325552, - 1.170567773128054, - 1.1712534227447853, - 1.171855106111954, - 1.1726394123914576, - 1.1735562892106162, - 1.1747890938583265, - 1.1761491528338714, - 1.1779330296445651, - 1.179963218037839, - 1.1822850802894118, - 1.1849181706039595, - 1.188029993959945, - 1.1914593328872811, - 1.1952467396820587, - 1.1988635544444308, - 1.202832876016556, - 1.2071405323371132, - 1.2115428335608984, - 1.216209765740198, - 1.2211248776718386, - 1.2262361035337686, - 1.2310661931768079, - 1.235791807248086, - 1.2403528477050447, - 1.244045597440085, - 1.2477458388166631, - 1.2514592810507665, - 1.2551584325660756, - 1.258362761015364, - 1.2616326150747212, - 1.2649777063788066, - 1.2676931351927476, - 1.2705716615392642, - 1.273614576934765, - 1.276409757511892, - 1.2793487452055419, - 1.282422845290423, - 0.8502187171898842, - 0.8522323769741282, - 0.854427099640474, - 0.8568004880499522, - 0.8587989183037079, - 0.861005692587386, - 0.8633863839437911, - 0.8659270328376439, - 0.8679717289325226, - 0.870053019743194, - 0.8721549124910821, - 0.8735208731459219, - 0.87500645517753, - 0.8766169451325997, - 0.8776730854640137, - 0.8788248549703505, - 0.880172174309665, - 0.8818527301109604, - 0.8833650999008786, - 0.8851944673395085, - 0.8873429431319205, - 0.8894288341777985, - 0.8918839994089538, - 0.8948376134006205, - 0.8982284548112842, - 0.9016929444126456, - 0.9054278298584911, - 0.9093743883421153, - 0.9134145109274444, - 0.9174249633041234, - 0.9214181135272896, - 0.9257007928105825, - 0.9298512947414946, - 0.9338807626294877, - 0.937786021707077, - 0.9420421263321364, - 0.9461787700844939, - 0.950218513461905, - 0.954719436328802, - 0.9589443624684723, - 0.9630374381018328, - 0.9670277910384244, - 0.9718266828640578, - 0.9763870991089969, - 0.9805362550664959, - 0.9856913336230647, - 0.990264235124634, - 0.9944593831906121, - 0.9998671547426939, - 1.004458315860124, - 1.0085240217428757, - 1.0122589455997264, - 1.0169573656804167, - 1.020847426989615, - 1.0243045690249306, - 1.029122635268696, - 1.0327821845204976, - 1.0361536826805362, - 1.0394186101458425, - 1.0430004283689647, - 1.0462862064296155, - 1.0494640059805946, - 1.0540439630201872, - 1.0579494703096937, - 1.0615353561121816, - 1.0672738123050975, - 1.0722037711535097, - 1.0765998552924636, - 1.0805416000595989, - 1.0864879286413907, - 1.0918738887369468, - 1.0967156981276638, - 1.1040027309621783, - 1.1107770224218356, - 1.1169824079245978, - 1.1225698507511876, - 1.1301171963809993, - 1.1369428524743501, - 1.143073268869614, - 1.1513534484769978, - 1.1587451980769035, - 1.1653300802335917, - 1.1741098188296728, - 1.1817361638545374, - 1.188368420505398, - 1.1941341905704215, - 1.2018478240964965, - 1.2083947918032802, - 1.2139273644727337, - 1.2213801854248398, - 1.2276076222642718, - 1.2326865117793964, - 1.236681439640994, - 1.242704716720078, - 1.2479041167223637, - 1.252293713170287, - 1.2588464983168055, - 1.2643714081458182, - 1.2690673528555756, - 1.2759193177900399, - 0.9051484250896638, - 0.9097128365732184, - 0.9134647587558021, - 0.9191225096293516, - 0.9238951020501323, - 0.9278481361698057, - 0.9336793079789588, - 0.9386650111055649, - 0.9428735952623808, - 0.9463280934878214, - 0.9514342542713634, - 0.9556992888696217, - 0.959175102692687, - 0.9642201504837494, - 0.9684341471525904, - 0.9718796098823886, - 0.9766451475775388, - 0.9806194620400611, - 0.9838865254513347, - 0.9866069273376699, - 0.9903709514789153, - 0.9934312895469466, - 0.9958201374250207, - 0.9989172737642332, - 1.0014785186643367, - 1.003405989073394, - 1.004701227063915, - 1.0061686254621596, - 1.0070949010377215, - 1.0076492426867172, - 1.0079855066711094, - 1.0078324233156126, - 1.007269491527136, - 1.0059596712184506, - 1.0044331734011898, - 1.0028920067477707, - 1.0011220694898677, - 0.9981209744829075, - 0.9951668075554199, - 0.9923037776203795, - 0.9880262554693217, - 0.9842002605384073, - 0.98082441706391, - 0.9778698590632481, - 0.9735998012779894, - 0.9701808891924198, - 0.9675944991401124, - 0.9631351975304095, - 0.960108713969915, - 0.95830823188943, - 0.9539857329873642, - 0.9516911068616936, - 0.9505365641271865, - 0.9505366065203846, - 0.9479390581943226, - 0.9471339643229744, - 0.9472923567055154, - 0.9437070266158866, - 0.9418002462536794, - 0.9411560500003417, - 0.941505218033121, - 0.9392029044399555, - 0.9387441395994263, - 0.9397354615828281, - 0.937616031597263, - 0.9374877654280213, - 0.9386594813520834, - 0.9354808391977911, - 0.933869621077137, - 0.9334751175225242, - 0.9341180184237047, - 0.9307228617594038, - 0.9289592168198286, - 0.9284523366383193, - 0.9236599364623833, - 0.9204349291841476, - 0.9185187255163723, - 0.9177447563692154, - 0.912949449263003, - 0.9096632221424392, - 0.9077721692173217, - 0.9019227192076358, - 0.8977406814215276, - 0.8950820349942672, - 0.8885630832941216, - 0.8838790680398685, - 0.8809603177450898, - 0.8797402742002889, - 0.8753947666299635, - 0.8729868611038516, - 0.8724083212709142, - 0.8691699300140895, - 0.8678848745055527, - 0.8684452457997094, - 0.8707681982597784, - 0.8710612183442876, - 0.8733153451611733, - 0.8772865937810159, - 0.8795714851608831, - 0.8835354988404347, - 0.534378791525187, - 0.538140173709119, - 0.5434016958713387, - 0.5499260638656387, - 0.5576076136037571, - 0.5645281746152975, - 0.5725012085650492, - 0.5812147449600227, - 0.5893816435965529, - 0.5982882040917465, - 0.6078790266573019, - 0.6183267617597694, - 0.6283301224198707, - 0.6391445886536109, - 0.6507978443569029, - 0.6624680334839169, - 0.6738760610265274, - 0.6852330467291619, - 0.6973631544145861, - 0.7093370776307075, - 0.7209588355263651, - 0.7321694935428863, - 0.7439504112880433, - 0.7549014045217817, - 0.7650038466772158, - 0.7761495182468789, - 0.7864324575712688, - 0.7958253232117335, - 0.8048009380117638, - 0.8147924935150805, - 0.8240880901761602, - 0.8322539244465421, - 0.8423948633043501, - 0.8515354557097952, - 0.8599652078069331, - 0.8705247151630673, - 0.8799117220124775, - 0.8881329351509382, - 0.8951991106673979, - 0.9038931582832246, - 0.9116060160637058, - 0.9182429430241608, - 0.9272044052997552, - 0.9354901594731353, - 0.9430667673641557, - 0.9497354295745004, - 0.9590428990724826, - 0.9674572345478465, - 0.9750866303190735, - 0.9852306436685856, - 0.9945539461468486, - 1.003165894373891, - 1.0142727279725268, - 1.0246745765473861, - 1.0343461213548408, - 1.0434463488016048, - 1.0555602417578775, - 1.066912647785518, - 1.0772942117093505, - 1.0904346780325558, - 1.102637288077122, - 1.11373988340037, - 1.1234501435746989, - 1.1361286274783928, - 1.1471597420435253, - 1.1563995995873206, - 1.1676335511718494, - 1.1768406855925806, - 1.1838826043621857, - 1.1928873639540487, - 1.1996488680216466, - 1.2045782910485183, - 1.2072438292607108, - 1.2116308889796434, - 1.2135910154803315, - 1.2126989642245019, - 1.2127743267271225, - 1.2097320886384728, - 1.2036130482818963, - 1.19564869757473, - 1.189846466998711, - 1.1828951893914952, - 1.1749160692150762, - 1.1691342640175268, - 1.1626846070229906, - 1.155720712836293, - 1.1507803697349248 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -37061,1987 +2473,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -0.7729437847018489, - -0.7744146060191174, - -0.7820444687370578, - -0.7951344990158273, - -0.8129441755162004, - -0.8348427469263102, - -0.8607789740393238, - -0.8900551135969346, - -0.9229334090105653, - -0.9583033061602454, - -0.9957478828832189, - -1.0363455803017125, - -1.0784004307240096, - -1.1215731631444847, - -1.1656448133216233, - -1.2121884295367544, - -1.2593444126674842, - -1.3069765584411341, - -1.3568516794465715, - -1.4070348210262589, - -1.4574391820622539, - -1.5080605936899556, - -1.5608455214546932, - -1.6139744809375651, - -1.6675232017100547, - -1.7235418320753815, - -1.7798454541031365, - -1.8363904628554464, - -1.8950831250684816, - -1.953825993068551, - -2.01258709532981, - -2.0713787390462555, - -2.131678213407722, - -2.1919372213854125, - -2.252201630152951, - -2.3134842861425193, - -2.374576304122403, - -2.435505158763239, - -2.4964606718546927, - -2.5582660169205154, - -2.620134750737056, - -2.681859864220658, - -2.7439477973953292, - -2.805753501996314, - -2.867252647014687, - -2.9285444369237985, - -2.9896171160207023, - -3.0508449153484416, - -3.112541432328679, - -3.174277501388205, - -3.2366697672358313, - -3.299431939296562, - -3.3617914230910286, - -3.424801809701309, - -3.487917956316936, - -3.5511340357442327, - -3.613543769601248, - -3.676579786337421, - -3.740027150631716, - -3.8020623796458985, - -3.864683297116974, - -3.9274845082011836, - -3.9877639535694245, - -4.048455045239555, - -4.109202252069036, - -4.169868376216252, - -4.227388590469913, - -4.285041858273482, - -4.342744133555399, - -4.396817083158121, - -4.45126223072785, - -4.506038180091324, - -4.561145894233301, - -4.612693354712394, - -4.66478506719457, - -4.71747365413723, - -4.766635064194084, - -4.8166913983778725, - -4.867659157606854, - -4.915109446608888, - -4.963811890489231, - -5.013796213756629, - -5.06522227812759, - -5.113372501627589, - -5.163284904763092, - -5.215082598447981, - -5.263614416672637, - -5.314317663070475, - -5.367221066808842, - -5.422374837326853, - -5.4745027094033105, - -5.529102970022649, - -5.586173153571499, - -5.640018096954387, - -5.696486613021954, - -5.755626871720471, - -5.8112570948983855, - -5.86961478655311, - -5.930923952919377, - -5.995163737278376, - -6.055687500297894, - -3.549446512514386, - -3.5864825636532265, - -3.621590881506231, - -3.6589336915684796, - -3.697963842652882, - -3.739038640124699, - -3.778639932039106, - -3.820157830190912, - -3.863613660892213, - -3.905322559036668, - -3.94883847273451, - -3.9939298263217853, - -4.036667348792704, - -4.080824518859712, - -4.126142804936023, - -4.172164232547161, - -4.215403256993944, - -4.259454398963106, - -4.304002697981769, - -4.345674999558386, - -4.387902147447624, - -4.430521984303709, - -4.473145274265092, - -4.51307484308219, - -4.5531661580851415, - -4.592935575038542, - -4.630177183132575, - -4.6677769872919015, - -4.705601833628719, - -4.741027879047497, - -4.777066141813144, - -4.813741995067367, - -4.850736416911257, - -4.885953259456328, - -4.921861254523079, - -4.958253744424175, - -4.99356394138656, - -5.029322708138376, - -5.0655783671104615, - -5.102242651449881, - -5.138353177936996, - -5.174759081146989, - -5.211409351168793, - -5.24765710001752, - -5.284324121701432, - -5.321322353978068, - -5.357749518289721, - -5.39445656728209, - -5.431459657265091, - -5.46858133325139, - -5.505384619780065, - -5.542290794205663, - -5.579218016107836, - -5.6160420351603175, - -5.652803970467696, - -5.689343365444969, - -5.72544790599801, - -5.761515670130334, - -5.797352040749394, - -5.832871902196023, - -5.868139024165722, - -5.902876862587889, - -5.937336466756656, - -5.971779080770865, - -6.005578374963173, - -6.038964372570276, - -6.072018553723938, - -6.105190339670149, - -6.138254219114288, - -6.171583407648194, - -6.205139867777302, - -6.2389704510000525, - -6.273125476691419, - -6.307659085435608, - -6.342559327791476, - -6.377787078660444, - -6.413078949794259, - -6.448478539578034, - -6.484101792686705, - -6.519886908081685, - -6.555192338272881, - -6.590453525659355, - -6.625782331040565, - -6.661077531438313, - -6.69542013541151, - -6.729702084808655, - -6.764008380109654, - -6.797295573498632, - -6.830629624568236, - -6.864073590815432, - -6.897636091948457, - -6.9300689247439875, - -6.962655654920842, - -6.995438081119534, - -7.027131109269446, - -7.059099421804159, - -7.091389556196592, - -7.1225574026519265, - -7.154110971375844, - -7.186047634167534, - -2.1742779542727053, - -2.1793488331860873, - -2.1853347917088413, - -2.1921953513329604, - -2.197244087273052, - -2.203273024723921, - -2.2101569905742036, - -2.2178885006181357, - -2.223631949333401, - -2.2304515647612546, - -2.2383520365174734, - -2.2441730001507603, - -2.2512316350821573, - -2.2595161396525327, - -2.265558125233712, - -2.2729848655784326, - -2.2818069167481183, - -2.292097807393473, - -2.3004886960735456, - -2.310936551652373, - -2.332371916660132, - -2.344403055323294, - -2.357577694501271, - -2.371773238940989, - -2.383524472043111, - -2.396656814610197, - -2.410783280833237, - -2.422169570357943, - -2.4349860503994556, - -2.4488482539208816, - -2.4598837072590927, - -2.472402018623671, - -2.486031270140515, - -2.5007761193538145, - -2.5131350247227973, - -2.5265669823836947, - -2.541182284340282, - -2.5531673952840395, - -2.5664714028391433, - -2.580641410153272, - -2.595541424415707, - -2.608192881225251, - -2.6216237521709935, - -2.6357483864584306, - -2.6475560980195167, - -2.6602747271503535, - -2.6735951209502855, - -2.6844096438292304, - -2.6960436061422346, - -2.708302586583846, - -2.7211034877172486, - -2.7318808164801527, - -2.7432999916528615, - -2.755402109658799, - -2.7658960490396023, - -2.7770918232244655, - -2.7889555245171787, - -2.801473094311807, - -2.812752741136847, - -2.8247597148412513, - -2.837412708343309, - -2.8493636912339575, - -2.862069380677792, - -2.8754895138723255, - -2.8885185384670304, - -2.90219359745598, - -2.916455823709315, - -2.9311620400104, - -2.945543230917214, - -2.9600116704813586, - -2.9745419489615497, - -2.9889571018758314, - -3.0032629983329686, - -3.017495054013489, - -3.0317264517818114, - -3.0459185241955637, - -3.059939745163087, - -3.0739469122533354, - -3.088268791819476, - -3.102211667465999, - -3.115889656700602, - -3.130257801485552, - -3.143782628807602, - -3.157076713790559, - -3.1701929812473635, - -3.1835847313626258, - -3.1966393704016642, - -3.2091115838081192, - -3.222687126350998, - -3.2359230155085306, - -3.248772189654237, - -3.2614627685665534, - -3.2751098242452326, - -3.2883332780898265, - -3.301316820758686, - -3.315655640300199, - -3.329444146692725, - -3.3429037674137176, - -3.3579844766538542, - -3.3725660724227793, - -1.6397796221525798, - -1.6479449090507547, - -1.6578183585278656, - -1.667124558965525, - -1.6759037071706318, - -1.6865719156614691, - -1.6965688655601303, - -1.7058544894699181, - -1.7145341631894453, - -1.7250466032244036, - -1.734763268911375, - -1.7436839557274706, - -1.7546902639101876, - -1.7648010635818236, - -1.7741165393247216, - -1.785835096854082, - -1.796482999977299, - -1.8061011552047441, - -1.8147165010421755, - -1.8255762284423311, - -1.8351944691605238, - -1.8436820049386444, - -1.8546277439693153, - -1.8640119605610754, - -1.8720231679279626, - -1.8787737840944638, - -1.8874658002567017, - -1.8943751318842335, - -1.8999022581714724, - -1.9077727113600687, - -1.9136370444836928, - -1.917865116090288, - -1.9253651309217696, - -1.9305678925247411, - -1.9344251290833658, - -1.9372551552875152, - -1.9430955670822256, - -1.9478615710995077, - -1.951751213534401, - -1.9588768108338053, - -1.9646925490029747, - -1.969359429250709, - -1.9732826362556386, - -1.9801461220151748, - -1.985745663227153, - -1.9902884611149405, - -1.998305221081161, - -2.004748799631949, - -2.010484402945525, - -2.0204496868832207, - -2.028897498154084, - -2.036435070426734, - -2.0434829334631748, - -2.0550057886801025, - -2.065849897413445, - -2.0756231249983332, - -2.089088321072073, - -2.1012196219710604, - -2.1120742491621427, - -2.121726347356864, - -2.1348470604174468, - -2.146724306564476, - -2.157384813418922, - -2.1715993782138128, - -2.1844492513604594, - -2.195931454541875, - -2.2108779412452786, - -2.224416568322631, - -2.23663903062493, - -2.2476612198244568, - -2.2621066654685946, - -2.275667006899623, - -2.288093150323079, - -2.3030285515100632, - -2.316349864189747, - -2.327860505653105, - -2.337456738511764, - -2.348787128776237, - -2.3580132301705854, - -2.3652297622771794, - -2.373816137672763, - -2.380508021014122, - -2.3854408485309513, - -2.391403780810271, - -2.395694557485395, - -2.398330372387857, - -2.399627088311883, - -2.4016725353286166, - -2.4024599261751165, - -2.4021850064717407, - -2.3973387386991734, - -2.3949859539500418, - -2.393454932046878, - -2.391309439973726, - -2.3885561018924863, - -2.386384646258848, - -2.383870320002214, - -2.380953420647689, - -2.3785244347899774, - -2.3761158722567255, - -1.4173588954786462, - -1.4131529957479805, - -1.4092772188111473, - -1.4058327080344937, - -1.4028511615444337, - -1.3998684350939816, - -1.3975005217304295, - -1.3957364501010308, - -1.3945733768815964, - -1.3932296059193932, - -1.3925722563130745, - -1.3925784577786988, - -1.3921369722826749, - -1.3924017497102987, - -1.3933241176461206, - -1.3935419918768015, - -1.394568968784811, - -1.3963334993956185, - -1.3987622980001435, - -1.400511893664562, - -1.4029211664681334, - -1.4059150108878082, - -1.4076361065751022, - -1.4100067356387445, - -1.412910070326845, - -1.4162523420639066, - -1.4181421996777792, - -1.4207338258172004, - -1.4239901147793714, - -1.4253335923121893, - -1.427337833250165, - -1.4300247816871976, - -1.4312071924967367, - -1.4332512449282484, - -1.4362055793006576, - -1.440041238921736, - -1.4426745201206643, - -1.4458013441180373, - -1.4493810800193259, - -1.4507978865185116, - -1.4528700252514568, - -1.4555468031600804, - -1.4587812151892363, - -1.4597855877588508, - -1.4615032938381953, - -1.4639120906752847, - -1.4640968294375134, - -1.465090175686762, - -1.466863224978653, - -1.4664717528877917, - -1.4669761974403215, - -1.4683230228417565, - -1.4704147970200836, - -1.4705490368529963, - -1.4715083251092282, - -1.4735873405373205, - -1.4744252556093345, - -1.47628871747735, - -1.4792971998859747, - -1.4833515181505028, - -1.4862356171254585, - -1.4901683391911953, - -1.4950883915922424, - -1.498702554594988, - -1.5032815768947063, - -1.5087840946586126, - -1.51310096291594, - -1.5183936179811783, - -1.5247448979262679, - -1.5319662303742456, - -1.5378851879323774, - -1.5444848402271312, - -1.5516713562288664, - -1.5570096659166952, - -1.5627143281922578, - -1.5687915288448138, - -1.5751114516887474, - -1.579517870021872, - -1.584362775212744, - -1.5896218536300117, - -1.5926951710288764, - -1.5973978390863877, - -1.6034923435535933, - -1.606130119314742, - -1.6095646584533096, - -1.6145372693866757, - -1.6192964366118023, - -1.6177911362307245, - -1.6163103376205286, - -1.6150351026399563, - -1.6080594568792836, - -1.6018413799258704, - -1.596582707376059, - -1.5924556549233317, - -1.5818558486477936, - -1.572788429155891, - -1.565481790650666, - -1.5537484572658062, - -1.5433346173695637, - -1.5348095164884274, - -0.982328803345478, - -0.9725302785219642, - -0.9649162357498665, - -0.9602045684537973, - -0.9537922504822438, - -0.9498688149157507, - -0.9490007299400245, - -0.9474430945788468, - -0.9484485133765863, - -0.9527925465589835, - -0.960715537206345, - -0.9970545390487591, - -1.0210768008721482, - -1.0596331210635046, - -1.073394291493468, - -1.087662021775841, - -1.0992248903295159, - -1.1109101338869052, - -1.1228341881612744, - -1.1317634571943207, - -1.1407040803390887, - -1.1493460544517198, - -1.157461494432273, - -1.1628187105386658, - -1.1675263044238062, - -1.171504240617232, - -1.17292701211959, - -1.1737242098996261, - -1.173839845623164, - -1.1720265040204565, - -1.1696670564545657, - -1.1672808622804642, - -1.165088063248984, - -1.1622635938392067, - -1.1596100505509588, - -1.1573939003667735, - -1.1550627697354354, - -1.1531340154589158, - -1.1516865961937346, - -1.1509611355199618, - -1.1504367472223416, - -1.1505735160689503, - -1.151447446700884, - -1.1530497190964517, - -1.1555655104677607, - -1.159102153761611, - -1.163943900045954, - -1.1698381783580891, - -1.1766880890151081, - -1.1844528327364645, - -1.1934405624539015, - -1.2030661487568868, - -1.2133947391391207, - -1.2251573518207264, - -1.2373325666441457, - -1.2497267600076813, - -1.2626380983093217, - -1.2766003319250676, - -1.2907242097285918, - -1.3047489294674375, - -1.3196403744527285, - -1.3342838307084794, - -1.3485257568109206, - -1.3638065386051994, - -1.3784739903232723, - -1.3925372583861952, - -1.4057548414920307, - -1.4202819253090866, - -1.4337529364173545, - -1.4460690232659215, - -1.459624338039018, - -1.4718101638601526, - -1.4825734565661541, - -1.4919211600336868, - -1.5032614757442921, - -1.512928173647764, - -1.5207163732498743, - -1.5305923323387367, - -1.5384712433309673, - -1.5445111748293034, - -1.5525119161362992, - -1.5580552839213344, - -1.5611949593829768, - -1.5620544636029665, - -1.5647328093843675, - -1.5648456539774713, - -1.563250181128177, - -1.5648149768535404, - -1.5650968375881558, - -1.5642586972324788, - -1.5627566636207926, - -1.5646885927623322, - -1.5657168527129737, - -1.5661343591293535, - -1.5710070741970954, - -1.5772836548453966, - -1.5824140835569382, - -1.5914009403103235, - -1.5990023558610234, - -1.6055247860278852, - -1.1962384661408842, - -1.2043591359258081, - -1.2114312506732452, - -1.2175494977006647, - -1.2266073191633309, - -1.2346172500758832, - -1.2416449281287227, - -1.2477597670960823, - -1.2565448406862894, - -1.2647962347030972, - -1.272452988866361, - -1.2832097670634237, - -1.2935350001024826, - -1.3031556745528503, - -1.3148157713028514, - -1.325334014369492, - -1.334637738176401, - -1.3425303733763028, - -1.3513933228801105, - -1.3587746531586127, - -1.3645092149557745, - -1.3707539640056579, - -1.375404498378161, - -1.3784149159236956, - -1.380196269360392, - -1.382255906830632, - -1.383339323140206, - -1.3835056414388542, - -1.3837485495620836, - -1.383155093990636, - -1.3817628379079514, - -1.3802779378890404, - -1.37812441560228, - -1.3754458805554126, - -1.3723914612758419, - -1.3690131708406452, - -1.3654283992023917, - -1.3618053616518198, - -1.3578263912448805, - -1.3538693704670794, - -1.3500880281142238, - -1.3463985175956035, - -1.3422791494919084, - -1.3385505009296572, - -1.3349841705532057, - -1.3311116785999397, - -1.327607585245752, - -1.3190090617205386, - -1.3164300894936267, - -1.3144328419396014, - -1.312293434754337, - -1.310881015191779, - -1.3101927493882473, - -1.3099713828787631, - -1.310460009859255, - -1.3115412872772403, - -1.313413369381298, - -1.3158867684709799, - -1.3190645581420686, - -1.3229727512529492, - -1.3269660409761084, - -1.3315532067883535, - -1.3365779140897436, - -1.3419490591858814, - -1.3475325404413916, - -1.3533281480132364, - -1.35909985817419, - -1.3648385238177678, - -1.3703920817421982, - -1.3759449915603237, - -1.3811729147476342, - -1.38624759535914, - -1.3911440474292225, - -1.395849394962843, - -1.4001219804125482, - -1.4041706607505036, - -1.407958421190028, - -1.4119174081231611, - -1.415588405701639, - -1.4189862561223052, - -1.4222972818508357, - -1.4253749815487309, - -1.4282360183870508, - -1.4309358001559478, - -1.4339219035271695, - -1.4370562308076136, - -1.4404175366909564, - -1.4446918083680893, - -1.449012703684647, - -1.4533653430435975, - -1.4577650291647348, - -1.462685148684705, - -1.4675436848609154, - -1.4723236528847634, - -1.4777641299727717, - -1.4830097293771192, - -1.4880520705467184, - -1.49336793013493, - -1.4984927954831995, - -1.503435368413347, - -1.127652627678976, - -1.1323397127908985, - -1.1367871007594312, - -1.1409917377732977, - -1.145634752239073, - -1.149991166973859, - -1.154088978122732, - -1.1579398831072139, - -1.1623590099208245, - -1.1666501044941082, - -1.1708312969946866, - -1.1758379054092511, - -1.1806285566617338, - -1.1851989136513406, - -1.1904149048882948, - -1.1954358920222496, - -1.2001618716175249, - -1.2044591229471515, - -1.2090063631175423, - -1.2131412294899497, - -1.2168674889702265, - -1.220733551009681, - -1.2241371753546852, - -1.2269521486084916, - -1.2292457257727758, - -1.2315313066717315, - -1.23346930275369, - -1.2351278258355365, - -1.2367544851071237, - -1.2383533041958474, - -1.2399158229966083, - -1.2412413049710245, - -1.2426559908845503, - -1.2441582654965766, - -1.2457602790495481, - -1.2470562734530912, - -1.2484435977370103, - -1.2499195067286748, - -1.2509875665908587, - -1.2523361571075298, - -1.2538364204348518, - -1.2554691547572432, - -1.2563297320759603, - -1.257470589787821, - -1.2590658487260642, - -1.2596712181099634, - -1.2609184848077424, - -1.262602803738179, - -1.2630736457952902, - -1.2644437289643125, - -1.266417186594995, - -1.2687964398138545, - -1.2702282249509254, - -1.272567515824159, - -1.2754171548300186, - -1.2768641683990989, - -1.2795883526547556, - -1.282665717981744, - -1.2859057364806563, - -1.2887643554354244, - -1.2919890215458443, - -1.2953701477633182, - -1.2972183946496334, - -1.29982022449177, - -1.3028076088027225, - -1.3034593920682616, - -1.305005957986478, - -1.3071604998297996, - -1.3098280751273406, - -1.3103085894565247, - -1.3114293029633326, - -1.313181015305652, - -1.3123255079670497, - -1.3120968599496994, - -1.3125380050064042, - -1.3136867114105217, - -1.3127263971014855, - -1.3125910617045213, - -1.3132484616339974, - -1.3116257307834134, - -1.3109879175240633, - -1.3112575586444088, - -1.3092123945348402, - -1.3084087508449906, - -1.3086789396729348, - -1.3098995122331918, - -1.3090510359500291, - -1.3094520035097885, - -1.3109555275484794, - -1.3104316577651383, - -1.3112231313109264, - -1.3132530305690966, - -1.316452713945795, - -1.3175183381292583, - -1.3194953028100993, - -1.3223662167173564, - -1.3229716772899123, - -1.3246924723685676, - -1.3273282003129276, - -1.3277008608482899, - -0.9979260666519771, - -0.9997468939480277, - -1.0024382208468645, - -1.003125040317744, - -1.0047617334080197, - -1.0072482581440323, - -1.0077148422765858, - -1.0090655423190829, - -1.0112303492231614, - -1.0141905490257102, - -1.0153755862327178, - -1.017452765471708, - -1.0203683740236549, - -1.0215952228210803, - -1.0237177687952164, - -1.0266747178073896, - -1.0282002239502577, - -1.0305870976430656, - -1.0337505434795793, - -1.0375339298852082, - -1.0401837712889086, - -1.0436097375021838, - -1.0477764082832353, - -1.051154503219205, - -1.0551554561113978, - -1.0598609141608282, - -1.0652613672971913, - -1.070423857259624, - -1.0761969804814024, - -1.0824150654680498, - -1.0887792953640048, - -1.095695233066538, - -1.1030734525924293, - -1.1111308837575404, - -1.1194658497693843, - -1.1278771958012548, - -1.1365552412716329, - -1.1463979690973223, - -1.156236833754707, - -1.166021029529711, - -1.1771715281929276, - -1.1879055121432622, - -1.198208268942232, - -1.2080928383197373, - -1.2192593389446276, - -1.229584756150756, - -1.2390763012478394, - -1.250389761769623, - -1.2602933417781235, - -1.2689757986027423, - -1.2801467117837222, - -1.289310547095249, - -1.2973551003842745, - -1.3042584614713904, - -1.3137698450139221, - -1.3214936633470202, - -1.3282675423474393, - -1.3388102389162566, - -1.3476962508645878, - -1.3553244530800848, - -1.3619740251993717, - -1.3713196913232266, - -1.378815383952282, - -1.3848557455456718, - -1.3940920263992462, - -1.401330807607672, - -1.4072738893519379, - -1.4177058601865766, - -1.4265706439791825, - -1.434214967773766, - -1.4408144381448782, - -1.4516003020804051, - -1.460741815224908, - -1.468602536410881, - -1.4809052520857473, - -1.4916027108965992, - -1.500946252649183, - -1.509104985561719, - -1.5214332280647977, - -1.5321965847717083, - -1.5415099987192147, - -1.5549329262324079, - -1.5666247238682003, - -1.576732476015856, - -1.5908486881769444, - -1.6030570187853714, - -1.6134256801462974, - -1.6220201880865879, - -1.633860604635199, - -1.6436787277178337, - -1.651583123790399, - -1.6622486753780525, - -1.6708699557761444, - -1.6775594646153151, - -1.6824054436620401, - -1.6893589790239214, - -1.6942645732962984, - -1.697375298564676, - -1.7022372997328825, - -1.7053436926476564, - -1.3781639822056415, - -1.38064649074538, - -1.381586455517113, - -1.3812214151098903, - -1.3796788627660375, - -1.378976164788519, - -1.3772033219267497, - -1.3746595830360508, - -1.3727256437073687, - -1.3700332055830498, - -1.3666378387880758, - -1.3623537812709092, - -1.3585742242513605, - -1.3539802787080022, - -1.348549803983383, - -1.3431364575593654, - -1.3379977453699272, - -1.3329373871004144, - -1.3271171286171, - -1.3215023155217154, - -1.3162936532398852, - -1.3115409493740695, - -1.3062339263123819, - -1.3018085592804796, - -1.2982878638381148, - -1.2937002099859227, - -1.2900622386133875, - -1.2874039683940575, - -1.2852108050608562, - -1.2819413403018265, - -1.2794347177531533, - -1.27811724088851, - -1.2746946677776305, - -1.2723796340332794, - -1.2708566196814834, - -1.2669995775724663, - -1.2644481684436972, - -1.2631716750620838, - -1.263139167234179, - -1.2613338899877522, - -1.2606222199450183, - -1.2610898109754491, - -1.2590280144591297, - -1.2577557624106799, - -1.2572865583478712, - -1.2578162463373888, - -1.2555229662636072, - -1.2542292710535015, - -1.2537932539649148, - -1.2505898944550342, - -1.2483090483705896, - -1.2468052560783254, - -1.242496554842348, - -1.238982169625283, - -1.2362625185870317, - -1.234142488990372, - -1.2286168388888554, - -1.2239109599115996, - -1.2202154724433114, - -1.213307271124722, - -1.2074343137817192, - -1.2027586912320882, - -1.19953844861345, - -1.1929769685402343, - -1.188160654124612, - -1.185249281798629, - -1.1799221131990212, - -1.1767696062302357, - -1.175913542173367, - -1.1726647524637877, - -1.1718526804547233, - -1.1730356181813657, - -1.176659036076313, - -1.1782289016238605, - -1.1824504991877387, - -1.1897375027997097, - -1.1957720598516206, - -1.2051420284480803, - -1.217829417587781, - -1.2326038355052067, - -1.2450195842303016, - -1.2588336985287243, - -1.2739132967488624, - -1.2866073758368584, - -1.300208652686898, - -1.3145312906322613, - -1.326642050953778 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -39051,1987 +2491,15 @@ }, "name": "vy est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -0.14048825266817297, - -0.13902266087690796, - -0.13830593867161275, - -0.1382913686686334, - -0.1388872720375219, - -0.13781859618819756, - -0.13733748327264858, - -0.13741554928699534, - -0.13585354741545344, - -0.1347587157444029, - -0.1342223472549915, - -0.13227122315452802, - -0.1308782678673393, - -0.13000645085095672, - -0.12965329754656224, - -0.1280976808587388, - -0.12712684087417123, - -0.12670784820629827, - -0.1252834132423038, - -0.12446869379298417, - -0.1242038709140599, - -0.12448000001329963, - -0.1241673783317615, - -0.12466138328442786, - -0.12600878684112257, - -0.12766348515824175, - -0.13013466592618433, - -0.1333302333601805, - -0.13710447786203006, - -0.14143739622821005, - -0.14622439606628207, - -0.15138192962934321, - -0.1570539151951445, - -0.16301058657023115, - -0.16916649316194968, - -0.17588638062239575, - -0.1826118159753708, - -0.18922023301948088, - -0.19570379247849662, - -0.20284824865017487, - -0.2096133277699743, - -0.21562366256393958, - -0.2221236488169939, - -0.22744513726232143, - -0.23147464524645608, - -0.23615763002206924, - -0.23944877127474776, - -0.24202858111898998, - -0.2443982614825979, - -0.24837267830557197, - -0.25238389708468045, - -0.25632483285559904, - -0.26245907063870455, - -0.2685962472138921, - -0.2744072210055893, - -0.2798888317872652, - -0.28750596084269675, - -0.29500149374721524, - -0.3022135071542432, - -0.3115108939920024, - -0.3204117744263096, - -0.3286170601934927, - -0.33841521859218554, - -0.34743970422904563, - -0.3554528062304923, - -0.3623293605217684, - -0.37049552247831297, - -0.37740770286763375, - -0.3829889284635232, - -0.38967296224127856, - -0.3950020465571472, - -0.3988679491178644, - -0.4013317872343411, - -0.4047398151313793, - -0.4066035264304627, - -0.4070331631012471, - -0.40835431990562543, - -0.40826807718307345, - -0.40679449411896157, - -0.4061879670017964, - -0.4043313117332904, - -0.40126261339638697, - -0.3971525258782348, - -0.39395671177215374, - -0.38986416976698296, - -0.38499400456154853, - -0.38109436181673584, - -0.37656982793358745, - -0.3714888083578974, - -0.36593680284235375, - -0.3615159004983661, - -0.35672904903808533, - -0.35163733018641596, - -0.34764128925501453, - -0.34343598467032416, - -0.3391358117785541, - -0.3358193673450752, - -0.3324589024747398, - -0.3292721495089848, - -0.32628528604430745, - -0.3241417984741212, - -0.1419726171563453, - -0.13807527009088835, - -0.1349024259497906, - -0.13196003030944492, - -0.12880464945580614, - -0.12580893427089035, - -0.12390198120628532, - -0.12208086055949328, - -0.12047999355593428, - -0.1198499160687695, - -0.11936916715561396, - -0.1189537366175194, - -0.11910283664245551, - -0.11920420306263502, - -0.11913408035663328, - -0.11863349220552709, - -0.11830851391795225, - -0.11771802308097915, - -0.11671880090339025, - -0.11592538772624023, - -0.11486406439890945, - -0.11351819645011188, - -0.11167547073757073, - -0.11001731029075391, - -0.1079521720460787, - -0.10516064484618372, - -0.10254309675725572, - -0.09971001495239558, - -0.09663080123001955, - -0.09359613558196542, - -0.09055513472467697, - -0.08764379820224237, - -0.08461891132109797, - -0.08177010426387296, - -0.07902340017410149, - -0.07627509213283053, - -0.074149973983387, - -0.07187698699565347, - -0.06957972290791875, - -0.06725017864644864, - -0.06565201264295993, - -0.06383772797846408, - -0.061829380091973515, - -0.060421548865696235, - -0.0589597369464219, - -0.057424515576375866, - -0.05606357871236556, - -0.05454534347433756, - -0.052923711854681116, - -0.051129867392138616, - -0.04945094875910304, - -0.04756321292516458, - -0.045449899562220154, - -0.043429045457474245, - -0.04112065998181172, - -0.03843672617087482, - -0.03524723875501219, - -0.031985257570400855, - -0.028421350937568365, - -0.024528076262793623, - -0.020229907280265903, - -0.015532908587531718, - -0.010690866868342256, - -0.00556979939593589, - -8.893103070280444e-05, - 0.0055503319062286055, - 0.011204684233875342, - 0.01712743992605842, - 0.022730390776543097, - 0.027736932848754392, - 0.03299101346359531, - 0.037419049118219944, - 0.04118083180924202, - 0.044358387453863085, - 0.04769679812228182, - 0.05040129268916485, - 0.05285371918610883, - 0.05598826307676717, - 0.05848096009741695, - 0.0606640039672946, - 0.06458312757520178, - 0.0680778404338209, - 0.07130270500014091, - 0.07443828554599737, - 0.07960048452250346, - 0.0844829276395933, - 0.08910140281155561, - 0.09593807539731314, - 0.10233805967796498, - 0.10832665705333139, - 0.11393769134909085, - 0.12177948729853423, - 0.12907448378758274, - 0.1358140974474805, - 0.14470538315406206, - 0.1528282076186171, - 0.16016517688803786, - 0.16958373304826305, - 0.17803815703898393, - 0.18557697261488576, - 0.063870439111367, - 0.07178735170296133, - 0.07860236881894976, - 0.08436854071558414, - 0.09217186989117544, - 0.09880307521711573, - 0.10438859821787008, - 0.10894800888651955, - 0.11566354576375276, - 0.12111283470119882, - 0.12530391156079587, - 0.13170226319585204, - 0.1366903903074236, - 0.1402963846311036, - 0.14626739257873528, - 0.1507101958861943, - 0.15363857821487958, - 0.154992059315239, - 0.15835402915524988, - 0.15964156436618948, - 0.16174717358907365, - 0.16142579791607484, - 0.15988183171318346, - 0.15724859265081115, - 0.1570994002352601, - 0.1555374851522908, - 0.15294672252718056, - 0.15308523710183686, - 0.15179911896012765, - 0.1494682323462412, - 0.14992829626997264, - 0.14894426981700581, - 0.1468842341735601, - 0.1437571201930403, - 0.14298466994010028, - 0.14120117683127986, - 0.13832433528531937, - 0.13801961158443782, - 0.13651056075867027, - 0.13423116512434582, - 0.13133174790365465, - 0.1305965981038528, - 0.12920205177904842, - 0.12721706749212852, - 0.12743454184118333, - 0.12685093796351304, - 0.1257508292371986, - 0.12695132414827925, - 0.1274105521677807, - 0.12730548013779278, - 0.1267162900964915, - 0.1279298857428441, - 0.12858279954258858, - 0.12863785974820086, - 0.13006957672769942, - 0.13086877970379843, - 0.1310995004361057, - 0.13079328349968333, - 0.1315622436260003, - 0.1317204782154695, - 0.13134309747882184, - 0.13151343699961282, - 0.13104215911728231, - 0.12996039383813035, - 0.12911528843042425, - 0.12774213418614921, - 0.12590014627184296, - 0.12368854743234085, - 0.12161524374625426, - 0.11950125008820585, - 0.11736382034143805, - 0.11513741573785274, - 0.11310400377048764, - 0.11119080568627182, - 0.10930877791851529, - 0.10726390059449228, - 0.10546220166954605, - 0.10371145987834213, - 0.10142646649664377, - 0.09960436350828529, - 0.09811797343483987, - 0.09567871031314348, - 0.09420877625402348, - 0.09302950362271535, - 0.09207586283748712, - 0.09064813383333087, - 0.08962679536393003, - 0.08926603194611842, - 0.08756042519800968, - 0.0862746734844762, - 0.08544665198852246, - 0.08483063453553423, - 0.08304024532891195, - 0.0817503831032492, - 0.08076120609687457, - 0.07818114272465708, - 0.07622688686705387, - 0.07467417950847101, - 0.07127618304794109, - 0.06847036289989329, - -0.11736449678262435, - -0.11963737398195215, - -0.12369879076700488, - -0.12714212788030224, - -0.13000327507053347, - -0.13481366293062244, - -0.1388914991712645, - -0.1421980860817563, - -0.14483801739623092, - -0.14934107795613985, - -0.1529829241833253, - -0.15576143165713657, - -0.160620203278427, - -0.16451822192259627, - -0.1675517218441561, - -0.17293837196695053, - -0.17719404840565983, - -0.18035978394737262, - -0.1824634935165966, - -0.18673848190404504, - -0.18972346205735052, - -0.19152502312599295, - -0.19567330734319044, - -0.1982409138283783, - -0.19940114607377357, - -0.1992683684745317, - -0.20095103910446466, - -0.20085347776228718, - -0.1993610018499634, - -0.2000074048872842, - -0.19867800992480766, - -0.19573205532529847, - -0.19574360481334552, - -0.19351401334594523, - -0.18997213004934319, - -0.1854331888331812, - -0.18358406348344203, - -0.18071976193675474, - -0.17704291606743372, - -0.17623132300717106, - -0.17421122699315816, - -0.1711482028914081, - -0.16745001271078166, - -0.16631934313836266, - -0.16407645082635347, - -0.16093345423560307, - -0.16085328330066148, - -0.15940109777416928, - -0.1574431060172703, - -0.15925382476139974, - -0.15980095591247068, - -0.15962008300667324, - -0.15914066914044486, - -0.16270149839569145, - -0.1658560014304542, - -0.16816944277849952, - -0.1736621909754099, - -0.17806281379978278, - -0.18138675349948857, - -0.18370024795661724, - -0.18896430263142194, - -0.1932242630593741, - -0.19649021798938196, - -0.20275098951688966, - -0.2079187394007669, - -0.2119748516797502, - -0.2189004415953223, - -0.22471845426801645, - -0.22950490277825947, - -0.23335609105748836, - -0.24006629506353994, - -0.24620487133372465, - -0.2514969564145151, - -0.2586959265716082, - -0.2646476315160551, - -0.26910241554833275, - -0.2719001329098665, - -0.27586700637081607, - -0.27801606736280876, - -0.27840576097189607, - -0.2795392138885022, - -0.27906588927700615, - -0.2770901546569262, - -0.27547396467528246, - -0.27248760490644747, - -0.2681095932496349, - -0.2626272506201387, - -0.25729128150760205, - -0.2509797901234401, - -0.2438608945179943, - -0.21834964517835767, - -0.2093628213885247, - -0.20063801287822725, - -0.19157162201649136, - -0.1821492746851962, - -0.1727497552388463, - -0.16327868135011836, - -0.15365471502237235, - -0.14395899716466584, - -0.13455533680676318, - -0.1496568098084008, - -0.14096129500068164, - -0.1321738019709783, - -0.12400398624215637, - -0.11647144892515862, - -0.10849500159980877, - -0.10131510065828953, - -0.09490909446702196, - -0.0892601683676243, - -0.08298837217597908, - -0.07756631788552891, - -0.07295666219307015, - -0.06742456615287827, - -0.06275554773030736, - -0.05888177583709791, - -0.053818172575499784, - -0.04973681565077664, - -0.04655575781269557, - -0.04418926946286195, - -0.04071933660171338, - -0.03808370827349411, - -0.036194034132713604, - -0.032613032935231316, - -0.029868199776718212, - -0.02782396119670436, - -0.026371369696588067, - -0.023115718133795565, - -0.020703744224799384, - -0.019084456696176002, - -0.015188372050240546, - -0.012093239493173515, - -0.009800657842323281, - -0.005638117015508447, - -0.0024338571156819833, - -0.0001912790108729071, - 0.0011239120237936475, - 0.0040101983650375535, - 0.006338050217367884, - 0.008149479249771042, - 0.012450170106532925, - 0.015999587227860327, - 0.018850641706605612, - 0.021052491285916738, - 0.025710504386623756, - 0.02953593178312823, - 0.03255295644300433, - 0.03794727616644739, - 0.042401837685221135, - 0.0459493183476564, - 0.051741091214640336, - 0.056492583831163526, - 0.060263319391006015, - 0.06316283971809565, - 0.0680210539207201, - 0.07192376572590208, - 0.07459050858242465, - 0.07845237128706499, - 0.08116747135831442, - 0.08262730319336367, - 0.0829397857284232, - 0.08432630460653376, - 0.08457606726054516, - 0.08376354446947228, - 0.08415524619252976, - 0.08352516482678983, - 0.08192443400519868, - 0.08139707802932515, - 0.0798577313182939, - 0.07722827306350873, - 0.07370527160333355, - 0.07135583556524477, - 0.06832004611374964, - 0.06470538725335531, - 0.06283010476578932, - 0.060603819963977075, - 0.058027408152380576, - 0.055240125825127086, - 0.05424387059796038, - 0.052857381848517127, - 0.05112058212034134, - 0.05138592163952471, - 0.05020155453387252, - 0.047754798802076476, - 0.048419381456073066, - 0.04833770375582551, - 0.046726559337974136, - 0.04540010367681523, - 0.04991652754397985, - 0.054453961838959494, - 0.0588254673721946, - 0.06787509670742924, - 0.07627071399374383, - 0.08382781717674367, - 0.09039428779523691, - 0.10240209519446385, - 0.11303812883009601, - 0.12211950683737267, - 0.1349094301845808, - 0.14656765382669545, - 0.15656681158085442, - 0.08814079299771274, - 0.09866696491620561, - 0.1072635902870293, - 0.1132557024701887, - 0.12055956372515775, - 0.12567059148307638, - 0.12806791379807272, - 0.13078053911193052, - 0.1312720817265922, - 0.1288166704444837, - 0.12321439736634068, - 0.09479846341333026, - 0.07592098004937105, - 0.04611399892711135, - 0.03563162986691567, - 0.024965685376957612, - 0.016561103500992273, - 0.008351008840318853, - 0.00021086712307954135, - -0.0053833538668437726, - -0.010680911972270682, - -0.015407736986952605, - -0.01935649380912813, - -0.020985748677304156, - -0.021714799206540233, - -0.021462838530033543, - -0.019103534707697906, - -0.01587026300058968, - -0.011721278213518475, - -0.006084603692142454, - 0.0003241825413475537, - 0.006974720117345513, - 0.0136420826498537, - 0.02047791755509759, - 0.027352614911705573, - 0.03399752961209274, - 0.0403050924512672, - 0.04640960086741472, - 0.052216091199925395, - 0.05747146458002175, - 0.062102651891915335, - 0.06624150012239494, - 0.06979811896132493, - 0.07222963635982847, - 0.0739050903979197, - 0.07469769742543156, - 0.07382147544065587, - 0.07203739730565543, - 0.069427288907313, - 0.06601791635184281, - 0.06107369326006652, - 0.05560706002974217, - 0.049541613624008905, - 0.04177590523222024, - 0.03370541321347564, - 0.02551229774337446, - 0.016889078262795135, - 0.007001822410394988, - -0.0029576706927293243, - -0.012738831461081068, - -0.02356826212991068, - -0.0340664444907931, - -0.04408718756250713, - -0.05528727917973833, - -0.06579620855819897, - -0.07563848165540653, - -0.08457644351728191, - -0.09491391865436395, - -0.1041332579176674, - -0.11214260814891298, - -0.12142683480673384, - -0.12929503888154603, - -0.13569250176217013, - -0.14063372631416493, - -0.14753684682259366, - -0.15273931804887503, - -0.15603456421828094, - -0.16131525602107152, - -0.16458769031256146, - -0.16600634824775445, - -0.16920957613084464, - -0.1699627377449104, - -0.16832410496519337, - -0.16441965971240208, - -0.16206857722515583, - -0.1571893632824515, - -0.15062926279780411, - -0.1468671373106189, - -0.1418547670031725, - -0.13576514397037903, - -0.12906101270280906, - -0.12538198397622577, - -0.1208763454007888, - -0.11585392711006087, - -0.1148563109847167, - -0.11554517995564062, - -0.11521491252156575, - -0.11817315952154579, - -0.11986379956141571, - -0.12058987435491826, - -0.1784923302156346, - -0.18125174259413926, - -0.18306691018599802, - -0.18405078013457865, - -0.18742594360367934, - -0.18993966225727124, - -0.19166837306234605, - -0.19269362541492874, - -0.1958923829530478, - -0.1988243286565153, - -0.20147131361137235, - -0.20678357526513352, - -0.21198627919601074, - -0.2167555407145087, - -0.22308371790037468, - -0.2285713159614794, - -0.23313260795306165, - -0.23655604642083974, - -0.24053768814807377, - -0.24333451717508647, - -0.24476594246426908, - -0.24632693975620082, - -0.24659460103822128, - -0.24550083436373368, - -0.24344902126561152, - -0.24137863082204855, - -0.23861499146751505, - -0.23519931022435064, - -0.2315828379698373, - -0.22739874521980707, - -0.22265715044003362, - -0.21760307291909123, - -0.21212984536508733, - -0.20634495736073866, - -0.200368762757863, - -0.19389225049495154, - -0.18737872517183118, - -0.18097218558258574, - -0.1740453865597975, - -0.16728437918092792, - -0.1608250611463784, - -0.15455919780417648, - -0.14774578322940007, - -0.14141890002906973, - -0.13533294382034022, - -0.12883299064372156, - -0.1227718624958966, - -0.1064923696881092, - -0.1014004676319364, - -0.09689695385978826, - -0.0921747829919972, - -0.08818652379945104, - -0.0849182160386438, - -0.08205320494030668, - -0.07988696304130387, - -0.07829383764188763, - -0.07744612895317754, - -0.07716553902858311, - -0.07755914801582899, - -0.07863369535281559, - -0.07973021671966117, - -0.08137597783977621, - -0.08339843042859417, - -0.08569064302891363, - -0.08813955884830307, - -0.09073652095064116, - -0.09323022289136622, - -0.09564111730357591, - -0.09780149394193577, - -0.09989791936322608, - -0.10161994255153456, - -0.10314218866065053, - -0.10442948356990533, - -0.10546561217944167, - -0.10604599322630161, - -0.10635566393161125, - -0.10635584075398466, - -0.10652692683936522, - -0.10637776484254136, - -0.10592286189259593, - -0.10537722414496858, - -0.10458260790426632, - -0.10355557035760611, - -0.10234984831108965, - -0.10142785517518073, - -0.10063221177976389, - -0.10003234449295592, - -0.10032310546400221, - -0.10063343243399187, - -0.10095303099641548, - -0.10130329829932964, - -0.10216119383467052, - -0.10295553489309714, - -0.10367297325297833, - -0.10503549739001214, - -0.10621903391892755, - -0.1072187468059767, - -0.10847908631151902, - -0.1095720251388289, - -0.11050626156146205, - -0.1387169552445459, - -0.14005366790838508, - -0.14118000055947857, - -0.1420956248616727, - -0.14341791696768263, - -0.14449273719323644, - -0.14535129708947045, - -0.1460064251347849, - -0.14719364049415093, - -0.14829854237545714, - -0.14933819225180217, - -0.15115851613166462, - -0.15281105074210197, - -0.15429098425937038, - -0.15637090971214054, - -0.15830551852594954, - -0.1599948486539299, - -0.1613031964180955, - -0.16282063160833177, - -0.1639733810752206, - -0.164762272919153, - -0.16565235841594128, - -0.16612658797286567, - -0.16605726760393547, - -0.16550863548074574, - -0.16491918112954299, - -0.1640207364475995, - -0.1628767187467106, - -0.16166998708983962, - -0.16046417044586198, - -0.15924885473465927, - -0.15777025608022105, - -0.15640234807152784, - -0.15513875143354441, - -0.15398712867123554, - -0.15250707356047738, - -0.15113241382625825, - -0.14985049663338487, - -0.14813406513102842, - -0.1466958973195288, - -0.14539949116650944, - -0.1442206818594094, - -0.14225152460595125, - -0.14054174533941197, - -0.1392647968297841, - -0.1369899422434494, - -0.1353271248415542, - -0.13407171027378337, - -0.13160324552629818, - -0.12999270655209438, - -0.12894658242605955, - -0.12826874710706407, - -0.12663542963525434, - -0.12586004441727197, - -0.1255562929025439, - -0.12387076656520138, - -0.12340308406712895, - -0.12325601765060382, - -0.12324356316740687, - -0.12288196353322979, - -0.1228514075581144, - -0.12295307089136169, - -0.12158721581472305, - -0.12093537709103809, - -0.12063612634527054, - -0.11809278988158212, - -0.11640109341648405, - -0.11528032226866795, - -0.11464323753387076, - -0.11191033040756697, - -0.10977770711319279, - -0.10823265858899403, - -0.10416138850243567, - -0.1006599187639319, - -0.09777779854090313, - -0.09555843032966695, - -0.09130460036024302, - -0.0878241046150857, - -0.08508759638219177, - -0.08013614115320779, - -0.07612135972357993, - -0.07296373920540855, - -0.0675512878525837, - -0.06333629349522674, - -0.06015525958376842, - -0.05788266083138509, - -0.05360160592676638, - -0.050528605853254034, - -0.048514081537872844, - -0.044525736170149134, - -0.04180775452332721, - -0.040283259394850064, - -0.03988563715240051, - -0.03740681070459024, - -0.03579559304386786, - -0.03503625177353467, - -0.03206258948655341, - -0.030160532111374604, - -0.02913042372867592, - -0.02589077152912506, - -0.046388820781156706, - -0.04501702868740462, - -0.04448673104553125, - -0.042001265344196216, - -0.040433315678943704, - -0.03970006098711331, - -0.03701776714881352, - -0.03520026560675899, - -0.034178376980390314, - -0.03393122776894437, - -0.03197066598067716, - -0.03087673830104311, - -0.03059663566548395, - -0.028687536168665397, - -0.027641810821313062, - -0.027397553962500525, - -0.025777538186359365, - -0.024983817801502193, - -0.024932009014122267, - -0.025463501273769173, - -0.02490640990499662, - -0.025089223977618594, - -0.02597813542910725, - -0.026118614727485813, - -0.02683846872353056, - -0.02822746254371713, - -0.0302800701166382, - -0.03212761589873217, - -0.03455103972184043, - -0.03738291139066626, - -0.040396894346447706, - -0.043931404875462675, - -0.04790198053264663, - -0.05258560626954486, - -0.057516338184097245, - -0.06249259452674203, - -0.06771658589088267, - -0.07413849730720737, - -0.08053501309964364, - -0.08685862595466583, - -0.094572636361803, - -0.1018526258024275, - -0.10869192593916095, - -0.11511148962824468, - -0.1228297688333191, - -0.1297019334791681, - -0.13574090105386344, - -0.14362728211960665, - -0.15009231390410427, - -0.15533378335665618, - -0.16308048939817898, - -0.16880972011677772, - -0.17340926812854404, - -0.1768609274755028, - -0.18291539340979973, - -0.1871798495120229, - -0.190487592820962, - -0.19755160615018508, - -0.20294800230545415, - -0.20708420153987148, - -0.2102344035831253, - -0.21605839344163563, - -0.22003562217642797, - -0.22256014198142193, - -0.2282379974009916, - -0.23192152108982544, - -0.23430720399992716, - -0.24111251049439272, - -0.2463505114510228, - -0.2503699251256209, - -0.2533482098605867, - -0.2604387201605006, - -0.2658912992025398, - -0.2700750998862808, - -0.27862265781168205, - -0.2855838908562258, - -0.2912137635664053, - -0.2956801145962517, - -0.3042418894008973, - -0.3112666813146346, - -0.31686891475094653, - -0.326505103512386, - -0.3344420212233363, - -0.3408252205107945, - -0.3511428024414114, - -0.3595889753727514, - -0.36623268120060387, - -0.37113995694314955, - -0.3792329190026178, - -0.385345933306991, - -0.3895874012597425, - -0.3965393726819816, - -0.4014925406352958, - -0.40455710940780293, - -0.40581862270113095, - -0.40914888033981694, - -0.41047461406756264, - -0.41004435239183, - -0.41133290728599975, - -0.4109040969036108, - -0.4218925953402272, - -0.4212531585181304, - -0.41909237982288716, - -0.41564767562212585, - -0.4110356245811401, - -0.4072239950866107, - -0.4023510566808503, - -0.3967224190380141, - -0.3916720000554079, - -0.38587250074565166, - -0.379379406065387, - -0.37201350975556996, - -0.36512205091574496, - -0.35741784502719565, - -0.3488759798132401, - -0.3403342120377243, - -0.33206084217169984, - -0.32385217018562634, - -0.314876987101257, - -0.30608261894550387, - -0.29766740885676, - -0.28968572791559166, - -0.2811417575121693, - -0.273453577379349, - -0.26664200858044945, - -0.25877534586952183, - -0.25181489052105943, - -0.24578932259116196, - -0.24020493352454614, - -0.233574423393373, - -0.2276733137884966, - -0.22293165822098393, - -0.21614990223664016, - -0.21042208916174215, - -0.20544570593727518, - -0.19823743120469947, - -0.19226822321560982, - -0.1875193699555729, - -0.18397002828339057, - -0.17872036585226386, - -0.17450810194065627, - -0.17142343397564413, - -0.1659118045796872, - -0.16113280146877224, - -0.15710989549185767, - -0.1540404083814442, - -0.14824003359556231, - -0.14338601825282754, - -0.13935331182292063, - -0.13267962539322434, - -0.1268775511118706, - -0.12181968085221716, - -0.11411191343491074, - -0.10715379653894846, - -0.10095819861609538, - -0.0953480700943837, - -0.08652829856548885, - -0.07849915606304084, - -0.07146063036698037, - -0.06143629654608308, - -0.05239851285229866, - -0.04450940391585909, - -0.03804415251937545, - -0.02842417053092082, - -0.020500456040543236, - -0.014424841105654312, - -0.006144281013585948, - 3.55396811725292e-05, - 0.003984531094409397, - 0.010111305745130458, - 0.013898093783461562, - 0.015771336433576366, - 0.01529239659219902, - 0.01670099367789155, - 0.015570258146296421, - 0.011480730712396067, - 0.008501133437751005, - 0.002295030095196211, - -0.00710818465294234, - -0.018477568965238295, - -0.027586558615795315, - -0.03796925456861448, - -0.049498613766893226, - -0.05873655590966582, - -0.06876202283195368, - -0.07940528889798412, - -0.08793084060942667 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -41042,1988 +2510,15 @@ }, "name": "vy true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -0.14295942008367876, - -0.14048825266817297, - -0.1380091958419385, - -0.1355286666664613, - -0.13305299271981913, - -0.1306626650720067, - -0.128404261552958, - -0.12625772135717295, - -0.12411294344757667, - -0.12203210487460245, - -0.12015521509313792, - -0.11822965817739643, - -0.11631579652196969, - -0.1146794417582761, - -0.11316103980456768, - -0.11159747402565755, - -0.11009716110997196, - -0.10880671873709204, - -0.10749716628794674, - -0.10614110393515593, - -0.10496662781080973, - -0.1038394957040117, - -0.10266708863797012, - -0.10158366576559646, - -0.10059396500441624, - -0.09947306915535528, - -0.09825076268353243, - -0.09706632010569956, - -0.09587464918432916, - -0.09469806640900356, - -0.09359912630785927, - -0.09253535615530357, - -0.09150241988632025, - -0.0905599909698836, - -0.08968902662826504, - -0.08900654546095012, - -0.08849135172528562, - -0.08808593379767428, - -0.08791246115567597, - -0.0880117830866502, - -0.08836552515163135, - -0.08916919199209507, - -0.09070147964288672, - -0.09298173106642034, - -0.09591901695668344, - -0.0995689655535197, - -0.10360242281115754, - -0.1073413115283766, - -0.11073955767824424, - -0.1138337957610685, - -0.11641259139540029, - -0.1182492119463633, - -0.11980410963625021, - -0.12111798246115837, - -0.12196155166385499, - -0.1226701882269443, - -0.12342547440522163, - -0.12389384935044707, - -0.12409286575348737, - -0.1244183133760312, - -0.1247626431447934, - -0.12464363052788008, - -0.12447272310246242, - -0.1243610367861827, - -0.12385014323377815, - -0.1230737463172514, - -0.12246237640963861, - -0.12186934228810266, - -0.12103677812115705, - -0.12051005502512689, - -0.12029855297008275, - -0.11990426117020167, - -0.11971375590158945, - -0.1199269334725429, - -0.12023747795410725, - -0.120569577119155, - -0.12132937247689156, - -0.12241608639263436, - -0.1234300918636591, - -0.12480755248813967, - -0.12658568118099872, - -0.1283645319263088, - -0.1303126130581237, - -0.1326094635343431, - -0.1350924034738222, - -0.13750630868818065, - -0.14022772146277157, - -0.14321764367327605, - -0.14607750831034327, - -0.14906355138309607, - -0.1522409019075811, - -0.155376941813862, - -0.15841796560402882, - -0.16156864077982458, - -0.16474499938049278, - -0.167704619377628, - -0.1706989869718065, - -0.1737472134865116, - -0.1766029787372641, - -0.17934534192317417, - -0.18211798630726314, - -0.1848049782069571, - -0.18725242436048892, - -0.18964508240465913, - -0.1919850497759976, - -0.1940926370854897, - -0.19613870767040315, - -0.19800925991912127, - -0.19969369223192068, - -0.20119678831359156, - -0.20258504457529855, - -0.2038714367427103, - -0.20501254042737702, - -0.20607626147832905, - -0.2070687869753915, - -0.20788579328168436, - -0.20867975047916054, - -0.20952191451281352, - -0.21023586114456777, - -0.21078588681182447, - -0.21134381661494966, - -0.21186374513348866, - -0.21220918470251104, - -0.2124965652020673, - -0.21278230853917482, - -0.21301584092790324, - -0.21325302160997717, - -0.21342746822306538, - -0.2133566356162318, - -0.213258965274171, - -0.21323010373886825, - -0.21317424077340014, - -0.21297785011781364, - -0.2128645828699427, - -0.2129006039262398, - -0.2128699317471011, - -0.21271812516891012, - -0.21266753760163945, - -0.21272998710866722, - -0.21280681503720805, - -0.21282363304504476, - -0.21285954455058448, - -0.2129365070509706, - -0.21312197476121045, - -0.2132928228611003, - -0.21338908395419978, - -0.21347932874117978, - -0.21362324020367923, - -0.2138292779112103, - -0.21388927523493523, - -0.21389156318355987, - -0.2139468104872712, - -0.2139445000983363, - -0.21394124882843746, - -0.21386795165306327, - -0.21369727992310011, - -0.21346954949092045, - -0.21314172482363145, - -0.2126347111804339, - -0.2119179829273648, - -0.21106657590836472, - -0.21005607862987447, - -0.20885398718888876, - -0.20736480617801153, - -0.20572986205846389, - -0.20388855468105943, - -0.2017775619365188, - -0.19957120589457686, - -0.19726093852655557, - -0.19486887531273325, - -0.1924512101080047, - -0.18995916311339492, - -0.1875175782068257, - -0.1852979036188653, - -0.18336542189391353, - -0.18175305116657978, - -0.18046319183917855, - -0.17948980336384587, - -0.1786964602448632, - -0.17806730959497824, - -0.17763099436308832, - -0.17740914586057585, - -0.17733652421824783, - -0.177492030293537, - -0.17782964648427863, - -0.17816142331499038, - -0.17847839267359494, - -0.17896115064895243, - -0.17942514945641494, - -0.17979538079409912, - -0.1802229401718189, - -0.18063050851413753, - -0.1809279032899129, - -0.18122328664465678, - -0.18153860707848962, - -0.18171457815404402, - -0.18179364609013257, - -0.18194116808760943, - -0.18196207934700048, - -0.18183996455375545, - -0.18176808654633733, - -0.18161912804385955, - -0.1812744906610847, - -0.18089558444869933, - -0.1806910799677098, - -0.1802811203808282, - -0.17970416791102461, - -0.17926895700237397, - -0.17870336697565112, - -0.17793852462137696, - -0.1771941708699274, - -0.17642390107749414, - -0.17539017145201605, - -0.17422079968874427, - -0.1732254653547327, - -0.1719841648394695, - -0.17046709221350073, - -0.16880810620630335, - -0.16694481411489384, - -0.16484534723659588, - -0.1628655338661936, - -0.16107847647592544, - -0.15709359323887256, - -0.15580926719880836, - -0.15446546182800333, - -0.15305209016059146, - -0.1519081218341447, - -0.15093036053882405, - -0.1498790245904601, - -0.14887034768457902, - -0.14827826798028101, - -0.14766365484727312, - -0.14697491141005894, - -0.14666432237928712, - -0.14649590859064862, - -0.1462038149353414, - -0.14601009251997232, - -0.14613431598261006, - -0.14610595008393398, - -0.14595640195010437, - -0.1461714584238831, - -0.14627310523230966, - -0.146211277106079, - -0.146340117715112, - -0.146753145184941, - -0.14701960273447673, - -0.14736173179705406, - -0.14817644853275191, - -0.1489576277368378, - -0.14979415120967937, - -0.15099970801521476, - -0.1521166012159214, - -0.15306864451619107, - -0.15408981863254176, - -0.15534197649424555, - -0.15645611482495045, - -0.157506170361122, - -0.15881503754159185, - -0.1600404831070022, - -0.16115167980011108, - -0.16236103176099176, - -0.16357285261213453, - -0.16465585078843137, - -0.16567138880190968, - -0.16673066875783096, - -0.1676664048481136, - -0.16848029719671415, - -0.1692303928794234, - -0.16994676283937438, - -0.1706649842123589, - -0.1713917864651534, - -0.17222400198737498, - -0.173082880544124, - -0.17395470640509542, - -0.17488001329515349, - -0.17596481384770363, - -0.17708193082729862, - -0.178119780361595, - -0.17914828540387706, - -0.18021679798778634, - -0.18121016589084699, - -0.18208456742275606, - -0.18299927204870223, - -0.1838874398024049, - -0.1845668932787228, - -0.1851359386331268, - -0.18565367418464976, - -0.18601652098320998, - -0.18611389411461488, - -0.18616731904120706, - -0.18609411758089245, - -0.18569753624938667, - -0.18522970755671392, - -0.18475556478958075, - -0.18411592331647605, - -0.18326705852439462, - -0.18245870343873394, - -0.1816868716727243, - -0.1807453966372472, - -0.17998754606057296, - -0.1794028066812072, - -0.17872693094508957, - -0.17808694537516948, - -0.17757564394770156, - -0.1771000834575794, - -0.17659648280325063, - -0.17638394940459348, - -0.17636712983195096, - -0.17628180264228396, - -0.17635784341245578, - -0.17662637754601446, - -0.1769026321765428, - -0.17720488300999312, - -0.17772238996103806, - -0.17833734091788592, - -0.17885792811101928, - -0.17958158265081048, - -0.1805360097639505, - -0.18141488385324803, - -0.18241829397614387, - -0.18367085702641509, - -0.18500180724760634, - -0.1864297562625134, - -0.18817385085262572, - -0.1899830450605719, - -0.1916910706528287, - -0.19365899940056244, - -0.19566378438741197, - -0.1974713706895402, - -0.1992335619473297, - -0.2010588601861949, - -0.20277672630003357, - -0.20412876037916247, - -0.20541969612357314, - -0.20654095919568677, - -0.2070566599434956, - -0.20719273173688943, - -0.20719028573816786, - -0.2068331319161851, - -0.2060535238651467, - -0.20533588146455645, - -0.20459225390022567, - -0.20341256073946823, - -0.20220680925413592, - -0.20107475061743257, - -0.19987008642729165, - -0.19862861612764054, - -0.19760165527508844, - -0.19669957325156853, - -0.1958543623430053, - -0.19530567431542098, - -0.19498410835268098, - -0.19473465912142246, - -0.19479912075323985, - -0.19506474599628829, - -0.19538135669065468, - -0.19581231330117183, - -0.19626692940475784, - -0.1965474872572385, - -0.19629208068337847, - -0.19596439876768051, - -0.19567256579095452, - -0.19528081314602497, - -0.19482593712532859, - -0.19458668099762486, - -0.19449546036686693, - -0.194434160729895, - -0.1943733387020818, - -0.19430984542527807, - -0.19418173406313127, - -0.19393734492529743, - -0.19362368960715337, - -0.19330945213750095, - -0.19305008579289876, - -0.19299910460697203, - -0.193283434287141, - -0.19391275869899652, - -0.19495097043971582, - -0.1962681374622847, - -0.19782166880671617, - -0.1996478018225987, - -0.20167723816588856, - -0.20392619377653343, - -0.20636910267091502, - -0.2091734029952539, - -0.21225068134155292, - -0.21532790826406595, - -0.2185207011477867, - -0.2217512722405609, - -0.22500125484468816, - -0.2281970997714087, - -0.23152872219426515, - -0.24148482392983472, - -0.24476982858615012, - -0.24786595330902356, - -0.2508747407731414, - -0.2537948581201621, - -0.2565007238337512, - -0.25892742054166995, - -0.2611577397731109, - -0.26315891825088383, - -0.2648173882916033, - -0.2661917158408931, - -0.26736142731018764, - -0.2682538953516409, - -0.268692168471671, - -0.2689994059268276, - -0.2691341626861167, - -0.2687641543623396, - -0.2681981690280218, - -0.2675127724547113, - -0.2664120758360061, - -0.2648981343986647, - -0.26330055835070393, - -0.26146532045304965, - -0.2590235637167148, - -0.2564220530980206, - -0.2536737852673152, - -0.25039452565392156, - -0.24694151852664664, - -0.24356470743964914, - -0.24009281431249907, - -0.23643687630158244, - -0.23294543867529666, - -0.2295355070792157, - -0.22586843716938648, - -0.2224213923721901, - -0.2191707167537694, - -0.21583889362567307, - -0.21251128039257472, - -0.20940902390112415, - -0.2063595718980176, - -0.20302295185663088, - -0.1998263656179475, - -0.19677241879395563, - -0.19389657973887597, - -0.19119671547323996, - -0.18862577182010512, - -0.18639067776132967, - -0.1846770892438657, - -0.1831007821163226, - -0.1816362900584859, - -0.18051325467329413, - -0.17959947068324422, - -0.17875778281458882, - -0.17801700117805414, - -0.17739670611038705, - -0.17678547580782702, - -0.17619795832806157, - -0.17577210116543782, - -0.17532750818171453, - -0.17482034906463895, - -0.17444570836856693, - -0.1740670456291415, - -0.17349144082489118, - -0.17284777511126126, - -0.17234049314844074, - -0.17167815982537526, - -0.1710880662893757, - -0.1708936687344025, - -0.17055280402142683, - -0.17003162834264404, - -0.1695592558845791, - -0.1691258294882626, - -0.1684205449315266, - -0.16753278444697045, - -0.1666829613458505, - -0.16566011516188622, - -0.1644895600806967, - -0.16347421786303554, - -0.1624700581327354, - -0.1613467026732991, - -0.1601650264770805, - -0.15907711308072572, - -0.15782166003268946, - -0.15650043110572748, - -0.15547144979201186, - -0.15441981203351948, - -0.15321980104490537, - -0.15214844418740195, - -0.15129334225086688, - -0.1503257614792149, - -0.14933149709653357, - -0.1484886212868905, - -0.14714556543210183, - -0.14573253934724759, - -0.1448737631357112, - -0.14413825946180733, - -0.14323177057135927, - -0.1429400095943909, - -0.14364637608565475, - -0.1442890901205903, - -0.14490911625119995, - -0.14643298803325475, - -0.14799412222855063, - -0.1492431158833254, - -0.15098597977308206, - -0.15334324147409217, - -0.15520259283852983, - -0.15673063802808607, - -0.15885661226045042, - -0.1606016740629963, - -0.16173307076461077, - -0.16292843780637975, - -0.16407342961218815, - -0.16466218344681913, - -0.16483378401314844, - -0.16518653525283541, - -0.1650719453681442, - -0.16435343623050644, - -0.16344716002846485, - -0.16220813016382085, - -0.16013988190010486, - -0.15197491340751185, - -0.14461758264921615, - -0.13263191079665834, - -0.12888670110667386, - -0.1249365655877602, - -0.12115118258043514, - -0.11791695476219799, - -0.11468194562637529, - -0.11159430303882396, - -0.10913901604011136, - -0.10698960008311416, - -0.10498132105537662, - -0.10347077225659233, - -0.10249607981419097, - -0.1017127883599285, - -0.10125563247820751, - -0.10140827960373487, - -0.10182457751029725, - -0.10239052677538518, - -0.10341921061459497, - -0.10464464514376332, - -0.10582769088694657, - -0.10705724319423668, - -0.108299737657712, - -0.10943129624239346, - -0.11054359869654032, - -0.11162196689408554, - -0.11256455719137716, - -0.11333752104891556, - -0.11400504858596028, - -0.11448983992002425, - -0.11472791038928162, - -0.11475951325360391, - -0.11456355592268518, - -0.11410777291793263, - -0.1134451882824857, - -0.11250717129090768, - -0.11130291175737601, - -0.11000848263135346, - -0.10861182912178312, - -0.1069679845347327, - -0.10531440435836133, - -0.10374945803913682, - -0.10202724442103214, - -0.10035051653504912, - -0.09891009614524886, - -0.09756959133033068, - -0.09624561103740456, - -0.09543055858829838, - -0.09492138821924852, - -0.09420452117390415, - -0.09398228802314822, - -0.09431028420432384, - -0.09460321421771918, - -0.09530660288428529, - -0.09675848980081646, - -0.09850714831273193, - -0.10020842416800695, - -0.10236759392764617, - -0.10493766557854521, - -0.10727470325875056, - -0.11003775991838614, - -0.1132323986637031, - -0.116701202118172, - -0.1203392879353871, - -0.12435605710664051, - -0.12843865815285366, - -0.13251752581300047, - -0.13693560611238956, - -0.14147397009752305, - -0.14596382188138465, - -0.15044048554002765, - -0.15474973136965453, - -0.1585895632164617, - -0.16182031849519246, - -0.16449990900993405, - -0.1665932651169073, - -0.1679584726519984, - -0.16893468287925195, - -0.1695403497495346, - -0.16972665945427642, - -0.16947900747232642, - -0.16891615012443892, - -0.16812883074945792, - -0.16733953299324153, - -0.16611056049608852, - -0.16469066171590507, - -0.1637293799385856, - -0.16322693760475984, - -0.1629418655428101, - -0.16276807263675563, - -0.16260275161311694, - -0.16244685648451734, - -0.16231251822179144, - -0.16213465667534646, - -0.16199066703223564, - -0.1617452426036148, - -0.16126595038831107, - -0.16040499915430714, - -0.15942875537802262, - -0.15844744090929955, - -0.15755703844835578, - -0.15713583666174713, - -0.15719003970949125, - -0.15756747342599545, - -0.15828554487991328, - -0.15938867199433482, - -0.16067512163646525, - -0.16201128212308735, - -0.1636126828859826, - -0.16538302898493576, - -0.16709858628951663, - -0.16893590305178266, - -0.17086155600661543, - -0.17272776176595614, - -0.17454973045050223, - -0.17648759638120476, - -0.17848226845844248, - -0.180332130805851, - -0.1822277241118288, - -0.1841998919618787, - -0.1860929852208384, - -0.187896161827018, - -0.18978878504730026, - -0.19165245771895623, - -0.19332120960138127, - -0.1951187080868776, - -0.19693905728802663, - -0.1985899702162773, - -0.20027727549558383, - -0.2019888225605519, - -0.20360394440755702, - -0.2050856869178085, - -0.20654182806190982, - -0.20781528586942194, - -0.2089426372876738, - -0.21140860072475826, - -0.21194748921046777, - -0.21213250260363703, - -0.21202157810694938, - -0.21179937317967248, - -0.21150274070640748, - -0.21098983852632913, - -0.21009997121877386, - -0.20906551198574091, - -0.20780536916031694, - -0.20617632172549746, - -0.2043127561563671, - -0.20230261568473504, - -0.20009855602626034, - -0.1976488931418378, - -0.19508888740625285, - -0.1923044213154077, - -0.18933387623258016, - -0.18631789752355854, - -0.1832434894368, - -0.18002000532245083, - -0.1766835609020676, - -0.17346543063900938, - -0.17044092317359175, - -0.1676815203131333, - -0.16517317409020416, - -0.16289667133305727, - -0.16082672095276593, - -0.15904482277176232, - -0.15759865171005508, - -0.15636869853396365, - -0.15535154978451113, - -0.15451325186781117, - -0.15382658125357157, - -0.15331640665714688, - -0.15294708090324466, - -0.15267157433497755, - -0.15239091642250122, - -0.15192376267777458, - -0.15148270912908124, - -0.15111143822707848, - -0.15076025488715605, - -0.15047682478661473, - -0.15028407369032293, - -0.15010092701489255, - -0.1499086056244622, - -0.14981158601473007, - -0.14978663614738993, - -0.14979606560564646, - -0.14987733005427922, - -0.15002433438554416, - -0.15010812580466373, - -0.15019155269188475, - -0.1503421332862795, - -0.15053909706117935, - -0.15076255726384563, - -0.1510489841332882, - -0.151386101292815, - -0.15171912105390897, - -0.15211101081278153, - -0.1525944817319772, - -0.15313255708096077, - -0.15371786981669588, - -0.15435620644686981, - -0.15500550016618422, - -0.15561659240179457, - -0.1562408296495585, - -0.15688035679821208, - -0.15751476610004933, - -0.1582213644431574, - -0.15896278929711777, - -0.1596677417120505, - -0.16036753814303775, - -0.1611091767275205, - -0.161877811850354, - -0.16266437650081678, - -0.16343440398043774, - -0.16412959474072347, - -0.1647854570844896, - -0.1654267486147733, - -0.1660410122124748, - -0.16663458908248494, - -0.16725568521307654, - -0.16786001100181241, - -0.16843499063552939, - -0.16905981776020687, - -0.16967660651896047, - -0.17023414237410484, - -0.17079071742651453, - -0.17138824501038183, - -0.17182359187396337, - -0.17213742108759103, - -0.17258402357121827, - -0.17293306378522227, - -0.1731860110718545, - -0.17347481324273747, - -0.17371454985002938, - -0.1737724074567973, - -0.173779285269758, - -0.17378785143019726, - -0.17355690232587018, - -0.173224498454915, - -0.17296380067607722, - -0.1725141190705231, - -0.17197629307072818, - -0.17156420564149533, - -0.17109691496016752, - -0.17059120190792085, - -0.17029521527090294, - -0.17022684452935055, - -0.17011170371160647, - -0.1700997911808977, - -0.17028974406930925, - -0.17049661243522254, - -0.17070224977196663, - -0.17097495074854557, - -0.17151726844043727, - -0.17196670922439544, - -0.17236355667134684, - -0.17296708529754812, - -0.17357825274304406, - -0.1740759236714564, - -0.17461527394893786, - -0.17535598500130578, - -0.17598498306371294, - -0.1765004260538161, - -0.17717316449875406, - -0.17774695503879637, - -0.17815267089817993, - -0.17866425715795123, - -0.17918924516472493, - -0.17946267376955, - -0.17961419548626104, - -0.1798849777000542, - -0.1798524335848545, - -0.17958496656356351, - -0.17941468687427456, - -0.17919559893130585, - -0.17876474267958556, - -0.1783245139577132, - -0.17805326615473735, - -0.1776247382612111, - -0.17715784617570388, - -0.17703880724656929, - -0.17691397570006315, - -0.17672632312948558, - -0.17669098427407062, - -0.1767905779460542, - -0.17673231079955765, - -0.17666232190887005, - -0.1768791902143367, - -0.17703483583375398, - -0.17704311798713973, - -0.17720805970510034, - -0.17729274024488942, - -0.17714260715300809, - -0.17692857828073813, - -0.17679960595367536, - -0.1764383569013407, - -0.17591843749381167, - -0.17552762329221452, - -0.17503136881173756, - -0.17440422651655715, - -0.17398754430668253, - -0.1736632179961617, - -0.17316232260403377, - -0.1726072483105131, - -0.17215514919086333, - -0.17173069025493035, - -0.17132082795946996, - -0.17097912800175977, - -0.17060769081206129, - -0.17015304821068225, - -0.169743316217332, - -0.16936871454232813, - -0.16888807400864841, - -0.1683354091636951, - -0.16787932188843277, - -0.16744728950624257, - -0.16694265926755408, - -0.16641249627329885, - -0.16589113055904314, - -0.16537799665148545, - -0.16493898499848486, - -0.16450480351053304, - -0.16412591808677082, - -0.163901502791788, - -0.1638163336529673, - -0.1638708922027776, - -0.16413773936921783, - -0.1646270429039961, - -0.16538753249059246, - -0.16639498221669588, - -0.16759309890917443, - -0.16896113819465158, - -0.17072309689051934, - -0.17291047320335534, - -0.17521809012748166, - -0.17772643874592978, - -0.1804340717774356, - -0.1831490073149381, - -0.18573622364986045, - -0.18836432465015537, - -0.1908626901264156, - -0.19291238122197366, - -0.1947133829042346, - -0.19641784372260554, - -0.1978053498824264, - -0.19875532113865332, - -0.19966951024120183, - -0.20067634091906209, - -0.2014004503490999, - -0.2023525839183091, - -0.20349051202287732, - -0.2044513983885576, - -0.20533781908156068, - -0.2062877469681872, - -0.2070417062371648, - -0.20719363177634662, - -0.20715552724283007, - -0.2069823929228263, - -0.20639217416949324, - -0.20578583266626427, - -0.2054050929999077, - -0.20500646833318018, - -0.20435239887581153, - -0.20391838223492514, - -0.2036810747929295, - -0.2031932120066162, - -0.20288365260149008, - -0.20283893635930905, - -0.20272416962994916, - -0.20251099258874888, - -0.20258479411297173, - -0.20277935997230057, - -0.2026842870576195, - -0.2028391990361886, - -0.20325925656472124, - -0.2034963066191063, - -0.2038092137948062, - -0.20442228451063418, - -0.20508812050888003, - -0.20557740332699698, - -0.20642451999936579, - -0.20759337039110043, - -0.20857465950129025, - -0.20983545413545385, - -0.21143854662095532, - -0.21299978453116827, - -0.21435511661608253, - -0.21575547101257989, - -0.21728200566067393, - -0.21862067876566368, - -0.22004310071649166, - -0.221572363150668, - -0.2229817144220858, - -0.2243784213367378, - -0.22575346318202236, - -0.22703870052066225, - -0.22815810022307587, - -0.22944923287686542, - -0.23084955504153706, - -0.23231127738865046, - -0.23407285315062634, - -0.23592358093409455, - -0.23754947274274088, - -0.2391407373018776, - -0.24051919062136332, - -0.2416728369605783, - -0.242835736790924, - -0.24394340478011317, - -0.2448638279842014, - -0.2455230133228754, - -0.24572811041383782, - -0.24538664759067277, - -0.24468159191008731, - -0.24374163313572458, - -0.24238868148476989, - -0.24084485659520957, - -0.239484928746734, - -0.23797136119973794, - -0.23623378098139308, - -0.234652611840732, - -0.2332886567310592, - -0.23184032702192175, - -0.23037294535160885, - -0.22914764349795907, - -0.22781477694648755, - -0.2263928130342374, - -0.2252390485877201, - -0.22420218929808966, - -0.22314426953904154, - -0.22223453247235922, - -0.22174072004478795, - -0.221308656999866, - -0.22096303894354433, - -0.22099296438581165, - -0.22106575980267623, - -0.22110231981423598, - -0.2213735793256756, - -0.22187120445595912, - -0.22228976185848037, - -0.22264896891765906, - -0.2233135619732142, - -0.2238195764432941, - -0.22402756063657253, - -0.22439423194534797, - -0.22469724414377937, - -0.2246009763146468, - -0.2243914090353715, - -0.2244661857313686, - -0.22421717339414154, - -0.22365968233630013, - -0.2233618010701842, - -0.22290992236211118, - -0.22214105037387732, - -0.22133588865310785, - -0.22076390455889355, - -0.22001779292442833, - -0.21907516666863927, - -0.21846470225758072, - -0.21742409910282656, - -0.2157989953196553, - -0.21403352154881508, - -0.21198879483215718, - -0.20916783776398526, - -0.20611912330410137, - -0.20327359778392154, - -0.2000478609914622, - -0.19677194205194382, - -0.19421700962549857, - -0.19223076892922472, - -0.1906049866882733, - -0.18953386644202672, - -0.18911161843922178, - -0.18852929398406637, - -0.18794308996418238, - -0.18794683580763535, - -0.18797533538396136, - -0.18784363245112715 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -43033,1987 +2528,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.8942556446129859, - 0.8921104875029191, - 0.8872636011151281, - 0.8798027556200785, - 0.8699640144991589, - 0.8664988403845197, - 0.8605040624482032, - 0.8521756525718693, - 0.8497348032305592, - 0.8448835466360679, - 0.8377697755154835, - 0.8361670262466614, - 0.8321969052338989, - 0.8260364507153874, - 0.8178727514394295, - 0.8145802927494405, - 0.8091942754339612, - 0.8018984604467577, - 0.79909099146402, - 0.7943282202718229, - 0.7877969277989098, - 0.7796961300823475, - 0.7755695567773195, - 0.7698289043720722, - 0.7626572852078175, - 0.758618028622043, - 0.7531274047554566, - 0.7463575131316659, - 0.7418575334733111, - 0.7361416876845837, - 0.7293888424672812, - 0.7218062199256919, - 0.7156686969003324, - 0.7087843973856425, - 0.7013963320651608, - 0.6946260883348778, - 0.687369093585789, - 0.6798741022939148, - 0.6724729417396144, - 0.6653050732859569, - 0.658687560578366, - 0.6528464743450378, - 0.6467165512099635, - 0.6417651398280664, - 0.6381089182605578, - 0.632987524586696, - 0.6294464286509323, - 0.6270807007109561, - 0.6256638192469282, - 0.6217993469322396, - 0.6188300618616338, - 0.616452515118838, - 0.6100929566447866, - 0.6046847049561328, - 0.5998261525793607, - 0.595512887164474, - 0.586694235316229, - 0.5789709957916171, - 0.572225917079052, - 0.5601044234364239, - 0.5493921355962574, - 0.5398538602653449, - 0.5238816912903722, - 0.5095467609034451, - 0.4966072700999883, - 0.48501994728473014, - 0.46643268299914764, - 0.44969894643621283, - 0.43480309408734136, - 0.4124460219453661, - 0.3924811896255216, - 0.37501168093312837, - 0.3599822486874436, - 0.33786852938592266, - 0.31875137690427763, - 0.30259894141266663, - 0.2795425227188626, - 0.25991004774882814, - 0.24374304053457224, - 0.22075998131401176, - 0.201611207086064, - 0.18632811427938306, - 0.17495021395190735, - 0.1570844681102741, - 0.14343180862369664, - 0.13403737555774886, - 0.11807386062643532, - 0.10659639586871905, - 0.09956507814517601, - 0.09694272766592171, - 0.08784643595690644, - 0.08333832065173885, - 0.08332534675456837, - 0.07653731511140505, - 0.07432977679512531, - 0.07659819331533912, - 0.0717796574675289, - 0.07144353588607233, - 0.07558459874475176, - 0.08411765108993419, - 0.0854312393715595, - 0.06592934661932581, - 0.07625379382236808, - 0.07955565628626737, - 0.08814388050516475, - 0.10174415443769724, - 0.12030840256472314, - 0.1320779827413967, - 0.14865696317155502, - 0.16973839800883933, - 0.18361808056891682, - 0.20183686687581337, - 0.22400028866352384, - 0.23843688063047824, - 0.2567064317635049, - 0.2784508906224069, - 0.30314739092113235, - 0.3200278216666863, - 0.33971833888200903, - 0.36177181903471434, - 0.3756988039058708, - 0.39178226421566775, - 0.40964770110344195, - 0.4288443722562868, - 0.4404824027269597, - 0.4536505035358128, - 0.46793840609944753, - 0.4751517697390447, - 0.48393457362994907, - 0.4940287582455105, - 0.49774018308802725, - 0.5031550052594721, - 0.5099844260546957, - 0.5180434127103145, - 0.5210022440825915, - 0.5255953064192548, - 0.5315581484764225, - 0.5330301474786037, - 0.536161190212665, - 0.5407443033315414, - 0.5465628437436035, - 0.5489546434674089, - 0.5527610464429655, - 0.5577813419603975, - 0.5600740137073371, - 0.5636499077383079, - 0.5683162021295658, - 0.5708927013850497, - 0.5746377434692989, - 0.5794325047968151, - 0.584984749621538, - 0.5892184975426343, - 0.5942585373624801, - 0.5999229116270067, - 0.6048541739566884, - 0.6103567249993571, - 0.6162372498491351, - 0.622281267273885, - 0.6282004283047391, - 0.6342731564472832, - 0.6403438935033561, - 0.6466215229926532, - 0.6525599838413452, - 0.658125103541001, - 0.6642049580088566, - 0.6695579283293113, - 0.6742290810235542, - 0.6780524533572615, - 0.6827491038594019, - 0.6862909648250008, - 0.6888984260675716, - 0.6926510755411274, - 0.6949015157357782, - 0.6961961371452273, - 0.6968920770755909, - 0.6988756558041812, - 0.6999855664995701, - 0.700563719660873, - 0.7031669517766522, - 0.7045763358778677, - 0.7055597598268667, - 0.7099491924545054, - 0.713031695466312, - 0.7155393725107879, - 0.7177094853046851, - 0.7228402108728393, - 0.7270071480363822, - 0.7304837779601071, - 0.737287918017168, - 0.7429445603779685, - 0.7476923300614695, - 0.7516505976643049, - 0.7586330581441876, - 0.7644093816750662, - 0.7690731297571728, - 0.7766505036360369, - 0.782698302658069, - 0.787305281222199, - 0.794559623428862, - 0.8000151204094162, - 0.8038186437330173, - 0.6789469245699771, - 0.6841861549421657, - 0.6878568322763084, - 0.6900722400117902, - 0.6942983730587938, - 0.6969107753348902, - 0.6979063994859619, - 0.6973821497327113, - 0.69836953368591, - 0.6977078014659419, - 0.6955105264030238, - 0.694490327744919, - 0.6919579416424521, - 0.6880522118173421, - 0.685299518246854, - 0.6812464761662853, - 0.6760936808824316, - 0.6699560450113398, - 0.6647665991827244, - 0.65924880097303, - 0.6485344147619996, - 0.6425871274641257, - 0.6359024223605524, - 0.628578045609888, - 0.6216328838922185, - 0.6143530028280464, - 0.6067076460794107, - 0.5990462669165959, - 0.5913717216626608, - 0.583634380373494, - 0.575689949843779, - 0.5680339513611856, - 0.5606162434814835, - 0.5535681644803999, - 0.5464174660162671, - 0.5397330667851703, - 0.533757070168247, - 0.5273909075919377, - 0.5219383630832162, - 0.5171877847053941, - 0.5132455135216971, - 0.5087675781196355, - 0.5051920882031258, - 0.502388501096128, - 0.49881163941623197, - 0.4960819136172002, - 0.49402689451894033, - 0.490561255200491, - 0.4878271890458319, - 0.48564334199631154, - 0.4839791129570771, - 0.4807961873842298, - 0.4783595675303326, - 0.4766951524377304, - 0.47339083871506593, - 0.47072894950145727, - 0.46892918330346783, - 0.4681104147479579, - 0.4661995115043454, - 0.46528744319482085, - 0.46532392918235577, - 0.464312590709885, - 0.4642538163787668, - 0.46506103147645006, - 0.464807370814909, - 0.4655148990027178, - 0.4671617574278066, - 0.46940315422631457, - 0.47030502784747624, - 0.47157734909787113, - 0.4731490904778183, - 0.4731929293378572, - 0.47386824456703847, - 0.47490497500637985, - 0.47616682708929176, - 0.47590402454782077, - 0.47614515782231615, - 0.47663540124102477, - 0.4754357028856709, - 0.47484092997873717, - 0.4747186928119052, - 0.4726346758493539, - 0.4714313604438833, - 0.4706363587802236, - 0.47016009214884996, - 0.468184874394025, - 0.4666796031879621, - 0.46569970221164236, - 0.462949850200833, - 0.46074473882902534, - 0.4590226780442144, - 0.4576500502562964, - 0.4546215341759353, - 0.45207149486870674, - 0.4498912072867398, - 0.44592872558097446, - 0.4423999188755895, - 0.439302656508966, - 0.43449710691273646, - 0.43023987042407097, - 0.31446509175745996, - 0.3112206635071021, - 0.3064967285820559, - 0.3023331805653304, - 0.298790886614255, - 0.29402010533252493, - 0.28996046807619213, - 0.28658293968868864, - 0.2839076497825218, - 0.2803701314518937, - 0.27759126020749825, - 0.27558789025403047, - 0.2731818767679204, - 0.2715174393307398, - 0.2706444002082351, - 0.2699262111602542, - 0.26986078624635806, - 0.2704642849226293, - 0.2717418078038634, - 0.2733487678060901, - 0.2754443103205503, - 0.2781398250432945, - 0.2816472709035823, - 0.28520991430052134, - 0.2891099953235361, - 0.2933349004360673, - 0.2983214651342365, - 0.3030874385705241, - 0.3078992793698289, - 0.31434133014475624, - 0.320178173443206, - 0.32564049112469284, - 0.33397374275177627, - 0.341312660861012, - 0.34813815868961606, - 0.3546032123594248, - 0.36375516165906613, - 0.372138887494237, - 0.3797948391302882, - 0.39065789027433195, - 0.40024621563443247, - 0.408590895191103, - 0.4158454118211929, - 0.42617414833510425, - 0.43481992913985057, - 0.44185553662101584, - 0.4525350969863831, - 0.4609260015776909, - 0.46739797435061137, - 0.4785037189717968, - 0.4867659485443439, - 0.4935202352702147, - 0.49884169255550515, - 0.5084812561487729, - 0.5156827193955099, - 0.5209895401216429, - 0.5318176841582773, - 0.5405650200540502, - 0.5478746182426381, - 0.5538739934390305, - 0.565454830070529, - 0.5750509035167664, - 0.5828582674449363, - 0.5967555066608683, - 0.6081545528255987, - 0.6171585150756553, - 0.6325571218143257, - 0.6448393156652915, - 0.6541012267160524, - 0.6604923226306613, - 0.6726720446601462, - 0.6813300644433764, - 0.6868935324957054, - 0.6990123511806192, - 0.7073246747108273, - 0.712329229019197, - 0.7146006564204569, - 0.7231232599883328, - 0.7285521002242291, - 0.7312174073702187, - 0.7407119640421475, - 0.7469156007240103, - 0.7501188117189035, - 0.7605663688041183, - 0.7675198885340779, - 0.7713108733585265, - 0.7721656843872842, - 0.7795752381811818, - 0.7835440897639462, - 0.7843253082303236, - 0.7851536625801722, - 0.7822407229896831, - 0.7853846590912912, - 0.7850032758125449, - 0.781339714640348, - 0.7837849116840833, - 0.7826882321498456, - 0.7783037654492811, - 0.7800857628135399, - 0.778357613464101, - 0.6822574398252766, - 0.6741203766357707, - 0.6719401129431545, - 0.6665745180832657, - 0.658257927056725, - 0.6560275742204964, - 0.650740012769579, - 0.642626193810266, - 0.6319476649472491, - 0.6272573088978318, - 0.6198755691532163, - 0.6100632886604038, - 0.6065974906154945, - 0.600558194008745, - 0.5922441087123703, - 0.5904679473978158, - 0.5860434065403435, - 0.5791898429396104, - 0.5701473852937428, - 0.5671167197958098, - 0.5616206089320062, - 0.5538954033968096, - 0.5522996032089595, - 0.5481499074463161, - 0.5417408563865425, - 0.5333198831846255, - 0.5305451581985527, - 0.5256661617184122, - 0.5188991001241403, - 0.5180320199107393, - 0.5150390878262648, - 0.5101827187647642, - 0.5114337535131899, - 0.5111796607412622, - 0.510156934050833, - 0.5084006220566137, - 0.5133197580354516, - 0.5173142591254956, - 0.5203997570929887, - 0.5300142699020637, - 0.5381495955249702, - 0.5448286812901247, - 0.550067307871567, - 0.5606168681788888, - 0.5692092644166569, - 0.575857388085119, - 0.5869777177747587, - 0.5957483838802086, - 0.60219635929321, - 0.6121758431487346, - 0.6194771475014982, - 0.6241852229415132, - 0.6264414460961253, - 0.6310196058211861, - 0.6328811368764417, - 0.6321859848104157, - 0.633075867686421, - 0.6312593847160486, - 0.6269072782676739, - 0.6201922338328059, - 0.6146148352150103, - 0.6068269062362835, - 0.5970490310896397, - 0.5882387502086137, - 0.5776515147951509, - 0.5654983101375257, - 0.5540354269273606, - 0.5412409925769889, - 0.5272623007776914, - 0.5123514841008296, - 0.49779563652277986, - 0.4826952275369967, - 0.4672758287225808, - 0.4522443971663353, - 0.4373122589985819, - 0.4226247289931418, - 0.4083590426823933, - 0.39363387644446957, - 0.37972460840578093, - 0.3668757071166138, - 0.3529028728192162, - 0.34159590160871756, - 0.3324182659994368, - 0.31964683635350055, - 0.3089121033456871, - 0.30091798201190656, - 0.2948431139977573, - 0.2847810082155947, - 0.27629406698938863, - 0.26896619809151723, - 0.2513997007739608, - 0.23563668062491722, - 0.2216453147182566, - 0.2094693501923243, - 0.18497899234865253, - 0.16293360557441294, - 0.14370314589748434, - 0.11312380333700961, - 0.08581287532965165, - 0.06204502509753451, - -0.03440314171762876, - -0.06469470065145183, - -0.09074467054866037, - -0.1121910540145768, - -0.1443603800131305, - -0.17161288498493854, - -0.19323190388062506, - -0.22652819835833393, - -0.2538383861158807, - -0.2745295518762688, - -0.287751635285292, - -0.32106779312329253, - -0.3540283084782575, - -0.3920968574273261, - -0.3970041729101341, - -0.3946757875958649, - -0.4043376854979627, - -0.40666683267933074, - -0.40181990162267683, - -0.40915553849030706, - -0.4092685637615226, - -0.4028889191365698, - -0.3905813175336788, - -0.39046328972859445, - -0.3843656799342673, - -0.3723692936128264, - -0.37282067177316647, - -0.36729658301732815, - -0.3560396040363951, - -0.3571416572186477, - -0.3524821860593889, - -0.3426032570145297, - -0.3277357520483103, - -0.32572322926937874, - -0.31845775338719967, - -0.306070738017524, - -0.30623625599956517, - -0.3011193024722731, - -0.290876898795932, - -0.27575486073473054, - -0.27230627723427436, - -0.26367952784146076, - -0.2500940572782526, - -0.24779322698866685, - -0.24032872755774198, - -0.22815685786067985, - -0.22673587549051555, - -0.22041949538615768, - -0.20948760452934356, - -0.1942933811113436, - -0.18859099087438808, - -0.17852166755689874, - -0.16436106699313963, - -0.15883903747557832, - -0.14918081249713455, - -0.13574836640168297, - -0.11887136466001097, - -0.10959519341102064, - -0.09686559251987992, - -0.08105149343723794, - -0.07218065124888112, - -0.060237721846576164, - -0.04554780462377267, - -0.03695319354301291, - -0.02568149921372448, - -0.01218354028653329, - 0.0033136586580627125, - 0.01395558832318522, - 0.02660201563681225, - 0.040944956403596855, - 0.051621274260409133, - 0.06375590384453383, - 0.07727396152593086, - 0.0919076927466903, - 0.10441945192297847, - 0.11776256562088566, - 0.1318617174773523, - 0.14534478480782997, - 0.15912443831158996, - 0.17323366755041955, - 0.1879445698392091, - 0.20229657932973658, - 0.21620008903365895, - 0.22961760400260048, - 0.24481196695330398, - 0.2589299678881364, - 0.27225529991936903, - 0.2888916117640265, - 0.30433122039625393, - 0.31846578611814436, - 0.3312758722669163, - 0.34761740518931716, - 0.36184522067305885, - 0.3737621380628968, - 0.3892148876123497, - 0.3988611546963288, - 0.40578550046431566, - 0.41894953053536643, - 0.4294953234348604, - 0.4380192267742755, - 0.3956930408649751, - 0.40962848445611133, - 0.4215164112516868, - 0.43157745962435456, - 0.4497748975309706, - 0.46531121447551627, - 0.4782299460343909, - 0.48866739848003526, - 0.5068184823338708, - 0.5211291693010919, - 0.5314361803409215, - 0.5493021710112521, - 0.5628454126914741, - 0.5730844255631684, - 0.5927640500308864, - 0.6087230607080957, - 0.6212104214482068, - 0.6304497665518426, - 0.6488516472679606, - 0.6634325141643104, - 0.6743185858295669, - 0.6945405182157026, - 0.7104716700515152, - 0.7222489461058206, - 0.7300990746033074, - 0.7463908470238081, - 0.7581975622174868, - 0.7656020937079923, - 0.7813471401635124, - 0.792154757966653, - 0.7980096091841282, - 0.8114248428323356, - 0.8192944094113309, - 0.8217809946994317, - 0.8192033132373024, - 0.8233292278719754, - 0.8221483397211016, - 0.816109377897428, - 0.8164840043688435, - 0.8117679043307242, - 0.8023927404292794, - 0.7885470491166969, - 0.7804697698538776, - 0.7679040168367122, - 0.7511127704106281, - 0.7400652703005086, - 0.7249277726709047, - 0.6745537130724091, - 0.6546037142947729, - 0.6318288501878266, - 0.6145393630103516, - 0.5944419320094213, - 0.5719791986755436, - 0.5550330794130386, - 0.5356043298001287, - 0.51412071255062, - 0.4910739101970901, - 0.4732614073516071, - 0.4538656665622745, - 0.43314644533821267, - 0.417588628203372, - 0.40082017821948757, - 0.3831926842636783, - 0.37083387657863875, - 0.35760313136485156, - 0.343697717243271, - 0.32945870323690085, - 0.3198331328575111, - 0.3097133286404528, - 0.29918394728595776, - 0.2927630367678849, - 0.28577896854591345, - 0.2784213542085272, - 0.27086610238184194, - 0.26671739276312845, - 0.2621201577920492, - 0.2572377184455845, - 0.2552058187492702, - 0.25263780109512135, - 0.2496535403795071, - 0.24914561552259312, - 0.24796471896718275, - 0.24622611698275537, - 0.24406487645829017, - 0.24390970556838648, - 0.24336402421843306, - 0.24279943526398073, - 0.2444904114149247, - 0.2461768954718025, - 0.24786996375604786, - 0.24956584797690096, - 0.2531097412580529, - 0.2564122461503443, - 0.25949005995187213, - 0.2640703774274227, - 0.2682136016344035, - 0.2719374814255836, - 0.27703750805180893, - 0.28158707588891585, - 0.2856245658415656, - 0.25329440674980114, - 0.2578471603702644, - 0.26176600645467785, - 0.26507024287820147, - 0.26917260040515645, - 0.27255451249727336, - 0.2752330991223546, - 0.27723825727682544, - 0.2798894904878202, - 0.2817299240985372, - 0.2827848671329529, - 0.28435651712039994, - 0.2851903101223284, - 0.2853535743574157, - 0.2861416448368548, - 0.2863179292761897, - 0.2859188258271179, - 0.2849882720967617, - 0.2845966986383345, - 0.2836819314797738, - 0.2823068222845336, - 0.28147698940282484, - 0.28018248369847826, - 0.27852936447015914, - 0.27656626999208767, - 0.27502918051806396, - 0.2731542269713467, - 0.27097919553237115, - 0.26906366792997527, - 0.26678466850922977, - 0.2641975948183042, - 0.26177323539640773, - 0.25904931036873224, - 0.25609511027086596, - 0.25296480629342594, - 0.24981680982749688, - 0.24650190743138506, - 0.24308474645146508, - 0.23963024900028684, - 0.23618362728309886, - 0.2328758399872136, - 0.22974679549258137, - 0.22636174381032048, - 0.2232467947489721, - 0.22032388882502113, - 0.21700523572191888, - 0.2140824791170673, - 0.21153736129273865, - 0.20822426012298137, - 0.20565863423046557, - 0.20365236767586792, - 0.2020515715022138, - 0.20000137638069218, - 0.19868499862054273, - 0.19773383692993837, - 0.19554917072611, - 0.19456681666152856, - 0.19389999512513817, - 0.19342166236162664, - 0.19218578776227171, - 0.19144709724275413, - 0.19087557276910302, - 0.1883804464878545, - 0.18666336365712397, - 0.18544049227567805, - 0.18145099780360135, - 0.17837858641411042, - 0.1759909175906557, - 0.17406306952965522, - 0.16950253225882506, - 0.16573825522381613, - 0.16286091256391066, - 0.1576608934486046, - 0.15375489514286253, - 0.1509258584967124, - 0.14903100909421146, - 0.14503382980822857, - 0.14216727316292224, - 0.14033130302322983, - 0.13661261384576623, - 0.13394347297558967, - 0.13235825139780855, - 0.12901780758223075, - 0.12664140794868545, - 0.12512676603474188, - 0.12451766130671182, - 0.12218471811563773, - 0.12075327889177705, - 0.12028278910902987, - 0.1182384333369214, - 0.11718620195623936, - 0.11711947074066491, - 0.11793592892820437, - 0.11707089255587826, - 0.11708496883999314, - 0.11794946768805462, - 0.11719774085111999, - 0.11738256342430942, - 0.11848837710620007, - 0.11792965691521055, - 0.09195020102416193, - 0.09337417174714391, - 0.09570323645260838, - 0.09642624564063149, - 0.09813225772171305, - 0.10025497563279505, - 0.10005430838348749, - 0.10034601038846873, - 0.10109508043320943, - 0.10233891258921195, - 0.10150929840511341, - 0.10132017966874222, - 0.10173692810941232, - 0.100160699880666, - 0.09939146102092489, - 0.09942935135845453, - 0.09762111877716095, - 0.09670620593991287, - 0.09661683021467193, - 0.09738645528545209, - 0.09667137037749372, - 0.09685254255596198, - 0.0978740775967054, - 0.09761485139889146, - 0.09841450587261304, - 0.10006625820380267, - 0.10245677247650974, - 0.10391783481543505, - 0.10620464431651734, - 0.1093209500267256, - 0.11153193316648863, - 0.11445800335008793, - 0.11795305569765167, - 0.12079353715968945, - 0.12428631972049144, - 0.1283797479257558, - 0.13277606056476565, - 0.13664812709218968, - 0.14085782790718987, - 0.14532212689945362, - 0.14962721969503784, - 0.15407843580703778, - 0.15848876655784266, - 0.16255294045730756, - 0.1665540398676733, - 0.17022461695441438, - 0.17341490876905996, - 0.17629429205828534, - 0.1789755053452457, - 0.1812565797926, - 0.18355415382677856, - 0.18558179513389167, - 0.18749110119594836, - 0.18918990550562864, - 0.1915414989683847, - 0.19352763216150054, - 0.19538121197530212, - 0.1981346667666042, - 0.20079309009651514, - 0.20314765603729024, - 0.20536853763936413, - 0.2086083604723752, - 0.21132999562632476, - 0.21357291911084997, - 0.2171966771969696, - 0.22022613542580322, - 0.2228588424955653, - 0.2274570952505071, - 0.23154989764138778, - 0.2351562159833116, - 0.23829193583238967, - 0.24341065202343384, - 0.2479589778745548, - 0.25185740737162626, - 0.25786376150978335, - 0.26302261073544064, - 0.26729783649829364, - 0.270775423297662, - 0.276227424572971, - 0.2806823761768539, - 0.28419312344626135, - 0.28973559713638064, - 0.29419153102112283, - 0.29763690205149745, - 0.30308365716723024, - 0.30732973505907357, - 0.3103849334028974, - 0.31225878517664607, - 0.3157176372078493, - 0.3178542062888253, - 0.3186980653622565, - 0.32084552521593757, - 0.3215974949809604, - 0.32104037933637497, - 0.3192684476805858, - 0.31842400705895324, - 0.3162847905831184, - 0.3129945367620992, - 0.310412259094018, - 0.30669791897983995, - 0.2810898967545072, - 0.2767504799599419, - 0.2715499663592168, - 0.2655922667867448, - 0.2592347831849488, - 0.25333483302566717, - 0.247082764884799, - 0.24040117285619392, - 0.23372317172482374, - 0.22673791899864115, - 0.21956640228663615, - 0.21216095123943485, - 0.20448261918253252, - 0.19684763683844184, - 0.18926210319234155, - 0.18084230788956457, - 0.17288725043344924, - 0.16566202834971802, - 0.157342226146562, - 0.150147949202325, - 0.1442099979333215, - 0.13936667311088685, - 0.13320546222643653, - 0.12839524284638343, - 0.12483370431504463, - 0.1190990814160038, - 0.11498170380055296, - 0.11240098889310929, - 0.11083993051132988, - 0.10636937009627485, - 0.10308419717240501, - 0.1009581580347023, - 0.09460998849413435, - 0.08977779504011053, - 0.08617950124499357, - 0.07722949574713532, - 0.06984264442860727, - 0.06384085007781415, - 0.059030319223339095, - 0.04944221945398755, - 0.04138941784457581, - 0.034818461701704745, - 0.023271882719301834, - 0.013488161829640827, - 0.005359904322817799, - -0.0011234037982484624, - -0.012014198735426695, - -0.020928332090962093, - -0.027992064307889253, - -0.039571377263731916, - -0.04890573945465446, - -0.05615293527539944, - -0.0678639080144876, - -0.07709184377693873, - -0.08400954236377092, - -0.0888067085422615, - -0.0977975218817258, - -0.10438142209461024, - -0.10866857068809099, - -0.11720896843154327, - -0.12295940116022488, - -0.12589723734327316, - -0.12626699487936513, - -0.13012823181584673, - -0.13067949838738388, - -0.12828313035208394, - -0.1295779158005703, - -0.1276537951749261, - -0.12268705489818146, - -0.12161878519483524, - -0.11715282947539743, - -0.10970022425071865, - -0.09925072297920473, - -0.09238528327748685, - -0.08262523935085272, - -0.07039902332907916, - -0.06220010915250623, - -0.05204045379408767, - -0.03988079469015421, - -0.025686860968677117, - -0.01485058627068564, - -0.0020183898813752876, - 0.012490978105436396, - 0.023329790854963034, - 0.035765857395212486, - 0.04941456649915629, - 0.0591657868771924 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -45025,1987 +2548,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - -0.3706554194543659, - -0.3728718558166985, - -0.3778037842177494, - -0.38536153101697207, - -0.39530883868517547, - -0.39891732815878495, - -0.405070341675706, - -0.41356771355444927, - -0.4162277205972483, - -0.42130528351630836, - -0.42864504329313735, - -0.43052900437694214, - -0.43477201256852527, - -0.44118617398778764, - -0.44957743921352766, - -0.4531321223679597, - -0.45874232080684174, - -0.4662213661658393, - -0.4692341355448978, - -0.4741544994351347, - -0.4807983563404604, - -0.488973170992093, - -0.4931889701297861, - -0.4989924414689969, - -0.5062192773239569, - -0.5103647870369385, - -0.5159877868490508, - -0.5229418264751596, - -0.5277383750028071, - -0.5338371013954926, - -0.5410784027654549, - -0.5492697238191236, - -0.5561907337235815, - -0.563999091328306, - -0.5724518794743296, - -0.5804932269279237, - -0.5891417503886092, - -0.5981248059303983, - -0.6070996790378568, - -0.6160457926144411, - -0.6244587350833188, - -0.6320173189258752, - -0.6400066354787133, - -0.6466055907186767, - -0.6516390634711552, - -0.6582669645401118, - -0.662983970936659, - -0.6663427284906528, - -0.6686918573123355, - -0.673838450871467, - -0.678089334417608, - -0.6817207176200073, - -0.6898847046705314, - -0.697102342974838, - -0.7036792618516658, - -0.7096152560375194, - -0.7206468641829877, - -0.730546254901115, - -0.7393711000767318, - -0.7542072449598536, - -0.767482116781125, - -0.7793104888360831, - -0.7980830657775501, - -0.8148785061644505, - -0.8298336085739301, - -0.8429340599023558, - -0.8634578978909029, - -0.8815460546721086, - -0.8971898899278428, - -0.9207220789498811, - -0.9412258744512165, - -0.9585595336504829, - -0.9728433666361735, - -0.9946062772657456, - -1.012698053368232, - -1.0272576860760947, - -1.0491319786766273, - -1.0670307151228369, - -1.080993883672582, - -1.1021830652124576, - -1.1191350776484865, - -1.1318970323665465, - -1.1405361029080257, - -1.15605860409866, - -1.1672013383964956, - -1.1739985561636823, - -1.1877172095735498, - -1.1969037007323606, - -1.2016527328624647, - -1.2020488533416098, - -1.2092096924667604, - -1.2118380399273647, - -1.210050520168167, - -1.2152467753369693, - -1.2159486268516964, - -1.2122711054346955, - -1.2158148308461745, - -1.2150056308400896, - -1.2098193901002023, - -1.2003154832029002, - -1.1981195640835094, - -1.1556843433465978, - -1.1451343750621543, - -1.14161888382962, - -1.1328463069528718, - -1.1190958671658406, - -1.1004011430908631, - -1.08850031406674, - -1.071822077089935, - -1.0506678255264268, - -1.036708008147182, - -1.0184418330165634, - -0.9962670686572234, - -0.9818263621983558, - -0.9635934598817713, - -0.9419333018989607, - -0.9173818949080126, - -0.9006703169155748, - -0.8812094868400073, - -0.8594623331733491, - -0.8458708893011659, - -0.8302112281963016, - -0.8128669178931752, - -0.7943163018298564, - -0.7833862760301601, - -0.7710769266924514, - -0.7578336831470884, - -0.751744638101343, - -0.7442756103276739, - -0.7357035613024918, - -0.7336016062850852, - -0.7300083873441324, - -0.72521597315653, - -0.7194332520722214, - -0.71881891818207, - -0.7167917849370699, - -0.7136267303459876, - -0.714935708372278, - -0.7148103590868077, - -0.7134406311351055, - -0.7110310522934963, - -0.7119482051548378, - -0.7116275132156469, - -0.7102525711821904, - -0.7114172785407872, - -0.7114126357817245, - -0.7104051089866159, - -0.7112103326390781, - -0.7109156506955858, - -0.7096001097757566, - -0.7075396073470354, - -0.7064192659682021, - -0.7044905868648527, - -0.7019115323757817, - -0.6996124216560002, - -0.6967191813896201, - -0.6934160258679478, - -0.6899173553141239, - -0.6860978022935222, - -0.6820788488641853, - -0.6780064110878272, - -0.6733406204631757, - -0.6690395862064396, - -0.6650875506310889, - -0.6602915874478698, - -0.65627714021052, - -0.6529425638520628, - -0.6504472468257471, - -0.646833115552201, - -0.6443403813247757, - -0.6426864639503437, - -0.6397245919504436, - -0.6381915533043484, - -0.637528646134511, - -0.6373773094228485, - -0.6357906814203452, - -0.6349705387502166, - -0.634630775694829, - -0.6322166241500761, - -0.6308396330973732, - -0.6298436484161366, - -0.6256946287337668, - -0.6227365627923956, - -0.6203016805201349, - -0.6182045884916746, - -0.6134668319595478, - -0.6095924963257453, - -0.6063234100900065, - -0.6001201255030907, - -0.594864552164754, - -0.5903283520455529, - -0.5864033630777712, - -0.5797653161245273, - -0.5740351915486718, - -0.5691264717613215, - -0.5615951084916413, - -0.5551771815433251, - -0.5497998344063142, - -0.5420644100848523, - -0.5356167802565234, - -0.5303514391842266, - -0.40330972709331386, - -0.39798002315156644, - -0.3941564084164083, - -0.39173331918920384, - -0.38733397231266864, - -0.3844864772553607, - -0.38320284305506414, - -0.38339428429868777, - -0.38210586176289285, - -0.3824154114663841, - -0.3842206022242446, - -0.38488919807430083, - -0.38702992373629963, - -0.3905169008408157, - -0.3929039691066998, - -0.39656546060725645, - -0.4013144107291611, - -0.4070484369213468, - -0.4118850036278673, - -0.41705236560701553, - -0.4271740778189852, - -0.4328761200746989, - -0.43935639547088623, - -0.4465243978528391, - -0.45336663971987784, - -0.46059156989160854, - -0.4682338607293395, - -0.4759307485321846, - -0.483693338194213, - -0.49157167653113837, - -0.4996758472593593, - -0.5075468085270096, - -0.5152323156103321, - -0.5226011880950471, - -0.5300789813928068, - -0.5371405668731344, - -0.5435445169056414, - -0.5503182569518651, - -0.5562307338220249, - -0.5614826177443297, - -0.5659617679091984, - -0.5709508852792553, - -0.5750754806948555, - -0.5784620692990015, - -0.5825789407684657, - -0.5858929729985095, - -0.5885659411239099, - -0.5925898998899519, - -0.5959294677129898, - -0.5987577632314993, - -0.6011006152470878, - -0.6049193252993802, - -0.608036320887296, - -0.6104253259452243, - -0.6144190431339273, - -0.6178231302487989, - -0.6204134805477494, - -0.6220683639537591, - -0.6247959627003994, - -0.6265784032247472, - -0.627460101980088, - -0.6293831462512524, - -0.6304072680456068, - -0.6306131491253821, - -0.6318752269111324, - -0.6322163367896321, - -0.6316516932594503, - -0.6305155618142513, - -0.6307076055965275, - -0.6305326679975953, - -0.6300590740474138, - -0.631109745090165, - -0.6315170636951694, - -0.6315554903127847, - -0.6313651974035669, - -0.6326960112091431, - -0.6335048312167559, - -0.6340567225987086, - -0.6363137811367653, - -0.6379261341620045, - -0.639035743687449, - -0.6421516910151152, - -0.6443059603323973, - -0.6460196101127991, - -0.6473869565490866, - -0.6502564771852041, - -0.652606985701252, - -0.6543686839178949, - -0.6579646382764396, - -0.6609511016771801, - -0.6633898409089245, - -0.6654354951953463, - -0.6691620279136691, - -0.6723270781733411, - -0.6750581634270498, - -0.6796250104423015, - -0.6836506353772774, - -0.6871621073202944, - -0.6924607888238149, - -0.6970916973678981, - -0.5814787186643907, - -0.5848575208135528, - -0.5897344700376167, - -0.5940210696756612, - -0.5976601131235914, - -0.6025526875911087, - -0.6066998186299564, - -0.6101329818839858, - -0.6128375006567852, - -0.6164235552235112, - -0.6192165889770181, - -0.6212036193161847, - -0.6236217011038264, - -0.6252612014173509, - -0.6260789747283196, - -0.6267816685301533, - -0.6267905440284722, - -0.6260958088999896, - -0.6246981849708653, - -0.6230043909847134, - -0.620785858829119, - -0.6179392444995038, - -0.6143247527621031, - -0.6106153285005903, - -0.6065396503236536, - -0.6021181217027902, - -0.596968764453636, - -0.5920083624340716, - -0.586984625215546, - -0.5803785032283584, - -0.5743463374474025, - -0.5686707845974435, - -0.5601921421871368, - -0.5526724331186094, - -0.5456524976629957, - -0.5389882690680775, - -0.5296889090098714, - -0.5211446127957607, - -0.5133222008492674, - -0.5023447287454925, - -0.49262326839999143, - -0.484134497119108, - -0.47673486662853554, - -0.46629937354454465, - -0.45753590068531513, - -0.4503799055543697, - -0.43962501785764335, - -0.4311476195016267, - -0.4245931666734226, - -0.41345679582853656, - -0.40515536223250165, - -0.3983642477488487, - -0.3930162956556552, - -0.3833937435040161, - -0.3762123398379683, - -0.37092811299539474, - -0.36015257260286637, - -0.3514544327894148, - -0.34419543006653963, - -0.33825266574573754, - -0.326749622398959, - -0.3172361957240937, - -0.30952028957372485, - -0.2957320068043282, - -0.2844497663089393, - -0.27557385590032335, - -0.2603146429066091, - -0.24818390929748255, - -0.23908944016009676, - -0.2328853191479995, - -0.22090148244116464, - -0.21246350942602213, - -0.20714849464790874, - -0.1952877420666176, - -0.18727217255837064, - -0.18260653032216567, - -0.18071948877366506, - -0.1726027686412422, - -0.16763445876349625, - -0.16548534976904672, - -0.15652752532594671, - -0.15091970795798665, - -0.14836832871289457, - -0.13858692533273176, - -0.13235472732296344, - -0.1293348178183003, - -0.12929061596319452, - -0.12269783917096555, - -0.11957727272059337, - -0.11966431552048717, - -0.12129342964912959, - -0.12505128156807327, - -0.12271238754571917, - -0.12387221431570955, - -0.12828085076484735, - -0.12653017851762716, - -0.12827417591537416, - -0.1332562252995626, - -0.1320152967995991, - -0.1342207749850291, - -0.045816323453247265, - -0.05419971728380968, - -0.05660863479128986, - -0.062174195751964145, - -0.07066261082017822, - -0.07305484197108564, - -0.07847571745439524, - -0.08669633161549783, - -0.09745743921640398, - -0.10222835362431981, - -0.10966773952672088, - -0.11951777677482484, - -0.12302933659102061, - -0.12909622258663905, - -0.13742339714798557, - -0.13923016562133356, - -0.14367005752639372, - -0.15052716988179138, - -0.15956483374635833, - -0.16260981152513654, - -0.1681112667900459, - -0.17583580897731255, - -0.17745949551468598, - -0.18162783936222776, - -0.18804937601328958, - -0.19647949430758554, - -0.1992892385715901, - -0.20419387419356483, - -0.21097973838266343, - -0.21189782275801866, - -0.21493156608112807, - -0.21982048006038024, - -0.2186299079362195, - -0.21893125922319512, - -0.2199906729673608, - -0.22177585123006588, - -0.21690629629994224, - -0.2129536525839486, - -0.20990411715947088, - -0.200355224714437, - -0.19227086717119785, - -0.18563058628719975, - -0.18042109941678347, - -0.16992171783482185, - -0.1613632577719109, - -0.15473567948182942, - -0.14365620743904217, - -0.13490804217250452, - -0.128467741058454, - -0.11851603184769566, - -0.11122370477463611, - -0.1065102666819066, - -0.10423922940102626, - -0.09966134731831311, - -0.09778867637496735, - -0.09846263457731713, - -0.09756314789153359, - -0.09936149328884547, - -0.10369039685932557, - -0.11038200261196257, - -0.11594891259095252, - -0.12372747157154118, - -0.1335008911870234, - -0.142323589429263, - -0.15292847429321738, - -0.1651069742733005, - -0.17661113118397342, - -0.1894529170897702, - -0.2034860735425833, - -0.21846039605342243, - -0.23309205792172544, - -0.24827577801358003, - -0.2637865167914134, - -0.27891977582037913, - -0.2939582856165644, - -0.3087564378242182, - -0.32313699599477363, - -0.3379810290605787, - -0.35200981346918614, - -0.36497894769789857, - -0.3790721238447402, - -0.3904976598558777, - -0.39979214439381017, - -0.41267918916386326, - -0.4235249269215733, - -0.43162280746751447, - -0.4378024803296581, - -0.4479703197288074, - -0.4565623920203654, - -0.46399562476691203, - -0.481655079506248, - -0.49751689829238227, - -0.5116142940689306, - -0.5239052490880285, - -0.5485106852182359, - -0.5706857644539651, - -0.5900647865508684, - -0.620807934232811, - -0.6483087214147516, - -0.6722994333290415, - -0.6349431090182776, - -0.6654438244386036, - -0.6917262332946486, - -0.7134336096058473, - -0.7458888964085171, - -0.7734636608821744, - -0.7954473916474, - -0.8291423652415769, - -0.8569001668348343, - -0.8780955500755409, - -0.8918835748714411, - -0.9272874345442639, - -0.9618435826299768, - -1.0025718072384873, - -1.0084449878380926, - -1.0071107543681568, - -1.0177369665113258, - -1.021048204623856, - -1.0171933669854318, - -1.025464258535095, - -1.0265142387837363, - -1.021056182471964, - -1.0096449766205535, - -1.0103570078968147, - -1.005057064495042, - -0.9938209436566439, - -0.9949538258294205, - -0.9900690583830399, - -0.9794015990365783, - -0.9810142595098548, - -0.9768125279546713, - -0.96734377667884, - -0.9528378573558155, - -0.9511113218236391, - -0.9440771208388734, - -0.9318680823733421, - -0.9321382981421592, - -0.9270688121535453, - -0.9168159035105492, - -0.9016293506921215, - -0.8980570825442313, - -0.8892565476122101, - -0.8754521090984286, - -0.8728984379146203, - -0.8651445352653084, - -0.852653856730609, - -0.8509070106542374, - -0.8442417083133146, - -0.8329424432918225, - -0.8173688012905034, - -0.8112961054212622, - -0.8008451681611095, - -0.7862990705247197, - -0.7804205030274662, - -0.7704000838534174, - -0.7566042842410794, - -0.7393729320453368, - -0.7297733442299069, - -0.7167237262110482, - -0.7005959226879346, - -0.6914471465754433, - -0.6792277591123058, - -0.6642669783364419, - -0.6554442470690345, - -0.6439424589772307, - -0.630219073494372, - -0.6145034746230331, - -0.6036823484672782, - -0.5908554388747713, - -0.5763349130826622, - -0.5655179723793526, - -0.5532369073255927, - -0.5395720100342893, - -0.5247959814478249, - -0.5121771337820227, - -0.4987230617984508, - -0.4845122017907991, - -0.4709492993786082, - -0.4570837531753217, - -0.44289011066125106, - -0.428121695780651, - -0.4137060353007064, - -0.39974000453795466, - -0.3862672989637258, - -0.37103875260870045, - -0.35689244684027843, - -0.34355511861825616, - -0.3269349556763724, - -0.31152644027142873, - -0.29744042145151184, - -0.2846999532459949, - -0.26844714712446227, - -0.25432428142169067, - -0.24253098653135116, - -0.2272223597192795, - -0.21774975265656832, - -0.21100677272405594, - -0.1980317332104682, - -0.18768338635932846, - -0.1793702704525756, - -0.11918022722016747, - -0.10544673648031844, - -0.09376916860821582, - -0.08392800746270734, - -0.06595631399094143, - -0.050656003505978875, - -0.03798356412544596, - -0.027802971997571535, - -0.009912999123531663, - 0.00412568187275808, - 0.014149238537996767, - 0.03172775805692063, - 0.044973582875998785, - 0.05490706869034562, - 0.07428188932840152, - 0.08992879962688127, - 0.10209733426836881, - 0.11101192839156582, - 0.12909089941267876, - 0.14334363577310794, - 0.15389733303744024, - 0.17379011264977762, - 0.18938980089850094, - 0.2008348392879295, - 0.20835314110162434, - 0.22431987183110597, - 0.23580701604380788, - 0.24290003757996426, - 0.25834542771645475, - 0.26886734494529246, - 0.27445352253690314, - 0.2876147693284202, - 0.2952533112070318, - 0.2975344625761988, - 0.29477840241505265, - 0.29874487567287156, - 0.2974365018687835, - 0.29130169422210045, - 0.29159738174088007, - 0.28683594632525405, - 0.2774472736482916, - 0.2636171372712338, - 0.2555688879141123, - 0.2430622725754117, - 0.2263545676304708, - 0.21539650127906035, - 0.2003716722265731, - 0.15045823518083484, - 0.13065859987926948, - 0.10803913496866757, - 0.09089342053702909, - 0.07094167557382391, - 0.04862097562267287, - 0.031799418274357505, - 0.012487324963448565, - -0.008892847888804956, - -0.031852411360770994, - -0.049601608834150934, - -0.06895332760779699, - -0.0896502537470305, - -0.10521367925788022, - -0.12201031795815673, - -0.13969037649057753, - -0.15212718451190313, - -0.16545973572803596, - -0.17949072988328713, - -0.1938791215300607, - -0.20367459341353583, - -0.21398559141309653, - -0.2247258095301564, - -0.23137268625266688, - -0.23859948391784322, - -0.24621537491604947, - -0.2540428082558889, - -0.2584721247787931, - -0.2633613255668602, - -0.26854536202951507, - -0.2708804097412396, - -0.2737590986256405, - -0.27705976176993935, - -0.2778816016075522, - -0.27937994176949, - -0.28143780392893764, - -0.2839183530368344, - -0.28438642898526273, - -0.28524373311049833, - -0.28611708716695605, - -0.2847247715534281, - -0.2833335963474845, - -0.2819311112066192, - -0.28051965123169875, - -0.2772492896400654, - -0.27421383463278903, - -0.2713956054485368, - -0.26706302674926063, - -0.2631598899624679, - -0.25966773926630904, - -0.2547877615514653, - -0.2504502932275642, - -0.24661664995718457, - -0.20209852430176073, - -0.19774545427768675, - -0.1940210804009914, - -0.1909060020378975, - -0.18698790564909798, - -0.1837850511237896, - -0.18128028308683267, - -0.17944384301191757, - -0.1769573599808769, - -0.1752768907673295, - -0.1743775053194516, - -0.17295847824840566, - -0.1722734363667859, - -0.17225549500197226, - -0.1716111484514301, - -0.17157566565724425, - -0.17211341763254448, - -0.17318142696352104, - -0.1737111442004506, - -0.17476346054690717, - -0.17627608927637778, - -0.17724523193700523, - -0.17867957293118486, - -0.18047379761813748, - -0.18257956973060574, - -0.18426209616687922, - -0.18628387259053678, - -0.18860734728534648, - -0.1906744968839014, - -0.19310598873422563, - -0.19584667726041396, - -0.19842868727780405, - -0.201310680768117, - -0.2044237068471521, - -0.207713849961222, - -0.21102544467556428, - -0.21450435809851148, - -0.2180865761652774, - -0.2217107184891396, - -0.22532633939898114, - -0.22880356492571655, - -0.23210281441664404, - -0.2356627656495492, - -0.23895159524057827, - -0.2420469217364764, - -0.2455438430898122, - -0.24864159050588147, - -0.2513602596382289, - -0.2548549529099674, - -0.25759702662528694, - -0.2597775208865321, - -0.2615519500357013, - -0.263781366811749, - -0.26527292089283816, - -0.2663980208012847, - -0.26876520023466743, - -0.26992274892265933, - -0.2707636399335197, - -0.2714160146936626, - -0.2728262032039287, - -0.2737376582658224, - -0.27448172681614225, - -0.2771565030629577, - -0.27904745174702716, - -0.2804415384970744, - -0.28461479279758944, - -0.2878622717660494, - -0.2904191879490232, - -0.29251190830859447, - -0.297245618640234, - -0.3011752415827981, - -0.30421128107000467, - -0.30958114468766074, - -0.3136474614345648, - -0.3166282715159693, - -0.318667365844494, - -0.32281390867543136, - -0.3258200703518761, - -0.32778785490944523, - -0.33164633306627517, - -0.33444494143104064, - -0.3361520942847142, - -0.3396249999117696, - -0.34212344368748776, - -0.3437531095410781, - -0.3444733488601517, - -0.34692653841647203, - -0.3484726299367919, - -0.3490555863052752, - -0.35122403882521985, - -0.3523972788143902, - -0.3525849575112427, - -0.3518923016180521, - -0.3528940605984998, - -0.3530205261394129, - -0.35230219234393545, - -0.35321353015157325, - -0.35319295362679437, - -0.35225834194392014, - -0.3530011926630805, - -0.321058481181311, - -0.31983875394381156, - -0.31771903140717844, - -0.3172125541419172, - -0.3157282426639866, - -0.3138331243977258, - -0.31426721094801663, - -0.31421485864043186, - -0.31371168549388817, - -0.3127206977574871, - -0.31380810556048383, - -0.31426271550978335, - -0.3141195334327211, - -0.31597298747282043, - -0.31702824911756755, - -0.31728557067514446, - -0.31939198459390455, - -0.32061535431536947, - -0.32102327969295036, - -0.3205819073756599, - -0.3216293410243021, - -0.3217919732323632, - -0.3211255034801708, - -0.32174380533617547, - -0.3213142312130251, - -0.32004401423307705, - -0.31804601652458464, - -0.31698356928202653, - -0.3151048610674189, - -0.31240419746924547, - -0.3106152206539471, - -0.30811783189285863, - -0.30505654919187786, - -0.30265827029194187, - -0.29960800918416036, - -0.2959549050396392, - -0.29199832416899413, - -0.2885745296243175, - -0.2848060489023541, - -0.2807752246639118, - -0.276913188956439, - -0.2728891204846433, - -0.2688912447181122, - -0.2652260836122214, - -0.2616287509571494, - -0.25834058713742347, - -0.2555134322362106, - -0.25301191817788005, - -0.2506779690577141, - -0.2487193527424343, - -0.24677384854470888, - -0.24505604431383327, - -0.243430781661167, - -0.241992969018113, - -0.23992665713839587, - -0.23818644282285434, - -0.2365558050893728, - -0.23406939206826624, - -0.23163476063911148, - -0.22947235739405025, - -0.22742025596685123, - -0.2243686249742574, - -0.22179333230531706, - -0.2196666405105115, - -0.2161925903830535, - -0.21326694772978072, - -0.21070843713378723, - -0.20624108757624737, - -0.202233560662626, - -0.19867848326882848, - -0.19556813013108587, - -0.19051326506939112, - -0.18598521587371375, - -0.18207574329564674, - -0.17610487427658694, - -0.17093683122747969, - -0.16661877167661465, - -0.16307367732997566, - -0.157586779599964, - -0.1530604256217467, - -0.1494510804669861, - -0.14384698275381583, - -0.13929386906137617, - -0.1357264099218966, - -0.13019956489726758, - -0.12584229501957464, - -0.12265575064746778, - -0.1206404561221947, - -0.11707587032468711, - -0.1148235096552711, - -0.1138647733472804, - -0.11164426022527871, - -0.1108230807140454, - -0.11132483011718905, - -0.11306337197645161, - -0.11391818173080834, - -0.11609231918285709, - -0.1194494581130996, - -0.1221447406300385, - -0.1260063233734962, - -0.1056569186765352, - -0.11021143429084473, - -0.11564913556398146, - -0.12186735961308331, - -0.1285094916893173, - -0.13471889218383057, - -0.14130290257890973, - -0.14833733701031007, - -0.15538778268003964, - -0.16276308158160419, - -0.17033996704470372, - -0.17816496939719556, - -0.18627368091071173, - -0.19434951500539274, - -0.2023848424405586, - -0.21125964243569045, - -0.21966570281983908, - -0.2273378373198511, - -0.23610977013798537, - -0.243746972433926, - -0.25011670705412326, - -0.25538086084023703, - -0.2619633845948874, - -0.2671778604487625, - -0.2711279828674716, - -0.2772588099769521, - -0.28175368062358214, - -0.28469476935047794, - -0.2866054039047707, - -0.2914291285174957, - -0.29504952947006247, - -0.29748962422826297, - -0.3041686740269147, - -0.30930754466641214, - -0.3131943390265586, - -0.3224532577368587, - -0.3301198454241044, - -0.33637507302860603, - -0.3414158040824141, - -0.3512444278674707, - -0.35951317306551955, - -0.3662774382403555, - -0.37803985973790843, - -0.3880162040122265, - -0.3963161689301039, - -0.40295091781769843, - -0.41401263809801886, - -0.42307187777981425, - -0.4302601622555236, - -0.44198462743062605, - -0.4514384908193728, - -0.4587852181083044, - -0.4706200447959493, - -0.479947802974421, - -0.4869454905102263, - -0.4918093419991849, - -0.5008929543688565, - -0.5075478388128003, - -0.5118867755993891, - -0.5205061353116388, - -0.526312581970454, - -0.5292872579048624, - -0.5296780985609593, - -0.5335863234442144, - -0.5341648834967287, - -0.5317811983703098, - -0.5331133003177957, - -0.5312123807642293, - -0.5262628579959309, - -0.5252456967096204, - -0.5208264031394765, - -0.5134261660228527, - -0.503037964139349, - -0.4962638591901679, - -0.4866015636464095, - -0.4744825852231423, - -0.4664132621826724, - -0.45639106707955196, - -0.4443805990797865, - -0.4303504069425357, - -0.41969017538305425, - -0.4070420694459006, - -0.3927229297819441, - -0.38207122837069574, - -0.3698238707728411, - -0.3563649821154937, - -0.3467920014174716 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -47015,1987 +2566,15 @@ }, "name": "vz est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.26180011257930996, - 0.2596193158431103, - 0.25472990844868937, - 0.24722061230155318, - 0.23732758790699177, - 0.23379075611286743, - 0.2277168603862486, - 0.21930396950871006, - 0.21675354131665542, - 0.21178913155987977, - 0.20456236611117307, - 0.2028190109348596, - 0.1987124463326868, - 0.19242513836379987, - 0.1841476561129509, - 0.1807240851907404, - 0.1752259773135597, - 0.16783854714045923, - 0.16492842795956109, - 0.16008686041834413, - 0.15349928572922464, - 0.1453614795451273, - 0.1411902933237667, - 0.13541823145153767, - 0.1282190039419303, - 0.12412662079255217, - 0.11856980895320295, - 0.1117078433282531, - 0.10705957923525194, - 0.10115229314454559, - 0.09415521985091317, - 0.0862682480532841, - 0.07973898158837549, - 0.0723926530286683, - 0.06447222629541566, - 0.0570664307034771, - 0.04911367159858994, - 0.04087464818175822, - 0.03268663135087875, - 0.024629640335757846, - 0.01711441274752358, - 0.01041457770958129, - 0.0033549578656250634, - -0.0024202254453052074, - -0.006765072605298683, - -0.012639719976707917, - -0.016768771142863292, - -0.019631013889848378, - -0.02151401903270364, - -0.02601955196961367, - -0.029629636277987065, - -0.03263410125058465, - -0.03989587401287245, - -0.04620881900935256, - -0.05192655463615263, - -0.0570511844365227, - -0.06697631443337933, - -0.07578762955474899, - -0.08357259149883992, - -0.09705141076171482, - -0.10904499059243379, - -0.11972831428536913, - -0.13710068724358893, - -0.15266587263050269, - -0.1666131692369709, - -0.1789570563088128, - -0.19851260744587765, - -0.2159235541179479, - -0.23119339792025068, - -0.2541380285022575, - -0.27437234241284747, - -0.2917739263586772, - -0.30643055897436494, - -0.3283688739399115, - -0.3469733382319771, - -0.36232937233171403, - -0.38479472797888237, - -0.40356033368700434, - -0.4186254215690049, - -0.4407115419492229, - -0.4587619352812113, - -0.47278445904358174, - -0.4827929444780591, - -0.49948706799419296, - -0.5118847648863994, - -0.5199805903029667, - -0.5348216744735572, - -0.5451536524318208, - -0.5510438273586443, - -0.5525530628378441, - -0.560681628254927, - -0.5642498596378129, - -0.5633625867067993, - -0.5693547301127821, - -0.5708094250282855, - -0.5678364560596783, - -0.5720175866893228, - -0.5717810474770086, - -0.5671173956777253, - -0.558098916056483, - -0.556344162355975, - -0.544877498363636, - -0.5344402906198932, - -0.5310316137716763, - -0.5223512132238536, - -0.5086758563640716, - -0.49004637026307, - -0.47821116566267163, - -0.46158255695919, - -0.44046471375879376, - -0.42654496378913254, - -0.408302483070375, - -0.38613338999684976, - -0.37169474078393877, - -0.35344351405913316, - -0.3317412056382769, - -0.30711725199344014, - -0.2903212476244442, - -0.2707455739789992, - -0.24884525706931737, - -0.2350860426976476, - -0.2192144819903169, - -0.20160960839486664, - -0.1827359647867848, - -0.1714519366516002, - -0.1587132115783193, - -0.14494763852382048, - -0.13829643418114912, - -0.1301705183488624, - -0.12083740152849065, - -0.11793071159852898, - -0.11342669104233016, - -0.1076157735509171, - -0.10069491968095344, - -0.09890833704973925, - -0.09559823925890756, - -0.0910342909347826, - -0.0909527804468372, - -0.08932458443707135, - -0.086348163901782, - -0.08223410427494636, - -0.08149678084371446, - -0.07943323338634062, - -0.07623561461089644, - -0.075671632416725, - -0.07388136402170835, - -0.07104445342852511, - -0.07015881562701418, - -0.06813895361314345, - -0.06508380248947075, - -0.0612774288627487, - -0.05860038421278392, - -0.05511602475118624, - -0.050994310374387494, - -0.047379123849655924, - -0.04318122819513151, - -0.038589388009406395, - -0.03381804402011941, - -0.028948686994391584, - -0.023902846208451067, - -0.018831258792235517, - -0.013359548735261281, - -0.008239801182547205, - -0.003481223545043932, - 0.001956685280493406, - 0.006640394059395621, - 0.010643258585745663, - 0.01380260326575726, - 0.01795799415360047, - 0.020975291750112646, - 0.023105981058613986, - 0.02646324179534186, - 0.028354981215714933, - 0.029333745505358153, - 0.029757383826371123, - 0.03154248719191803, - 0.03250751387467675, - 0.032966471983022064, - 0.03547516381328812, - 0.03686835139024726, - 0.03785805570536503, - 0.04212728186036928, - 0.045147566336958114, - 0.047618845995326495, - 0.04975244840650532, - 0.05468668945664583, - 0.0587073258553185, - 0.062080183935050326, - 0.06858389625703869, - 0.07404000410660731, - 0.0786819890079583, - 0.08262361729326688, - 0.08943387100983015, - 0.09518709506319718, - 0.09997332899792562, - 0.10752769757219786, - 0.11376056055737198, - 0.11875272340794239, - 0.12624760667200485, - 0.13219917007644644, - 0.1367336022743954, - 0.13781859873833163, - 0.1431030658952996, - 0.14685021192995004, - 0.1491694604112932, - 0.15348220037306257, - 0.15621214903976471, - 0.15735177821544885, - 0.15699393271701173, - 0.15813183596150857, - 0.1576461949997789, - 0.15564496208938958, - 0.15480056483530907, - 0.15246400895307624, - 0.1487676554882632, - 0.14619777457007707, - 0.1423405077795144, - 0.1373896350766353, - 0.13145380404499646, - 0.12644079777742853, - 0.12109821768300719, - 0.11068016847150716, - 0.10485550369471339, - 0.09827301344483308, - 0.0910268238785244, - 0.08413312208617035, - 0.07688071646821895, - 0.0692368926750356, - 0.061557759192205685, - 0.05383919173422394, - 0.046031351921177854, - 0.0380070512922098, - 0.030243571417088, - 0.02269196393557575, - 0.01548348819267642, - 0.008169242311730093, - 0.0012962499560180002, - -0.004893723368697173, - -0.011463674679963703, - -0.01714618536940439, - -0.022147416519467875, - -0.02635812719375058, - -0.031091653579809933, - -0.03494169624586481, - -0.03803678410143674, - -0.04188365067611685, - -0.044905529690654644, - -0.04726952330248482, - -0.05101432234473045, - -0.05405113933357898, - -0.05655721061759386, - -0.05856075114500536, - -0.062061568957575225, - -0.06483837667848172, - -0.0668650867537469, - -0.07051410220943066, - -0.07354709037367077, - -0.07574214862214075, - -0.07697897460290062, - -0.07929822559802696, - -0.08064548001496319, - -0.08106808639886609, - -0.08253527777068366, - -0.08307672583342002, - -0.08277605882446605, - -0.0835339280481117, - -0.08335071889345713, - -0.08224496791582186, - -0.08055620379396838, - -0.08020128887452566, - -0.07947765944986211, - -0.07845499178479777, - -0.0789584078761539, - -0.07882440956406542, - -0.07832525765320245, - -0.07759918515713755, - -0.07839599333066118, - -0.07867983669721987, - -0.07871066067884193, - -0.08043903912554722, - -0.08154260209163365, - -0.08215852543777186, - -0.08475850758288059, - -0.08643729994425702, - -0.08769162566628771, - -0.08861343220011836, - -0.0910358013955895, - -0.09296369125664497, - -0.0943344908531263, - -0.09750739403780329, - -0.1001031814240774, - -0.10218358143235502, - -0.10389272246952491, - -0.10727024686886691, - -0.11012779165231719, - -0.11258347807015502, - -0.1168481424306635, - -0.12062535825084397, - -0.1239297254056642, - -0.12898184095553922, - -0.13342591347191357, - -0.13350681345346538, - -0.13681842865322535, - -0.1416188707277804, - -0.14584394455516536, - -0.14943461325466814, - -0.15426629112929185, - -0.15836967527688212, - -0.1617750210976486, - -0.1644649254371317, - -0.16802671188580875, - -0.17081266438475995, - -0.1728078645310771, - -0.175219912167953, - -0.17687188104330553, - -0.17771728726004224, - -0.17842772868494955, - -0.17846487889105705, - -0.17781576198868013, - -0.17647818858350095, - -0.17482781158931168, - -0.17267077425428434, - -0.16989970972810461, - -0.1663387409292604, - -0.16270270710003445, - -0.15871482750005877, - -0.1543916106333615, - -0.14932364965969974, - -0.14446046193177375, - -0.1395426729228585, - -0.1330185865418011, - -0.12708408200209823, - -0.12151514673637534, - -0.11310919971768026, - -0.10567988612879872, - -0.09875716948668985, - -0.09219252835432636, - -0.08296687367540263, - -0.07450286265076188, - -0.06676368085948955, - -0.05584341923558031, - -0.04618852638277948, - -0.03777180096400251, - -0.03044472740367131, - -0.020062612604720184, - -0.01135798577273231, - -0.004262184466676908, - 0.006455039564369866, - 0.014889191038032087, - 0.021402403838594375, - 0.03252346157163008, - 0.04080529315592113, - 0.04757799376068303, - 0.052912698449924994, - 0.06254375632237838, - 0.06973518977877083, - 0.07503071356312405, - 0.08583255577770552, - 0.09455529363231766, - 0.10183959408804921, - 0.10781066384664653, - 0.11935260383578503, - 0.12890735389633637, - 0.1366689889356057, - 0.15051174992827004, - 0.16185239325832973, - 0.17079232958766602, - 0.18612123945385828, - 0.1983277031839045, - 0.20750589327797786, - 0.21380350174133086, - 0.22588528110949074, - 0.23443327750867712, - 0.23987251892389833, - 0.2518623045570008, - 0.26002625107622834, - 0.2648613493485157, - 0.2669405838233959, - 0.2752602456735453, - 0.28045882073036643, - 0.282866028800586, - 0.29209221935810037, - 0.2979979463830118, - 0.3008752415030045, - 0.3109897217356933, - 0.3175825806055572, - 0.3209880277701131, - 0.3214375342120448, - 0.3284386995051081, - 0.3319834085216764, - 0.33233049635491824, - 0.3319301164655213, - 0.32859472071080487, - 0.331336135772786, - 0.3305655307484177, - 0.3265294319377503, - 0.32862736658322805, - 0.32720702811723573, - 0.3225237700748593, - 0.3240352330069704, - 0.32206841923953594, - 0.3182205581860147, - 0.30996032967598053, - 0.3076657390759323, - 0.3022001611656508, - 0.2937976581182734, - 0.29148636612470535, - 0.2861321476575919, - 0.27796493109738407, - 0.2672451128654225, - 0.262514477636756, - 0.2551039148132477, - 0.24527275594278947, - 0.24178407701223698, - 0.23573098571105294, - 0.22741035578219237, - 0.22561889088824116, - 0.22118667450697488, - 0.2143313365289095, - 0.20529127577369222, - 0.20225345413533663, - 0.19675467107098016, - 0.18902979720974855, - 0.18742005384713678, - 0.1832610340420442, - 0.1768457401866264, - 0.16842019443852002, - 0.16562795981348133, - 0.16073614376242368, - 0.1539596808707384, - 0.1530670985763603, - 0.1500537608725684, - 0.14518111935219197, - 0.14640192278848518, - 0.14612420075903354, - 0.14508313054173605, - 0.1433123854132739, - 0.14820673086775465, - 0.15218030327077348, - 0.1552478199667589, - 0.16482952259381334, - 0.1729393641768862, - 0.1795990475014625, - 0.18482310422739173, - 0.19534757517203344, - 0.203923003322373, - 0.21056085430164478, - 0.22166075516785827, - 0.23042017085385202, - 0.236864309117378, - 0.2468299056505195, - 0.25412672136343106, - 0.25883747812980334, - 0.2611011083475495, - 0.2656791292514365, - 0.26754623025073715, - 0.26686167511654924, - 0.26775635989744373, - 0.26594894571360156, - 0.26160844070417416, - 0.2549051156104217, - 0.24933296131202887, - 0.24154971733237118, - 0.23177406995130811, - 0.2229575803896754, - 0.21236152025096677, - 0.20019566793211263, - 0.1887121478716936, - 0.17589403774360934, - 0.16188811361755406, - 0.14694554402370358, - 0.1323517893005272, - 0.11720972476170832, - 0.10174465596558371, - 0.08666231067297808, - 0.07167698669100875, - 0.056934145584461804, - 0.04261102334380987, - 0.027826423691945407, - 0.013857397468297367, - 0.0009483797093576135, - -0.013084625512762002, - -0.024450879123580085, - -0.03368693919718667, - -0.04651617640518138, - -0.057306411787943115, - -0.06535241272780397, - -0.07147968316595041, - -0.08159465575660635, - -0.09013416251548838, - -0.0975147133376974, - -0.1151276893661436, - -0.13094010883373253, - -0.14498448967533695, - -0.15721794944785208, - -0.18176584643479168, - -0.2038760794397761, - -0.223180820326692, - -0.2538420654479007, - -0.28124792304255, - -0.3051272041157535, - -0.33467312536795313, - -0.36506926254502775, - -0.39123545192165443, - -0.4128123318102121, - -0.4451246382108238, - -0.4725382729335565, - -0.4943396477640125, - -0.5278352817999554, - -0.5553692764753575, - -0.5763125509759048, - -0.5898176050783666, - -0.6241776138337782, - -0.6579359455541172, - -0.6973343323329066, - -0.7027245803741133, - -0.7008932709820108, - -0.7110373260046443, - -0.7138575186515934, - -0.7095066343040544, - -0.7173098985127011, - -0.7178914012726294, - -0.7119725508042669, - -0.7001131470771161, - -0.7004101488127046, - -0.6947113722146547, - -0.6830951186347352, - -0.6838872488012935, - -0.678682820700184, - -0.6677206015364867, - -0.6690779583642512, - -0.6646473570070301, - -0.6549735168466848, - -0.6402868047020629, - -0.638417275546509, - -0.6312674371130366, - -0.6189694101954331, - -0.6191872770708622, - -0.6140940573129092, - -0.6038464011532406, - -0.588692105713426, - -0.5851816798892528, - -0.5764680377268354, - -0.5627730831883406, - -0.5603458324516436, - -0.5527366314115252, - -0.5404053572956444, - -0.5388214430723764, - -0.5323306018497361, - -0.521215023910583, - -0.5058310912009235, - -0.49994354814782516, - -0.48968341785900416, - -0.47533006875892964, - -0.46962977025152225, - -0.459790448175276, - -0.4461763253213812, - -0.42912214835267387, - -0.4196842688204638, - -0.40679465936546405, - -0.39082370806258626, - -0.3818138989121622, - -0.369732740479441, - -0.3549073914801073, - -0.3461987203060237, - -0.33481197909547755, - -0.3212013068904526, - -0.30559490798248523, - -0.2948633800720465, - -0.28212671161897956, - -0.26769497833953265, - -0.2569483490594718, - -0.24474050174052941, - -0.23114902425417927, - -0.2164441443505673, - -0.20387884092952213, - -0.19048024808878256, - -0.1763252421567234, - -0.1628022572853891, - -0.14897965743186586, - -0.13482822155541577, - -0.12008856297072094, - -0.10570472798548489, - -0.09176995775214787, - -0.07832484748056265, - -0.06311339282769822, - -0.04898123947607101, - -0.03564990934944354, - -0.019021671956172936, - -0.003597609937587426, - 0.010512682333316259, - 0.023287959510460685, - 0.039585129032427446, - 0.05376046962568409, - 0.06561557576577284, - 0.08099626394653509, - 0.09055570101988025, - 0.09738936387012986, - 0.1104588986624491, - 0.12090596853776597, - 0.12932447816084996, - 0.1382564068224038, - 0.15209087398789645, - 0.1638736213217355, - 0.1738247260808236, - 0.1919092917700146, - 0.2073276054847687, - 0.22012319095447247, - 0.23043221324123186, - 0.2484527416051696, - 0.262627425586925, - 0.27279270943945916, - 0.2905149645340864, - 0.3039094977837365, - 0.31399574712675704, - 0.33352296967964395, - 0.3493259301674885, - 0.3616538778582878, - 0.3707308474717042, - 0.38897127334031967, - 0.40338807496870915, - 0.4141079594335036, - 0.4341653154327401, - 0.44993073547500806, - 0.461541892696875, - 0.4692261078524658, - 0.48535535942745706, - 0.49700228913064737, - 0.5042510656439783, - 0.5198462839399836, - 0.5305110514559728, - 0.5362315658605157, - 0.5495198060803779, - 0.5572738603091814, - 0.5596577286378153, - 0.5569908578261775, - 0.5610370517724235, - 0.5597924207949425, - 0.5537055360597642, - 0.5540406930548618, - 0.5493019253279892, - 0.5399200070387855, - 0.5260820931939654, - 0.5180193288839949, - 0.5054831447060619, - 0.48873366902054943, - 0.47773088578978445, - 0.46264972244873886, - 0.41250597412662193, - 0.39263115708702123, - 0.3699339925782471, - 0.35271639177369035, - 0.3326918037916226, - 0.31030008714910823, - 0.29341624884369805, - 0.2740458273817886, - 0.2526139323309075, - 0.22961074941815957, - 0.21182989925872808, - 0.19245616947723876, - 0.17174809579559108, - 0.1561874744727459, - 0.13940493013066543, - 0.12175115388655039, - 0.1093533460333678, - 0.0960716978184078, - 0.08210349367999192, - 0.06778979085342007, - 0.058079269721987625, - 0.04786386861367814, - 0.0372290688779007, - 0.03069517525760901, - 0.023589742314035128, - 0.01610298964623888, - 0.008411647062976563, - 0.004122633992167654, - -0.0006205838874054764, - -0.0056538217919652745, - -0.007837295495984692, - -0.01056064876525957, - -0.013703110695216139, - -0.01436799304247953, - -0.015707611401153634, - -0.01760584347309113, - -0.01992673828927212, - -0.020238361708438138, - -0.02093985444603265, - -0.02165882595148766, - -0.0201171800692517, - -0.01857835043784102, - -0.017030573725285644, - -0.015476901627398898, - -0.012069774191006258, - -0.008900794241222393, - -0.005952772748332336, - -0.0014963246609189657, - 0.0025268558359677756, - 0.006134871079637297, - 0.011124873250171807, - 0.015568391330675821, - 0.019503957942190495, - 0.02559794122402019, - 0.030050853046288822, - 0.033872463026843214, - 0.037082120420151965, - 0.04109234737802925, - 0.04438473068674187, - 0.04697640801776096, - 0.048897207132453935, - 0.05146606525347164, - 0.05322651666560385, - 0.05420368090675068, - 0.055699019435997144, - 0.05645843687777127, - 0.056549039677721735, - 0.05726524819271234, - 0.05737113180947273, - 0.056902704097286705, - 0.05590342256662034, - 0.05544277721894192, - 0.0544592354664333, - 0.0530153665040779, - 0.05211587873290979, - 0.0507514553836467, - 0.04902778342601083, - 0.04699335013074096, - 0.04538354217559237, - 0.04343517719040496, - 0.04118592412351235, - 0.03919458552303695, - 0.03683933988750207, - 0.03417545877894512, - 0.03167227405930184, - 0.028869314800307633, - 0.02583570171185691, - 0.02262547816610197, - 0.0193956825759663, - 0.015998774666436774, - 0.012499085143093835, - 0.008959765255573626, - 0.005428643942058858, - 0.002036137530748522, - -0.0011780094620313375, - -0.004650510919614367, - -0.007852400245803082, - -0.010861516455727652, - -0.01426930368394666, - -0.017279555694407103, - -0.01991144917274512, - -0.02331534639349303, - -0.02596919619741067, - -0.028062576605332082, - -0.029750189266743762, - -0.03188999521552843, - -0.03329396113614773, - -0.03433209193567319, - -0.0366080147542787, - -0.0376779661305654, - -0.038431822404190755, - -0.038997176166018, - -0.040320207720828505, - -0.04114528051153413, - -0.041803077023519625, - -0.04438802828755159, - -0.04619204404495161, - -0.047500523110698176, - -0.05158189749699403, - -0.054741842675969474, - -0.05721413517918378, - -0.05922441938946961, - -0.06387154319070447, - -0.067718493179491, - -0.07067518425304702, - -0.07596012561952808, - -0.07994628314585112, - -0.08285120650962846, - -0.08481817837514127, - -0.08889003943360141, - -0.09182639859447694, - -0.0937282759431077, - -0.09751685961025447, - -0.10025073422772547, - -0.10189692144345282, - -0.10530359616476942, - -0.10774101786940117, - -0.1093131717531681, - -0.10997784377671993, - -0.11237091015041716, - -0.11385967552250743, - -0.11438639859812269, - -0.11649280274414923, - -0.11760553842907542, - -0.1177327433852889, - -0.11697818634492385, - -0.11791158402131079, - -0.11796777864970989, - -0.11717636232794043, - -0.11800789465022664, - -0.11790519510124248, - -0.11688498241886004, - -0.11753576787393498, - -0.1145541400785745, - -0.11323229109833383, - -0.11100789747728503, - -0.11039315425064283, - -0.10879799247113678, - -0.10678907438246539, - -0.10710645128226458, - -0.10693442412598157, - -0.10630830253033936, - -0.1051908925841376, - -0.10614940357768521, - -0.10647126792052057, - -0.10619130266165439, - -0.10790614379607721, - -0.10881839404832133, - -0.10892810965834497, - -0.1108854329083718, - -0.11195457418772829, - -0.11220322473913921, - -0.1115977260451039, - -0.11247898532340418, - -0.1124697153382006, - -0.11162571294173272, - -0.11206447696864201, - -0.11144986267020603, - -0.10998887801463718, - -0.10779462202403746, - -0.10653286723329573, - -0.10445010837545078, - -0.10154162372125994, - -0.09954164374372923, - -0.09682991427138535, - -0.0935517467471131, - -0.0909323665661262, - -0.08766084473183446, - -0.08378757855694173, - -0.07961113180211424, - -0.07596320126606393, - -0.07197411049758211, - -0.06772654888222908, - -0.06364298463070057, - -0.05940534233880278, - -0.05520123908013479, - -0.0513365715774569, - -0.04753735554473805, - -0.04405798509150456, - -0.0410492617335753, - -0.03835881305979734, - -0.03585123185623419, - -0.03373138647491716, - -0.03160984735896516, - -0.029737124589970798, - -0.02796984023260933, - -0.0264015317562422, - -0.024192579085005578, - -0.0223294053306769, - -0.020587296557035326, - -0.017967362650831015, - -0.015420835271298172, - -0.013162350678380008, - -0.01102585916374356, - -0.0078801322509411, - -0.005231668339496134, - -0.0030468606998307612, - 0.000502043406958072, - 0.0034795938480112476, - 0.0060752026808890275, - 0.010608003837129884, - 0.014658168489380882, - 0.018238866357241562, - 0.021361902850651898, - 0.026448693477021362, - 0.03098688100042052, - 0.03489083203798976, - 0.040879443616598204, - 0.046042889753980465, - 0.050339532410839494, - 0.05385087298384317, - 0.059320322486503485, - 0.06381097527755358, - 0.06737102148963761, - 0.07294430719128239, - 0.07744883097987332, - 0.08095524606480042, - 0.08644204613498133, - 0.09074372001974945, - 0.0938645913777148, - 0.09580916452722568, - 0.09932088344158108, - 0.10151534831677711, - 0.10241664600748804, - 0.10460063249532942, - 0.1053872071334575, - 0.10485777460959297, - 0.1031025378520671, - 0.10225291266407244, - 0.10009623570013065, - 0.0967725393244998, - 0.09413375923198974, - 0.09034579780317187, - 0.08771648903898599, - 0.08326952283454858, - 0.07795041539761766, - 0.07186245358683074, - 0.06536264574781575, - 0.05930797042091829, - 0.05288993115294463, - 0.04603191792294192, - 0.03916769452239205, - 0.031987418708518484, - 0.02461321762096623, - 0.016997990921119643, - 0.009104469135910412, - 0.001249060916524547, - -0.00656136962410854, - -0.015208667273062942, - -0.023389226193194917, - -0.030837904485066542, - -0.03938377199571169, - -0.046799511615800524, - -0.052953354560400887, - -0.05800709386467509, - -0.06437896118422543, - -0.06939130880118954, - -0.07314713927621348, - -0.07907986428047416, - -0.08338598841151458, - -0.08614689022868433, - -0.0878827366967204, - -0.09252987921061041, - -0.09598266614882874, - -0.09826573309678034, - -0.1047793427663902, - -0.1097648748131508, - -0.1135074188907825, - -0.12261188099486169, - -0.13013860049774856, - -0.13626711147539594, - -0.1411927424295375, - -0.15090110420674158, - -0.15906187761047186, - -0.16572948826932538, - -0.17738398850930331, - -0.18726402109129284, - -0.19547813230364305, - -0.20203716080797346, - -0.21301341841672278, - -0.22200010493538816, - -0.22912611328170643, - -0.240778002347179, - -0.25017211513701365, - -0.25746907669185193, - -0.26924197640521846, - -0.2785198233756799, - -0.2854775164369986, - -0.2903080252707232, - -0.2993452381252911, - -0.30596463045370526, - -0.31027767314374005, - -0.31885755187159104, - -0.32463599156533945, - -0.3275922476240678, - -0.3279725467201622, - -0.3318572776300306, - -0.33242219094205633, - -0.33003216436119687, - -0.331345608059183, - -0.3294330879695777, - -0.32447495644705615, - -0.32343224095222783, - -0.31898961630743694, - -0.3115631951367857, - -0.3011443435592769, - -0.2943245712338274, - -0.2846134014986311, - -0.2724408042761107, - -0.2643066856675893, - -0.2542157604368198, - -0.24213069688497035, - -0.2280186339556064, - -0.21727038082686995, - -0.20453022966363796, - -0.19011597583825385, - -0.17937071875786634, - -0.16702900668881432, - -0.1534752078081687, - -0.14381310727013957 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -49006,1988 +2585,15 @@ }, "name": "vz true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.2680500214795103, - 0.26180011257930996, - 0.25362734380714197, - 0.25025742258185724, - 0.24627772196458142, - 0.23966221379857497, - 0.234748307936417, - 0.23231106494024759, - 0.22727202141938924, - 0.22109433886366345, - 0.21888847357474964, - 0.215018274615002, - 0.20885535917363154, - 0.20538412637421766, - 0.2023273851847539, - 0.19694789289460513, - 0.19142862006339892, - 0.18864973008036096, - 0.18384384957963038, - 0.1773800546703262, - 0.17366388112907366, - 0.16921565526788074, - 0.16282990934340283, - 0.15725897933538643, - 0.1530827926790696, - 0.14710765015639474, - 0.14017496560808573, - 0.13511028903528552, - 0.1288293016728944, - 0.1210653650949629, - 0.11412320063498282, - 0.10700470830074989, - 0.09861090829517008, - 0.0898109263179418, - 0.08156714766159542, - 0.07246894227078494, - 0.06271799967513929, - 0.053129101493566325, - 0.043176935684536094, - 0.03289581382260577, - 0.022588515560317678, - 0.012587807854384452, - 0.003190762165152017, - -0.0055713977193901365, - -0.01422769467251623, - -0.021557405209761713, - -0.027421654108563013, - -0.03337318152851675, - -0.03849635419015918, - -0.042258957463897934, - -0.045909195382385325, - -0.050854493787800256, - -0.054877360905383685, - -0.058455740515129556, - -0.06473584311892928, - -0.0710585617810422, - -0.07666224419892145, - -0.08409408363325653, - -0.09355361416827893, - -0.10184340868106793, - -0.1100689281762719, - -0.12202295751269032, - -0.13312545167099632, - -0.14293370096450222, - -0.15615719245984913, - -0.1704049428296437, - -0.18297485255060272, - -0.19632580821359336, - -0.21377162081570883, - -0.22934627772045324, - -0.24336662736245518, - -0.26203887218352, - -0.2800735292794691, - -0.295399538209771, - -0.31251023703467934, - -0.33210932235379664, - -0.34856995036488936, - -0.3634514341061416, - -0.38267768816294695, - -0.3994294098564814, - -0.4127853590712709, - -0.4291673644269791, - -0.4455284382583468, - -0.4580765413333885, - -0.46980878721568325, - -0.48494517630916595, - -0.49633011873901045, - -0.5043122666796764, - -0.5161499104562666, - -0.5260102599200861, - -0.5316345101844969, - -0.5380477303765003, - -0.5462259902398393, - -0.5500413874787788, - -0.551289583701054, - -0.5567260191911646, - -0.5589285769381357, - -0.5569865336441173, - -0.5580616843220509, - -0.5589405008590242, - -0.5555001258737358, - -0.5511010399881097, - -0.5504668162563294, - -0.5458748000374303, - -0.5376378530425812, - -0.5332997293787796, - -0.5263120966012009, - -0.5143269052529579, - -0.5028148711993312, - -0.49291970198917046, - -0.47823831614850476, - -0.46082781975395704, - -0.4478191733530904, - -0.43164707522413626, - -0.411610946492506, - -0.3950671962960929, - -0.37880855261221363, - -0.35899011675628717, - -0.33911958838823986, - -0.3237200761366475, - -0.30569992448412064, - -0.2857833062801485, - -0.27116720348794415, - -0.2564317684407554, - -0.23975744674809768, - -0.22573983293681604, - -0.21512110380271937, - -0.20278847062295413, - -0.1904065998368734, - -0.1830060123687236, - -0.17476010961047267, - -0.16512173557567733, - -0.15897505712486704, - -0.15391056500218417, - -0.14728674929404192, - -0.14120420163295755, - -0.13824565929224109, - -0.13378978958449744, - -0.1282598267863378, - -0.12565765320957278, - -0.12264372411232025, - -0.11812295632284753, - -0.11453785504584259, - -0.11226415130224074, - -0.10854664404281607, - -0.10418393466432022, - -0.10161854643922101, - -0.0981495462846127, - -0.09357954280060629, - -0.08996457815428667, - -0.08632366252909637, - -0.08162463079039373, - -0.07674532402815974, - -0.07258417770888564, - -0.06764934207008313, - -0.06213161881809641, - -0.057032782191875644, - -0.051649437206206614, - -0.04588200823295391, - -0.04010308585385747, - -0.0343271686418145, - -0.028389371724266494, - -0.022390229385652896, - -0.016386635891571133, - -0.01065977640446037, - -0.005311535454119665, - 8.973276996176657e-05, - 0.005178985579533498, - 0.009583165611479608, - 0.013660431343701538, - 0.017950362791523334, - 0.02125393727327444, - 0.02383486883452378, - 0.026872009875508075, - 0.029019285015027305, - 0.030269621856725888, - 0.03204059615021491, - 0.034066124028062916, - 0.03522351434964104, - 0.03633332254500756, - 0.038623729954641875, - 0.040122221408548556, - 0.04122597598996688, - 0.04397759136093239, - 0.04699225278502627, - 0.049484578206749286, - 0.0526427003354569, - 0.05749642908346847, - 0.061597259081562855, - 0.06531522337834812, - 0.07111910851649006, - 0.0767905801630124, - 0.08168984931668696, - 0.08767400275535163, - 0.09486695049933518, - 0.10104830803402536, - 0.10689155017810831, - 0.11461024810619873, - 0.12145743747750518, - 0.1271371572489317, - 0.13397803649442158, - 0.14075080448767197, - 0.14612731206167612, - 0.15117540306929772, - 0.15726645771542813, - 0.16195234998432878, - 0.16543061800375564, - 0.1700534879628271, - 0.17383980961362971, - 0.17602187768584215, - 0.17810795607789, - 0.1803428473559827, - 0.18090723064747846, - 0.18030926501646938, - 0.18025817832772187, - 0.17892590748646967, - 0.1761685765711094, - 0.17366468103912897, - 0.17072951238718762, - 0.16655381011536455, - 0.16176620613526804, - 0.15742076610785022, - 0.1474255779152494, - 0.14224668341309177, - 0.13653966701006495, - 0.12992620428290796, - 0.12294559350432553, - 0.11593302748302793, - 0.1084087171131411, - 0.10043072073187664, - 0.09241274397206771, - 0.08424330123116879, - 0.07588570862960728, - 0.06749045199935913, - 0.05920783609724786, - 0.051091489842033905, - 0.04309336894598498, - 0.03523080417106732, - 0.02779958135747223, - 0.02089003585806034, - 0.014031335581449873, - 0.007764478626667286, - 0.0021205582794681446, - -0.0033027521757022123, - -0.008553247855876047, - -0.013015223588069136, - -0.016941990737533576, - -0.021113274464897403, - -0.024670052716247615, - -0.027589134451455357, - -0.030991478071985865, - -0.034365886603040456, - -0.03721273241074972, - -0.04008149526889197, - -0.04365807320805583, - -0.04654517225469406, - -0.04883319886207804, - -0.052024332661308834, - -0.055016836735496594, - -0.05716862145745556, - -0.059253703251130926, - -0.061437113117802984, - -0.06264186736260538, - -0.06323273233085093, - -0.06432683321844032, - -0.06471695354281409, - -0.06431661095041341, - -0.06423334865905352, - -0.06388632208265704, - -0.0626897169073865, - -0.06142733056279862, - -0.06092904942452286, - -0.06010825648659786, - -0.05909481571313736, - -0.05903743977643937, - -0.0587706397287515, - -0.05813018831834581, - -0.05813533462442448, - -0.05874155617314514, - -0.05888459651019647, - -0.05912065271629919, - -0.06051345871731671, - -0.06148816913978834, - -0.062036238670809915, - -0.06359024346277178, - -0.06516786743439391, - -0.06626173131763785, - -0.06757068333974531, - -0.06976408550499362, - -0.07147808935747625, - -0.07277234777500062, - -0.07523308512582531, - -0.07759235193082248, - -0.07941090181154374, - -0.08183927640192597, - -0.08496631340881884, - -0.08754112807487414, - -0.09003857126547159, - -0.09381234061328701, - -0.09729271593037443, - -0.10030485439081868, - -0.10428332200578927, - -0.10848456529371066, - -0.1120576363598334, - -0.11567390437178152, - -0.12021635762386056, - -0.12419343964365387, - -0.12764541566373822, - -0.1319318998609413, - -0.13590149640353005, - -0.1391333914140866, - -0.14246616477941473, - -0.1460373639742511, - -0.1488003292758271, - -0.1509859384322968, - -0.15348289685941321, - -0.15533129157603098, - -0.15638462162127273, - -0.15728558430652034, - -0.15781323550236823, - -0.15761414129382031, - -0.15684865924177258, - -0.1559154659818317, - -0.15444365149220823, - -0.15231755591702015, - -0.14974471031649828, - -0.14693302248763646, - -0.1437137554443335, - -0.13990070457539336, - -0.1358366195055356, - -0.1318028851487712, - -0.12745117757830293, - -0.12225979335272219, - -0.11731640997432943, - -0.11251710766746921, - -0.1064387444156834, - -0.10009317806123097, - -0.09408872519384186, - -0.08755262778258846, - -0.0796447551768226, - -0.07222031752526784, - -0.06513633871769955, - -0.05628708339910357, - -0.04772466572434819, - -0.040157271621632865, - -0.031686194064832376, - -0.02235922519522931, - -0.014500076540261357, - -0.007239476319924483, - 0.0020058768985282954, - 0.009748775673900359, - 0.01591385370563441, - 0.023963927840079505, - 0.031944509861640526, - 0.038553007270937, - 0.04562931949361142, - 0.05489582838088264, - 0.06221648180540956, - 0.06833792421983403, - 0.07782431885551322, - 0.08704823313362818, - 0.09506083367460447, - 0.1050911876492581, - 0.11731924755779523, - 0.1277999740886628, - 0.13783400341576324, - 0.1517270052776087, - 0.16409128003872586, - 0.1743332215263329, - 0.18745204775416247, - 0.20068752521065547, - 0.2110360225223585, - 0.2210141909434474, - 0.23377462618851985, - 0.24347973010497168, - 0.25075442039832446, - 0.26164371731071734, - 0.2709292765299619, - 0.27706358344327914, - 0.28463879218672283, - 0.2941117773609384, - 0.3005157176670233, - 0.3055686302031146, - 0.31475835606047287, - 0.32161377550374365, - 0.32553865705580465, - 0.3326383090615706, - 0.33985504551452467, - 0.3438447891542371, - 0.3474960270174819, - 0.3544643756487672, - 0.3582460479797724, - 0.3673403560663881, - 0.3670961004065652, - 0.36781138702336286, - 0.3702009691850043, - 0.3690646412028115, - 0.36603269531061017, - 0.36664079802525895, - 0.36469817557223144, - 0.3595691226724459, - 0.3570472887927186, - 0.35448096519592426, - 0.34869344070671254, - 0.3424018873181193, - 0.33923106497213024, - 0.3332277269799473, - 0.3248783590113355, - 0.320134073158084, - 0.31430589884314025, - 0.3057433525355391, - 0.29854112950374023, - 0.29341365747501436, - 0.28568629302312176, - 0.27690229541304884, - 0.2722016313090856, - 0.26591041580547525, - 0.2574847595149176, - 0.2522371909379537, - 0.24758699134587647, - 0.2405937442839137, - 0.23377548530325454, - 0.2303383312593079, - 0.2247736359215706, - 0.21754709308155215, - 0.2140956426650125, - 0.2099422466893935, - 0.2036014633869717, - 0.19880032001867207, - 0.19612254802879778, - 0.1913829480191222, - 0.18597042368332567, - 0.184432032091367, - 0.18162369317556415, - 0.17706900839265663, - 0.1756403485910432, - 0.1756885775577665, - 0.17497613061486186, - 0.17564886577008043, - 0.18062234890485848, - 0.18488541870474604, - 0.18869594844084697, - 0.19688190994440435, - 0.20521644615311618, - 0.2121114129403687, - 0.22072485346860019, - 0.23143840644124355, - 0.24021518903685582, - 0.24803826873686535, - 0.2586522712879754, - 0.26759662758467306, - 0.2742852667934164, - 0.28227229008239546, - 0.289744352398795, - 0.2946422769941939, - 0.29845095734049926, - 0.3030454084839818, - 0.30506336072269963, - 0.3047360782326249, - 0.3048467756469606, - 0.3031380876957081, - 0.2988620497647256, - 0.2937840450721534, - 0.28830001422123247, - 0.2805645957083721, - 0.2712209597490036, - 0.26214681900844067, - 0.251529350754401, - 0.23930197474609996, - 0.2269719237099881, - 0.21403330732838938, - 0.19985690799561837, - 0.18503433771501568, - 0.17024287150678888, - 0.15487336846663924, - 0.13919681711122442, - 0.12380512260700878, - 0.10857430228735349, - 0.09356329365683132, - 0.07849939095431363, - 0.06347324436077688, - 0.04925505536468727, - 0.035726230596691194, - 0.02196830077685305, - 0.010389665430742746, - 0.0007680066214794112, - -0.010288575581641682, - -0.020839928941294834, - -0.028711250954402003, - -0.036369589326406465, - -0.04587258186371329, - -0.053809285943323154, - -0.06115707312302354, - -0.07481643021821799, - -0.08891048210797825, - -0.10123505129107763, - -0.11784550302889436, - -0.13969998398327707, - -0.1590428940269983, - -0.17767810536197226, - -0.20364383923483795, - -0.2276301386711846, - -0.2482117886502084, - -0.27381977279579534, - -0.30032463548931937, - -0.32253624055008157, - -0.3444288754027991, - -0.3719897112512347, - -0.3950295808309341, - -0.4136774466136594, - -0.43917134582068595, - -0.46240255022377635, - -0.4793363620248737, - -0.5367194491159265, - -0.569072141083489, - -0.6050004872449546, - -0.6178729603669149, - -0.6239445355285786, - -0.6286877334912403, - -0.6394353020308796, - -0.6441662677887372, - -0.6435985424458376, - -0.6499114374473205, - -0.6535719748654134, - -0.6512740109225499, - -0.651374498088673, - -0.655513895334127, - -0.653984989742277, - -0.649551640099946, - -0.6528265508421321, - -0.6521251030409163, - -0.6459731330278715, - -0.6453558862335298, - -0.6454596048733894, - -0.6403960752072799, - -0.6353762372717962, - -0.6374589863235176, - -0.6347911908544484, - -0.6280398654073018, - -0.6288312696869098, - -0.6278505833845854, - -0.6215169379444203, - -0.6176045681271509, - -0.6175380499809103, - -0.6119532362018614, - -0.6035369507678396, - -0.6021421323416152, - -0.5969202705201613, - -0.5867675500948863, - -0.5815325545063643, - -0.5767547799455862, - -0.5669844073338848, - -0.5565721343634834, - -0.551307245012479, - -0.5416790127772172, - -0.5283463768140204, - -0.5202484635861817, - -0.5104091082090271, - -0.49637762180995565, - -0.4838354235759198, - -0.4738361904080972, - -0.4599694032395385, - -0.44422119685590866, - -0.43305068490912246, - -0.419492096807561, - -0.4029149350413482, - -0.389318298891563, - -0.3761610739968285, - -0.36037743632882735, - -0.3444040299584433, - -0.33138874706973265, - -0.3162920056871086, - -0.2995818676686326, - -0.2854824489295327, - -0.27090125776044044, - -0.2547255460951154, - -0.2391167074269954, - -0.22445810435406385, - -0.20870853132782646, - -0.19241710657316452, - -0.1770077825230877, - -0.16130599286636932, - -0.14524942505182872, - -0.12931926699588175, - -0.11366475691225825, - -0.09834304410290301, - -0.08300022840738408, - -0.06729670509393011, - -0.05235342489207957, - -0.03792319477127401, - -0.02195539535078947, - -0.006377192714561553, - 0.008020720169221729, - 0.02318585438138808, - 0.039108729226501014, - 0.05301197439944766, - 0.06558030182043177, - 0.07921440795456025, - 0.0885940117077885, - 0.09535474616179672, - 0.10483524562106414, - 0.11473485352078772, - 0.1228672197580399, - 0.1319099405796592, - 0.14501679389732733, - 0.1565798259820526, - 0.16710992799593924, - 0.18279998466670447, - 0.19816246444886437, - 0.21115064396276456, - 0.2265467574390544, - 0.2446233429221429, - 0.2590643470319307, - 0.2715101904074207, - 0.28842808954197136, - 0.3024760715427446, - 0.3135010012495795, - 0.3292057468195139, - 0.34587698168540626, - 0.35922885725920295, - 0.3729628408955109, - 0.39191383426639015, - 0.4075311334531245, - 0.4203218264209973, - 0.43886664104771045, - 0.45597226429753956, - 0.46897283499400944, - 0.4838258102890996, - 0.5014092509432154, - 0.5145195665637416, - 0.5251728844865312, - 0.5409584807379976, - 0.5531137663963296, - 0.560367550749308, - 0.5704679389828895, - 0.5796352995341805, - 0.5833594458293406, - 0.5853260257603571, - 0.5903525176253075, - 0.5903589503087527, - 0.5860815493238994, - 0.585207266890304, - 0.5815958291483968, - 0.5731822284745681, - 0.5649572917763392, - 0.5579039710276398, - 0.5462151598180887, - 0.5316884565741297, - 0.52054601627362, - 0.47237119133377026, - 0.45634920977320254, - 0.43698910190889895, - 0.4170697962166256, - 0.4001689768219172, - 0.380560614232652, - 0.3588737848501027, - 0.3407085625654581, - 0.3216458145793892, - 0.3003517426945977, - 0.280602175256207, - 0.2630783165978187, - 0.243752106647476, - 0.22393459104723953, - 0.20781300540716363, - 0.19096619119918562, - 0.17311679210373396, - 0.1583735302387034, - 0.1448677343530182, - 0.13049385636683045, - 0.11708977734219334, - 0.10685927817080364, - 0.09606468021722543, - 0.08496184246205384, - 0.07683594878723173, - 0.06903235186668014, - 0.06068743301652077, - 0.05383939698261435, - 0.04873599377290482, - 0.04304834048539916, - 0.03746435143013627, - 0.034045846202501014, - 0.03034058947057518, - 0.026138133304967556, - 0.023376238627802807, - 0.021025120806744766, - 0.018034872701633637, - 0.015305519480544462, - 0.013919140578702548, - 0.012176234964394735, - 0.010495811901297464, - 0.010564851149321632, - 0.011081162124842857, - 0.011559183422232777, - 0.01297430745189991, - 0.015383476589771176, - 0.017533452295833515, - 0.01973161880902472, - 0.023029749074466428, - 0.026092039800343372, - 0.028766731695227074, - 0.032181738788106214, - 0.03575547143009343, - 0.03883624570211184, - 0.04188425595318422, - 0.04547413124404817, - 0.04851200203880796, - 0.051056385347066205, - 0.05400787230503962, - 0.05658581726051582, - 0.05851761652741452, - 0.0604075640082984, - 0.06233390831081931, - 0.06351248657721323, - 0.06414249910853989, - 0.06495519286097803, - 0.06522151709592794, - 0.06490385148523078, - 0.06475431088622546, - 0.06448552618707812, - 0.06372953469282133, - 0.0627908593952906, - 0.062057787689503534, - 0.06091741364468095, - 0.05945227334739271, - 0.058256635199537526, - 0.05688483996251156, - 0.055237205829718694, - 0.05366475274473763, - 0.052210748594141335, - 0.050485123566548745, - 0.04859782827473895, - 0.04681604777740028, - 0.0447932174886984, - 0.042551495127153574, - 0.04030233127741507, - 0.03793504079138198, - 0.03539708173364291, - 0.0327512320557754, - 0.03003448449562573, - 0.027219416814242232, - 0.0243483034750035, - 0.02141213450855029, - 0.01851712996310877, - 0.01579131176013943, - 0.013049364765298737, - 0.010239909289814692, - 0.007688183785390585, - 0.005238938745270356, - 0.0025491580189498132, - 0.00018337993772717803, - -0.0018178626573786168, - -0.004105787244702673, - -0.006149367931283898, - -0.007688613106028136, - -0.009214445591534542, - -0.010829248597465379, - -0.011788100829643357, - -0.012551390054548922, - -0.013930907899198318, - -0.014741226724102672, - -0.015239741305871728, - -0.01629596912941818, - -0.0173601107178987, - -0.017933504504898584, - -0.01872378882864851, - -0.020753073787982322, - -0.02227094378948638, - -0.023371970167760592, - -0.025944666026154993, - -0.028806375967105433, - -0.031018037260631997, - -0.03369065169064223, - -0.03793900413204171, - -0.04144947248019511, - -0.04427965376117571, - -0.04847934089302111, - -0.05214061126027786, - -0.05472909204266649, - -0.05777830977625294, - -0.0614718087800942, - -0.0640385096389731, - -0.06601261409658657, - -0.06911804482108218, - -0.07143085376321344, - -0.07270270452585464, - -0.07472033824272413, - -0.0767283557333957, - -0.07782499475246876, - -0.07877111173128074, - -0.08058644799875044, - -0.08153884363494043, - -0.08173199257772532, - -0.08279281183715229, - -0.08335672162595893, - -0.08295283561748101, - -0.08284357440809158, - -0.08332596388082769, - -0.08301002835691906, - -0.08228961275831843, - -0.08262429890516793, - -0.08233105301109866, - -0.08121466782651965, - -0.08086357962786506, - -0.08049793394960747, - -0.07923224337523165, - -0.07783518092774568, - -0.07729816660709499, - -0.07599204065356124, - -0.0744485973318649, - -0.07451372387487067, - -0.07468867139808359, - -0.07442130248486489, - -0.07488056045201544, - -0.07620978933531924, - -0.07690531880587229, - -0.07740368983519899, - -0.07921515986818439, - -0.08045212627813841, - -0.08092097805186023, - -0.08224957663696328, - -0.08362438782128032, - -0.08412354825811313, - -0.084403105386084, - -0.08542575177295582, - -0.08560510490526349, - -0.08505543213037442, - -0.08515152062772482, - -0.08467085146941966, - -0.0833280344663179, - -0.08205293567420159, - -0.08095094929887572, - -0.07899829948251169, - -0.07648136546698331, - -0.07451441667772588, - -0.07200672441122771, - -0.06890293738419107, - -0.06607822213999001, - -0.06309372228334215, - -0.05949868871388257, - -0.055847323698465776, - -0.05257810610237863, - -0.04895460620647495, - -0.04506458794419497, - -0.041387088527384014, - -0.037614759346298154, - -0.033858799351970635, - -0.030447926761198795, - -0.027203218596598862, - -0.02407503273333336, - -0.021288576132909416, - -0.018877329078686448, - -0.01663021101089245, - -0.0145669466671909, - -0.012661452830040061, - -0.010845580556031287, - -0.009076138996696816, - -0.007251513301885507, - -0.005248459636868791, - -0.003385552302001431, - -0.0015319263028178067, - 0.0007240268278801872, - 0.0030518522215975353, - 0.0052820312423917685, - 0.007838975040550544, - 0.010616486895063323, - 0.012995434181975938, - 0.015242312506559288, - 0.018158178833984247, - 0.020780902165960843, - 0.023185828212692737, - 0.02653885046708253, - 0.03024188712632561, - 0.0336372131643811, - 0.03732565964287116, - 0.04213765846886865, - 0.0466167571727067, - 0.050779404136529475, - 0.05620173911750993, - 0.0614872422881384, - 0.0660838573660215, - 0.07120184585189304, - 0.07699142052272417, - 0.08196991039030116, - 0.08657060948278504, - 0.09239487246182392, - 0.09759062248877218, - 0.10193813715610285, - 0.10713886991545171, - 0.1123171666478657, - 0.11642714135531423, - 0.12020950387300307, - 0.12470831323033042, - 0.12806266703673924, - 0.13034245957754104, - 0.13322661686149972, - 0.13532284630769836, - 0.13613849093113528, - 0.13672289420314943, - 0.1372389667019562, - 0.13645265645037552, - 0.13475015070801197, - 0.1332851751904114, - 0.1307871771107337, - 0.12717001234159941, - 0.12347187684435099, - 0.11936793715862458, - 0.11445834451110798, - 0.10927668556952277, - 0.10428218112856011, - 0.09882618618632119, - 0.09287106731144329, - 0.08681414357844477, - 0.08041542121996724, - 0.07362990841414706, - 0.06646755874317488, - 0.05914856821993615, - 0.05171463941386974, - 0.044134529398814966, - 0.035997530081690016, - 0.028166169384280765, - 0.020920009723802757, - 0.013335850788455322, - 0.006128039605339874, - 3.954812127922921e-05, - -0.005630824287910938, - -0.011774945202480156, - -0.016765764265189425, - -0.020762439786178682, - -0.02579545597429319, - -0.029983351242949683, - -0.03277507927491201, - -0.036391111747051466, - -0.040973014912815214, - -0.04434935249540378, - -0.047410016962373625, - -0.05319575921020815, - -0.0580218261266659, - -0.061701911319755685, - -0.06813997774727419, - -0.07523598209633786, - -0.0809891365517971, - -0.08726766677917838, - -0.09623860793035588, - -0.10377242144900138, - -0.11025050021425223, - -0.11986013816525348, - -0.12907712722690062, - -0.1366374312740515, - -0.145407016578047, - -0.15571140475271247, - -0.16406743270816232, - -0.17160087770930194, - -0.1820063696914937, - -0.1908949138877078, - -0.19783784775655336, - -0.20682942217997763, - -0.21582972178540347, - -0.22261885157249678, - -0.2292475506014913, - -0.23821955740146972, - -0.24507623275674612, - -0.25015108399131053, - -0.2578451090532601, - -0.26425038193591444, - -0.26795468393563815, - -0.2721886914456845, - -0.2770794014670889, - -0.2787938480746488, - -0.2786621433670513, - -0.2807143321656973, - -0.2803071154863563, - -0.2770321684581841, - -0.2752115805048045, - -0.2727102275513559, - -0.2672175744341334, - -0.2607366918677927, - -0.25597916738059295, - -0.24859833676928883, - -0.23915830903319646, - -0.23207826521114128, - -0.22437124623410282, - -0.2145910014240703, - -0.2052732637461226, - -0.19679298483174956, - -0.1862099125895033, - -0.1746111345250494, - -0.16524512393587773, - -0.15464807793456786, - -0.14269125373078656 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" } ], @@ -51214,57 +2820,6 @@ "type": "heatmap" } ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], "histogram": [ { "marker": { @@ -51465,6 +3020,17 @@ "type": "scattergl" } ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], "scattermapbox": [ { "marker": { @@ -51942,7 +3508,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "2ea60e82", "metadata": { "tags": [ @@ -51964,1987 +3530,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - 221.05863551247492, - 221.0382752594627, - 221.01795364688277, - 220.99767254611854, - 220.97743578832674, - 220.95724325625585, - 220.9370971246997, - 220.91700735646563, - 220.8969794257448, - 220.87702130651658, - 220.8571490754986, - 220.83737458002742, - 220.81771191497242, - 220.79818249382535, - 220.77880890552947, - 220.75961080425367, - 220.740609879003, - 220.7218329835663, - 220.703304448695, - 220.68505025655602, - 220.66710018691688, - 220.6494840130121, - 220.6322299497544, - 220.61536732046517, - 220.59892727554825, - 220.58293974825918, - 220.56743481012413, - 220.55244234188868, - 220.53799066135397, - 220.5241075906988, - 220.51081977995747, - 220.49815203194052, - 220.48612725027613, - 220.47476680437723, - 220.46409064633804, - 220.4541156316579, - 220.44485675319808, - 220.43632862605497, - 220.42854426271808, - 220.4215125528047, - 220.41524108244494, - 220.4097389597779, - 220.4050104019276, - 220.40105822361153, - 220.39788743138683, - 220.39549382420736, - 220.39387232691115, - 220.3930243902772, - 220.3929501512836, - 220.39363926887816, - 220.39508011092133, - 220.39726980150155, - 220.40019149955737, - 220.40382842066262, - 220.40817688914575, - 220.41323249749382, - 220.4189757433761, - 220.42538820433833, - 220.43246791167778, - 220.44019256815506, - 220.44854078829707, - 220.4575124700619, - 220.46708303268858, - 220.4772291606989, - 220.48795299107547, - 220.49925669297104, - 220.51111396036438, - 220.52350050730055, - 220.53642349977895, - 220.54985764171306, - 220.56377974567107, - 220.57820287305032, - 220.59314100020302, - 220.60857442097603, - 220.624486002699, - 220.64089455924264, - 220.65778492545041, - 220.67514388246587, - 220.69299381035916, - 220.7113235970916, - 220.73012345381662, - 220.74941849494408, - 220.7692341326228, - 220.78956356234673, - 220.8104009342162, - 220.831774106631, - 220.85367853924927, - 220.87611020451482, - 220.89909807105855, - 220.92267079785364, - 220.94682532984177, - 220.97155912726456, - 220.9969017972807, - 221.02285051295152, - 221.04940236468818, - 221.0765867686842, - 221.1044002676678, - 221.1328381682089, - 221.1619284017246, - 221.19170024012158, - 221.22214967793198, - 219.90274061530428, - 219.9096609491968, - 219.91704798019606, - 219.92490240292418, - 219.93324274743784, - 219.94208818407958, - 219.95144045030858, - 219.96129983083273, - 219.97168314152765, - 219.98258992586375, - 219.99401875428654, - 220.00598326308778, - 220.01847897326493, - 220.03150067988383, - 220.0450585312456, - 220.05915969764675, - 220.07379477146506, - 220.0889540070916, - 220.1046404996243, - 220.12084215762957, - 220.13754614102763, - 220.15475223075805, - 220.17245824251157, - 220.19064997437965, - 220.20931350799327, - 220.22844424640903, - 220.24802819097718, - 220.26805217251908, - 220.2885118910885, - 220.30939559031052, - 220.33069190847067, - 220.3523976536674, - 220.37450887696247, - 220.3970165226263, - 220.4199132041972, - 220.44319687517472, - 220.4668614204286, - 220.49090128025782, - 220.51531585612818, - 220.54010416976823, - 220.56526266559823, - 220.59078959761723, - 220.616685264553, - 220.64294903804014, - 220.66958085287249, - 220.69658185131482, - 220.72395470784315, - 220.75170115610436, - 220.77982322026295, - 220.80832266954414, - 220.83720367944088, - 220.86647151526154, - 220.8961280008986, - 220.92617982326712, - 220.95663288520623, - 220.9874887163851, - 221.0187482099419, - 221.050417416447, - 221.08250431826158, - 221.1150097192813, - 221.1479406320107, - 221.18130263756245, - 221.2150935843437, - 221.24931939228307, - 221.2839833367942, - 221.3190816220436, - 221.35461041479212, - 221.39057299733048, - 221.4269727689881, - 221.46380500475922, - 221.5010731031722, - 221.53877807728037, - 221.57691374747245, - 221.6154762305573, - 221.6544685166182, - 221.693894129277, - 221.73375010706727, - 221.77404158210032, - 221.81477304843241, - 221.855942160264, - 221.8975550164245, - 221.93961609532116, - 221.9821217940808, - 222.02506934375458, - 222.0684621948214, - 222.1123026136038, - 222.1565861394165, - 222.20131488852036, - 222.2464906011455, - 222.29210824024412, - 222.33816332337884, - 222.38465741392415, - 222.43159058626645, - 222.47895749584538, - 222.52675825296254, - 222.5749923911286, - 222.62365375833699, - 222.67274049004757, - 222.72225165377205, - 222.77218063853744, - 217.59678980765716, - 217.5925982524481, - 217.5885486978027, - 217.58463929644657, - 217.58086628450923, - 217.5772262323786, - 217.57371797238832, - 217.57034082079022, - 217.56709215882074, - 217.56396951501918, - 217.56097342652717, - 217.55810177155936, - 217.55535272698324, - 217.5527276555135, - 217.55022453937602, - 217.54784221735008, - 217.5455834189956, - 217.54345121208738, - 217.5414458356671, - 217.53956856657635, - 217.53621301800214, - 217.53473776489665, - 217.53340124631228, - 217.53220643064884, - 217.53115306898798, - 217.5302408319257, - 217.52947271017274, - 217.52884776110307, - 217.52836503925514, - 217.52802732906693, - 217.52783310558425, - 217.52778086592306, - 217.52787294534008, - 217.52811144683636, - 217.52849400591924, - 217.5290183692637, - 217.52968664644055, - 217.5304968464713, - 217.53144715797924, - 217.53254001749082, - 217.5337780200631, - 217.53515905167066, - 217.53668085297502, - 217.53834576964067, - 217.54015117650985, - 217.54209450198337, - 217.5441774505469, - 217.54639556685848, - 217.54874368553706, - 217.55122153010058, - 217.5538289675727, - 217.5565612874882, - 217.55941362622005, - 217.56238567105694, - 217.5654732537751, - 217.56867234571712, - 217.5719831262758, - 217.5754061690419, - 217.5789383983565, - 217.5825766285342, - 217.58632137265147, - 217.59016995795517, - 217.59411998904304, - 217.5981724164146, - 217.60232509425813, - 217.60657597122417, - 217.61092625996474, - 217.61537694234912, - 217.61992575890773, - 217.62456998843058, - 217.6293093355624, - 217.63414169276584, - 217.63906510230785, - 217.64407929117849, - 217.6491838151817, - 217.65437670201274, - 217.6596563839362, - 217.66502318351007, - 217.67047599705722, - 217.67601345817394, - 217.6816356441158, - 217.68734131607974, - 217.69312880069796, - 217.6989978944915, - 217.70494855604161, - 217.71097919610912, - 217.71708813111331, - 217.72327500669664, - 217.72953831051817, - 217.73587658336706, - 217.7422892842955, - 217.74877597945482, - 217.7553355881714, - 217.76196709524996, - 217.76867055581363, - 217.77544540749668, - 217.78229102128375, - 217.7892075986973, - 217.79619545655265, - 217.80325491323532, - 215.04962620385524, - 215.03698294347245, - 215.0243642090803, - 215.01177167494595, - 214.99920574826112, - 214.98666921686376, - 214.97416482050747, - 214.96169319005844, - 214.94925522202487, - 214.93685493162315, - 214.92449637602908, - 214.9121808835605, - 214.8999141316961, - 214.88770169836718, - 214.87554525402103, - 214.86345233611786, - 214.8514300581523, - 214.83947958424383, - 214.8276020307414, - 214.81580546128964, - 214.80409762317572, - 214.7924787681041, - 214.7809570667603, - 214.76954009327147, - 214.7582267436484, - 214.74701597622993, - 214.735915969599, - 214.7249341476552, - 214.71406825761423, - 214.703327626896, - 214.69272051617946, - 214.6822429008684, - 214.67190531006804, - 214.66171748266177, - 214.65167420466548, - 214.64177035565308, - 214.6320152194805, - 214.62241739327263, - 214.61297011966664, - 214.60368200668486, - 214.59456085383792, - 214.58559836158236, - 214.57678602725636, - 214.56813070145185, - 214.55963866507784, - 214.55129964562514, - 214.54311942541665, - 214.53510339536285, - 214.5272399270969, - 214.51953311716142, - 214.51198683628607, - 214.50458908720861, - 214.49732770482547, - 214.4902058856426, - 214.4832261113999, - 214.476374858584, - 214.4696548846381, - 214.4630687338047, - 214.45660383453506, - 214.45024822544514, - 214.44400478135935, - 214.43787665386043, - 214.43185211282423, - 214.42593481344764, - 214.42012819279688, - 214.4144209828099, - 214.40881802092431, - 214.4033235926449, - 214.39792759533077, - 214.39262105625178, - 214.3874096455179, - 214.3822990905853, - 214.37728047907285, - 214.3723587158669, - 214.36753686488368, - 214.36280380296452, - 214.35815028875092, - 214.35358007903864, - 214.34909720293447, - 214.34469343292938, - 214.34037409527213, - 214.33614437099249, - 214.33199697880093, - 214.3279384444617, - 214.32397420199712, - 214.32009704261907, - 214.3163011588089, - 214.31259215255582, - 214.30897513410696, - 214.30544397477138, - 214.29537042465864, - 214.29218278792962, - 214.2890837720402, - 214.28607808608305, - 214.28316033023032, - 214.28033490825746, - 214.2776061080468, - 214.27496871497073, - 214.2724270337456, - 214.26998499183614, - 212.43287448757766, - 212.41993910070238, - 212.40708327535262, - 212.39431041230856, - 212.3816165373645, - 212.36900548738146, - 212.35648103079535, - 212.34403932123217, - 212.33167677048536, - 212.31939735416253, - 212.30720505060216, - 212.29509648040727, - 212.2830761263174, - 212.27114841455304, - 212.25931022606807, - 212.24756613203846, - 212.23592010342995, - 212.2243681900568, - 212.21290662210194, - 212.2015382931266, - 212.1902657422555, - 212.1790846787469, - 212.1679972451529, - 212.15700526305096, - 212.1461041369644, - 212.13528962800387, - 212.1245624722258, - 212.11392388374992, - 212.10337087086836, - 212.09290473311282, - 212.08252670816117, - 212.07223410143578, - 212.06202829910717, - 212.05191097030527, - 212.04188066591055, - 212.03193648125475, - 212.02208010242765, - 212.01231281411518, - 212.00263304272974, - 211.9930408876428, - 211.98353626909008, - 211.97411727166525, - 211.96478205858577, - 211.95552929137727, - 211.94635747554733, - 211.9372645982505, - 211.92824825157663, - 211.91930613454204, - 211.91043655477895, - 211.90163640626685, - 211.89290259511026, - 211.88423350567058, - 211.87562774484942, - 211.8670817312687, - 211.85859207063652, - 211.85015816856924, - 211.84177664220647, - 211.83344412830138, - 211.8251604746132, - 211.8169256984045, - 211.80873581930766, - 211.8005870069746, - 211.79247978726897, - 211.78441044292694, - 211.77637550257248, - 211.7683760784628, - 211.7604087551791, - 211.7524701366901, - 211.74456144225277, - 211.7366837714441, - 211.7288334721342, - 211.72100687442207, - 211.71320506938778, - 211.705424810772, - 211.6976625189935, - 211.68991872254344, - 211.68219402872205, - 211.67448539067078, - 211.66678980766804, - 211.6591080665942, - 211.65143626458595, - 211.6437720659894, - 211.63611874681456, - 211.6284711997955, - 211.6208219367885, - 211.61316683888032, - 211.60550221858796, - 211.59781834605525, - 211.5901050995961, - 211.58236059474774, - 211.5745647274161, - 211.56669790398442, - 211.55876065363452, - 211.55075473011618, - 211.5426624709934, - 211.53446595625772, - 211.52616716466196, - 211.51775726511016, - 211.50922562823263, - 211.5005729079045, - 210.20693537285229, - 210.19160169006204, - 210.176136403286, - 210.16054321135917, - 210.1448180889131, - 210.12895597198377, - 210.11296200571854, - 210.09683516277028, - 210.08057358098037, - 210.0641860531829, - 210.04768728432632, - 209.9976991951807, - 209.96401197434807, - 209.91314783074375, - 209.89614722503563, - 209.87914921507232, - 209.86215931825066, - 209.8451825646215, - 209.82823733451008, - 209.81132939493352, - 209.7944635557609, - 209.7776542602788, - 209.7609124825658, - 209.7442420460868, - 209.727646293959, - 209.71113354329248, - 209.69470707189097, - 209.67836870199116, - 209.66212277119422, - 209.64597088439905, - 209.6299128008564, - 209.61395012324368, - 209.5980862315484, - 209.5823226782705, - 209.56665953984273, - 209.5510977322317, - 209.53563775932713, - 209.52027831500916, - 209.50501612243326, - 209.4898467216403, - 209.47476780090184, - 209.45977563566188, - 209.44486288995233, - 209.43002716762157, - 209.41526574190488, - 209.40057013951537, - 209.3859388090116, - 209.37137065304512, - 209.3568567141849, - 209.34238754510687, - 209.32796192931173, - 209.31357778577558, - 209.29922441903784, - 209.28490102559394, - 209.27060711367275, - 209.25633183582926, - 209.24206452928044, - 209.22780634203315, - 209.21355765704487, - 209.19930790282882, - 209.18505896197456, - 209.1708129793631, - 209.15656025543967, - 209.14230464278089, - 209.12805088683422, - 209.1137903678068, - 209.0995146338007, - 209.08522993637436, - 209.07094286414375, - 209.0566465267371, - 209.0423505664134, - 209.02806509423948, - 209.01378499583433, - 208.99950607145678, - 208.98524219985993, - 208.97100728212382, - 208.9567982030163, - 208.94263225195456, - 208.9285266144917, - 208.91447928155034, - 208.90051033579059, - 208.88663897706212, - 208.87286274651552, - 208.85917949496962, - 208.84560937399314, - 208.8321710418236, - 208.81885954204574, - 208.80569324327075, - 208.79268954474608, - 208.7798427087557, - 208.76714710966567, - 208.7546178470756, - 208.74226963661096, - 208.73009481319076, - 208.71810579480137, - 208.70631129452306, - 208.6946990289577, - 208.68328019282163, - 208.67206495549325, - 208.6610430059684, - 207.49501491704007, - 207.47897402096078, - 207.4631285633799, - 207.44746573847502, - 207.43198897056106, - 207.4167004049998, - 207.40158521227846, - 207.38662907685787, - 207.37183289238638, - 207.35719779171518, - 207.3427087004105, - 207.32836384694835, - 207.31416192651113, - 207.30008895857307, - 207.28614421961424, - 207.27232648455688, - 207.25862261123336, - 207.24502033969375, - 207.23151754063895, - 207.2181121391766, - 207.2047927317964, - 207.19155652767142, - 207.17840082235514, - 207.16531537638193, - 207.15229062893914, - 207.13932289631956, - 207.12640859455922, - 207.11353907938948, - 207.10071063580102, - 207.08791989639855, - 207.0751601279885, - 207.0624273914663, - 207.04971838070657, - 207.03702855819196, - 207.02435489727424, - 207.01169477748704, - 206.99904601196536, - 206.98640785714286, - 206.9737782378351, - 206.96115558792889, - 206.94854022470514, - 206.9359332868559, - 206.92333319418617, - 206.91073806026904, - 206.8981505049515, - 206.8855688849295, - 206.87299173837363, - 206.83531094370687, - 206.82276760478294, - 206.81023803298123, - 206.79772114689155, - 206.78521563708506, - 206.77272720685485, - 206.76025410369937, - 206.74779522700115, - 206.7353570132897, - 206.72294623332886, - 206.7105614255128, - 206.69820023212338, - 206.68586930014447, - 206.67356797167764, - 206.66129524792493, - 206.6490577840861, - 206.63685510061754, - 206.62468663452438, - 206.61255890670972, - 206.60047866818772, - 206.58844520186938, - 206.5764573876461, - 206.56452120007626, - 206.55263596488686, - 206.54080048722903, - 206.52901974759988, - 206.5172987616533, - 206.50563616894763, - 206.49403049787608, - 206.48248608290106, - 206.47100122574142, - 206.4595739061189, - 206.44820752513323, - 206.4369005829312, - 206.42565111053975, - 206.41446159452, - 206.40333426861864, - 206.39226757812074, - 206.3812602300777, - 206.3703145995563, - 206.35942982599778, - 206.34860476126755, - 206.33784103078418, - 206.32713983904245, - 206.31649967723314, - 206.30591890971382, - 206.2953978546971, - 206.28493522463825, - 206.27452945093654, - 206.2641799678342, - 206.25388506110474, - 206.2436429683305, - 206.23345294336792, - 205.24296397541357, - 205.22843407879014, - 205.21395240602993, - 205.19951746165344, - 205.18512861583918, - 205.17078508247943, - 205.15648474946858, - 205.14222527401438, - 205.1280060229695, - 205.1138264241014, - 205.09968424968707, - 205.0855795127757, - 205.0715119971223, - 205.05747894614774, - 205.0434799021481, - 205.02951429097496, - 205.01557885641864, - 205.0016702217847, - 204.98778747922375, - 204.97392966283903, - 204.96009330816966, - 204.94627730389738, - 204.932480432059, - 204.9186988257273, - 204.9049284895566, - 204.89116788237143, - 204.8774155831766, - 204.86366806385095, - 204.8499241294018, - 204.83618290960666, - 204.8224415895979, - 204.8086990790802, - 204.79495452897478, - 204.78120556878957, - 204.76744999288084, - 204.75368712822893, - 204.73991611499738, - 204.72613485484868, - 204.7123430859607, - 204.69854072039934, - 204.68472648518184, - 204.67089942043327, - 204.6570596277884, - 204.643207414479, - 204.62934266765225, - 204.61546561385308, - 204.60157664145524, - 204.58767620669917, - 204.57376503746022, - 204.55984396514884, - 204.5459139040909, - 204.5319763119974, - 204.51803266623398, - 204.50408474655467, - 204.49013504330387, - 204.47618543169312, - 204.46223740232546, - 204.44829299658633, - 204.43435444531272, - 204.42042130660266, - 204.40649288884893, - 204.3925709815878, - 204.37865539501524, - 204.36474550344047, - 204.3508426111148, - 204.33694662174835, - 204.3230570594179, - 204.3091750023379, - 204.2953017532404, - 204.2814366547982, - 204.26757895025833, - 204.25372983611248, - 204.2398885368607, - 204.2260541607059, - 204.21222794407407, - 204.19841125206807, - 204.1846031736501, - 204.17080280818655, - 204.15701158856714, - 204.14322896917332, - 204.1294542475379, - 204.11568885924694, - 204.10193245111205, - 204.08818436832794, - 204.07444560747436, - 204.0607172155971, - 204.04699829745076, - 204.03328791621362, - 204.01958728840088, - 204.0058959792677, - 203.99221354493994, - 203.97854147282845, - 203.96488184975794, - 203.9512360711714, - 203.93760597145936, - 203.92399499292426, - 203.91040520283917, - 203.8968385326958, - 203.88329820001397, - 203.86978630801536, - 202.9356881537182, - 202.91812034354274, - 202.90058890719567, - 202.8830953394643, - 202.86564094392583, - 202.84822779637273, - 202.8308565260183, - 202.81352734684364, - 202.7962411559524, - 202.77899855068142, - 202.76179914003225, - 202.74464245080728, - 202.72752867847294, - 202.71045738145986, - 202.69342781415776, - 202.67643936291, - 202.65949127491353, - 202.64258294834409, - 202.62571347440576, - 202.60888136137353, - 202.59208567286527, - 202.57532584906767, - 202.55860100379982, - 202.54191105527858, - 202.5252555938598, - 202.50863338783475, - 202.4920436602254, - 202.47548749948345, - 202.45896587013797, - 202.44247768678352, - 202.42602448477345, - 202.40960815125624, - 202.39322809069557, - 202.3768875075966, - 202.36058945387117, - 202.3443325437737, - 202.3281153783125, - 202.31194182950773, - 202.29581553309887, - 202.27973519818505, - 202.26370537425544, - 202.24773019233055, - 202.2318078269151, - 202.21593609034528, - 202.20011828530252, - 202.1843570855909, - 202.16864857293547, - 202.15299556626135, - 202.13740047502768, - 202.1218587754765, - 202.1063737737011, - 202.0909482864177, - 202.0755778664715, - 202.06025895382336, - 202.0449959126607, - 202.02979317691054, - 202.01464799217047, - 201.999566314516, - 201.98455410820696, - 201.96960919593533, - 201.9547293129687, - 201.9399208269742, - 201.9251901273372, - 201.91053469475645, - 201.89595957687723, - 201.88146953269623, - 201.86706065803003, - 201.8527354722263, - 201.83849621600345, - 201.8243377626902, - 201.81025474996156, - 201.79624801092442, - 201.7823181653773, - 201.76845926407884, - 201.75467087702947, - 201.74095246913546, - 201.7272979851785, - 201.71370170504883, - 201.70016277610628, - 201.6866801947256, - 201.67324835514447, - 201.65986626199526, - 201.64653290496116, - 201.63324320402086, - 201.6199959209751, - 201.6067897270463, - 201.59361977890381, - 201.58048167043205, - 201.56737349079376, - 201.554293304166, - 201.5412371042621, - 201.52820243905333, - 201.51518701089967, - 201.50218747390437, - 201.48920090342318, - 201.4762250633797, - 201.46325805658142, - 201.45029800862065, - 201.43734280743385, - 201.42439066437333, - 200.49146978677453, - 200.47438231824378, - 200.45729430426067, - 200.44020562121338, - 200.42311665296106, - 200.40602543782774, - 200.3889301754953, - 200.37183212961114, - 200.35472943922855, - 200.33762012007872, - 200.32050604382175, - 200.30338982056145, - 200.2862697222617, - 200.2691435030407, - 200.2520128040845, - 200.23487469857852, - 200.21772769473645, - 200.20057587125063, - 200.18341777231848, - 200.1662522195716, - 200.14908386767405, - 200.13191733672002, - 200.11475089682034, - 200.09758342918215, - 200.08042005428402, - 200.06325826896017, - 200.0460953956454, - 200.02893525858232, - 200.01178127420198, - 199.99463008532044, - 199.97747825157478, - 199.96032929694158, - 199.94317911766228, - 199.9260228322667, - 199.90886279345872, - 199.8916942514411, - 199.87451176328597, - 199.85731680050492, - 199.84011134633394, - 199.82289051691467, - 199.80564954003597, - 199.78839088437627, - 199.77111131339197, - 199.7538077408308, - 199.7364834381561, - 199.7191420073634, - 199.7017812973043, - 199.6843994532584, - 199.66700111164624, - 199.6495865596213, - 199.63215599679666, - 199.61471492225664, - 199.59726550088027, - 199.57980986172845, - 199.56235429717796, - 199.54490575798573, - 199.52746921984746, - 199.51004948280652, - 199.49265387451098, - 199.47528894772464, - 199.4579607855093, - 199.44067621527364, - 199.42344274623503, - 199.40626671771417, - 199.3891552237866, - 199.37211699979312, - 199.35515980648006, - 199.33829143013247, - 199.32152002674084, - 199.3048540539932, - 199.28830162889687, - 199.27187031386077, - 199.2555677384212, - 199.23940116783433, - 199.22337672451417, - 199.20749937617327, - 199.19177320939815, - 199.1762012580179, - 199.1607849018144, - 199.14552429871068, - 199.13041978811182, - 199.11547086425185, - 199.10067500216726, - 199.0860292411127, - 199.07152947521533, - 199.05716963097942, - 199.04294301885088 - ], + "y": { + "bdata": "2Q6VV+Cha0AB5N6MOaFrQMBMsBKToGtAH0vx7Oyfa0D5xKYjR59rQH1jiLahnmtAEPoVqvyda0Cchy8TWJ1rQGwHRv2znGtAvTwCeRCca0AvfxaobZtrQNu0UaPLmmtAL3kziCqaa0DlYaCDiplrQK+I9cTrmGtA/B5jdU6Ya0Cpu1fCspdrQLx7JOQYl2tAmSnLDYGWa0DUs75165VrQATddVpYlWtAHEdl+seUa0D9driQOpRrQPUX6Vqwk2tA82JSmimTa0AhG7+NppJrQA3tQHQnkmtAcMaMjKyRa0BaiA4SNpFrQE/0JT/EkGtAzfnDS1eQa0D4X/pr749rQKAh3s+Mj2tAW0dLpC+Pa0A+bSgT2I5rQFY43T+GjmtAtOfoSTqOa0AZEgFQ9I1rQN3dfm20jWtAtKAVtXqNa0A5Z7w2R41rQEJ2mwUajWtAbP+YKvOMa0CUSqqr0oxrQC5XXZO4jGtATprv2KSMa0B4Wshxl4xrQPjr/WCQjGtAwNjjpo+Ma0DkuNEtlYxrQIWoZ92gjGtAWWajr7KMa0BSEjaByoxrQDvJ7C7ojGtAy34UsQuNa0DYm3D+NI1rQAF5Ge5jjWtAz8dnWZiNa0BJkzk80o1rQF0TyGcRjmtAr90yr1WOa0BN5D8Sn45rQEk+XF3tjmtAyMSaX0CPa0Cy5HEdmI9rQMptaZv0j2tAOidQolWQa0DUhS3/upBrQMsHAsEkkWtAaFO5spKRa0BlcaqjBJJrQLEIMa96kmtA20GU8vSSa0AbDHpEc5NrQCPs6oD1k2tAuuZRz3uUa0BIDdoPBpVrQH1+xCaUlWtAoOT1QiaWa0CxGBlNvJZrQEQJpDBWl2tAh+w2IvSXa0BP8BFXlphrQNlj6sA8mWtATGp6U+eZa0D82SNJlpprQJjHXJhJm2tA4xq1OAGca0DIlORmvZxrQKmZ/V5+nWtAif6WGkSea0CrT2OUDp9rQOYGdQren2tA7rHgdrKga0AlvJXTi6FrQKNERF5qomtAj4KyD06ja0DaUBTeNqRrQGGeAQQlpWtAlLvivhima0A5YFsGEqdrQLwOPwXrfGtAZetY7yN9a0DWJPStYH1rQGehbEKhfWtAbLS40+V9a0COgiuKLn5rQIrQRWl7fmtAHiF/ccx+a0DH/C7GIX9rQF4JQGZ7f2tAd6CTTtl/a0AhWd2bO4BrQH8LrkSigGtAKrUUPg2Ba0BgJYedfIFrQNJrSnLwgWtA05K+qGiCa0BRQ3ss5YJrQHHZNwRmg2tAgkKnFuuDa0CB7NxIdIRrQPw2kZoBhWtAjvdiB5OFa0BxzplxKIZrQF5M/7vBhmtAr4Mr3V6Ha0DFL9O3/4drQAooSTCkiGtAeV6kPUyJa0AcrjbH94lrQIe3G7WmimtAfnyhAFmLa0BzDoChDoxrQO3GrITHjGtAqmWImoONa0CaoMLeQo5rQBxEXkQFj2tAyQ6Nv8qPa0CdBxFPk5BrQG5f2PBekWtAJMpGnS2Sa0D7lIZQ/5JrQMwwQAvUk2tARX8CzKuUa0Du6IGShpVrQKesHmFklmtA5w9dPUWXa0AncNMqKZhrQDyEwC0QmWtAldbYSfqZa0Ah6tWH55prQKyAtvLXm2tA/LJTjsuca0AU1qpowp1rQGtAHI68nmtA5JHtAbqfa0APURbGuqBrQN1KWue+oWtAORd6dsaia0CXrjV10aNrQAdIWfLfpGtAv+Oz+fGla0BTqtCGB6drQJQcIqYgqGtAbNmfXj2pa0APBWKoXaprQI/TXnuBq2tAOoCC3qisa0AXvOfY061rQMqke2ACr2tA7lVNfDSwa0CkcmQuarFrQLebimmjsmtAQflkJeCza0A+aChoILVrQJ6mIjlktmtAsDr4kau3a0CgC3199rhrQERDIQVFumtABPfTI5e7a0BQPpnm7LxrQDApC1dGvmtA1AB/baO/a0CDexckBMFrQIm0W4JowmtA95BPjdDDa0DfLYA7PMVrQDlkp5GrxmtAtL+rkx7Ia0BKl9Y2lclrQL12nXEPy2tAwVSGR43Ma0A1D/S4Ds5rQHrQfrqTz2tA2yiWTBzRa0DUrWluqNJrQAaazBI41GtAVmL/NcvVa0CxlCfWYddrQBJtFOX72GtA9ZP4fRoza0DjuHwJ+DJrQIy0+bvWMmtADAfwkbYya0BAwEKDlzJrQJKqkoh5MmtA6LjPn1wya0C5/ebHQDJrQKqAJPslMmtALSccNAwya0BtvWB08zFrQA4cSrfbMWtAnxjV+MQxa0D7T148rzFrQOcDbH2aMWtA6wlmuYYxa0CCGZT2czFrQHeB9ztiMWtAq976iVExa0A63ELjQTFrQI5a3NYlMWtAdGARdxkxa0BpzQo6DjFrQGgudSYEMWtAUTyNO/swa0BMdGR48zBrQKG9u+PsMGtAqFdGe+cwa0Ckesg84zBrQOrUly7gMGtARKYnTd4wa0D0XRiV3TBrQEIt0gveMGtAe+0vtt8wa0BA5ASP4jBrQIq1V5HmMGtAjiQFwuswa0CVdZkc8jBrQDPxDJ35MGtAYdzkSAIxa0DbV90lDDFrQDAkRy8XMWtAyywZYCMxa0DQyYK9MDFrQKWGuEE/MWtAW9UU504xa0BJxHKxXzFrQJUfI5dxMWtA788OjYQxa0C90+qSmDFrQLYoq6itMWtA9NIzxMMxa0DYIBbb2jFrQBcY7ezyMWtAbqHW8Asya0BjWj7eJTJrQEiYxbVAMmtAcvzbeFwya0DHWfcgeTJrQI/aUKeWMmtAQmo5DbUya0DQdxVN1DJrQFuA42H0MmtAp4DiTRUza0A0xqMMNzNrQPtX5plZM2tAHLtn+Hwza0CLIWEqoTNrQAmgISvGM2tA8anu9Osza0Dd0CyHEjRrQLyJdN05NGtA/pij82E0a0DWLhjJijRrQJdN21y0NGtABXjNqt40a0B7Up6vCTVrQLwz6ms1NWtA34F13WE1a0B+pGMBjzVrQBkptNe8NWtAUfLpXes1a0BMOYCQGjZrQJIxyG5KNmtA1GCQ+Ho2a0BJOo8qrDZrQC08QAHeNmtAcOCuexA3a0CyxNGWQzdrQMJ6yU93N2tAH6lHpas3a0CPl0OW4DdrQJXtqCAWOGtAP2t3Qkw4a0ArDKL7gjhrQJPmOku6OGtApkUjMPI4a0AB3Y6qKjlrQAg/b7tjOWtAKbysY505a0AUNx0Mz+FqQOyij8pn4WpA1914wADhakB4jy7ymeBqQMxjuF8z4GpAsLnmD83fakD6AlUJZ99qQIsXTkwB32pA/UW42ZveakCawdu6Nt5qQJJD9vjR3WpAU7iilW3dakC1F62dCd1qQDIhnB2m3GpAO+62F0PcakC0l+qc4NtqQNksCr1+22pAMnQGeR3bakCo6sLRvNpqQEfZAdlc2mpAt1W3n/3ZakAlrL4kn9lqQM9LJHpB2WpAHHtpsOTYakDStzjDiNhqQEXXkq4t2GpAVj0RhNPXakBVEmxTetdqQAKHwRUi12pA3phA38rWakA8MXLBdNZqQCsObbEf1mpAnU5WxsvVakDORSwVedVqQJ7+ipAn1WpAPjYdLNfUakDbxZj8h9RqQDSTSRU61GpAIJu9Zu3TakDtt4kEotNqQASYPwBY02pAty3mRg/TakA1MnzFx9JqQJEFv4uB0mpAh7n8pzzSakD89DwD+dFqQIAyMKu20WpA8hNjrHXRakC8WhjtNdFqQGN4Onj30GpAE5+pV7rQakBbVMlwftBqQND2S6lD0GpAYGZ+CgrQakBqJByc0c9qQNQ2yECaz2pAzf/k/2PPakD6Ny/gLs9qQEtKp8X6zmpAum+qlcfOakA+K4lXlc5qQGCWPhNkzmpAwfWyrjPOakB/I+8yBM5qQIoDeajVzWpALxwT9qfNakC0/Rwne81qQICL0UVPzWpAS+BzOyTNakBs2MTz+cxqQHvt/XvQzGpAq+O+4afMakD150IRgMxqQCP+jxVZzGpAHdaL9TLMakDlbN2XDcxqQFwG3eboy2pA3yMg6sTLakDRuqypoctqQNy0vBF/y2pAQMPJLF3LakDdYRgFPMtqQAROK4kby2pAXDDxxfvKakCmvyXG3MpqQN3Juni+ympAkLjBz6DKakC1qFzWg8pqQA29vpZnympAdqzMAkzKakBdWTxM/clqQPKb8l3kyWpArKo9HszJakCmiQCXtMlqQMNkbrydyWpA7JiLl4fJakCQYlAxcslqQMKqnH5dyWpA949SiEnJakA+jtNWNslqQGMLcyr5jWpAxnl0WI+NakDosZ8lJo1qQBz9WZm9jGpAldLdq1WMakDAG1dl7otqQICB282Hi2pAfNgM3iGLakBGqRKPvIpqQHBvWelXimpAFDtb9fOJakATbr2skIlqQAW+4hguiWpAwekTQ8yIakAezIAla4hqQJkQn8kKiGpAONesN6uHakB/RTNoTIdqQKGEB1TuhmpA7tUoAZGGakD/mNV0NIZqQJNEu6bYhWpAEEj3mn2FakBMsANVI4VqQBgO5cvJhGpA7gZD93CEakD+fCXYGIRqQOvDsnDBg2pAqedVu2qDakC6uym6FINqQG7uJ2+/gmpA5DRV1WqCakB/0ifvFoJqQBzxub/DgWpAeZnPRHGBakBW3Ex9H4FqQEW0fWzOgGpA3JaoFH6AakCSevByLoBqQLdVtobff2pAqhgUT5F/akBT7J3IQ39qQGk6B/D2fmpAn+O7wap+akCp5ug5X35qQO67AlUUfmpA5tBTDcp9akC7s2xdgH1qQPE3hEI3fWpAP5aHte58akANgHevpnxqQPQExC1ffGpA4oQ8Lhh8akAySu6o0XtqQGYTQ5aLe2pA//Xm9UV7akDaY8HAAHtqQGULye+7empAz9iig3d6akBEz1d9M3pqQFnAktTveWpAbJhTgax5akC85pGFaXlqQNJaeNkmeWpAYPSddeR4akA2uCldonhqQKue2YhgeGpAhGiQ8R54akCBRqya3XdqQHF1Uoecd2pAVOS+r1t3akAUCBQMG3dqQFAgEp/admpA6H14YZp2akDdei9LWnZqQF3CnF0admpAn0Uymtp1akBXFPH5mnVqQIp593VbdWpA8Pw/EBx1akA4x+W/3HRqQPd+wX+ddGpAC9HFV150akBSroU8H3RqQMFxZB3gc2pAorWf8qBzakBwTOy0YXNqQC3mfE0ic2pAj5fLpOJyakAvPfC2onJqQNCv91dicmpAxss8XSFyakDf32jI33FqQHFz1p2dcWpAoMDFtlpxakCtqwjsFnFqQJkG4ELScGpAU+Xop4xwakD3190DRnBqQNNVKVn+b2pA8/B/N7xGakCp+DhfPUZqQBYMLma9RWpAsGvWVjxFakCJMoEpukRqQHflG9Q2RGpAxFROZLJDakAzml7ZLENqQJzPmzCmQmpADnxyfx5CakDGt1DolUFqQCwUIUX4P2pAAaRrquE+akAI1XxBPT1qQCZwN8uwPGpANBhpZSQ8akDjK3UamDtqQGUIo/MLO2pAVqhaF4A6akCnTkmQ9DlqQBKUBmdpOWpAiFp0ud44akDR8didVDhqQAB2khrLN2pAJy4ANUI3akCUIpP9uTZqQFQCknkyNmpAn+ZVq6s1akAGdA+bJTVqQNn36UqgNGpAdVtUuRs0akDpa0LplzNqQIPi3OEUM2pAflp+ppIyakDfI2c3ETJqQFwu4paQMWpANOaExhAxakBPUgfEkTBqQA+l/ogTMGpAQAy9DJYvakBp0y5LGS9qQEv6OT2dLmpAtmY+1CEuakCEGToMpy1qQF9wlOAsLWpAE0J8QLMsakDmY0gqOixqQCnTFp3BK2pAPWIxh0krakD7d7LV0SpqQOzDVIdaKmpAPk/DmOMpakBBfjL0bClqQFgKMpn2KGpAX5G5h4AoakBrHUKpCihqQI8XteeUJ2pABK9lRh8nakAHwrvGqSZqQE1vZ1I0JmpAnSiq7b4lakApQj6dSSVqQFwfNEzUJGpAFRfjAl8kakB5VlzL6SNqQHnyqJJ0I2pApmUORv8iakAiVuvyiSJqQOBzGKcUImpA/tS0Up8hakBbQ+oJKiFqQPy3xeG0IGpACqHWzT8gakBYYZTDyh9qQPa8fuBVH2pAFmbXQeEeakA31QjfbB5qQFgMYtz4HWpAQ1vnXYUdakAjU0RdEh1qQJsmnASgHGpAz+7gey4cakAKgk27vRtqQFrI4LtNG2pAHPqgp94aakAwTESlcBpqQHryKagDGmpANJiI15cZakC1u89YLRlqQPnTvB7EGGpA62uhHFwYakBn7J5z9RdqQMB63EOQF2pAlL2ZfCwXakABD+E5yhZqQBRsEZFpFmpAjSGXaAoWakCrZBvZrBVqQJNJG/lQFWpArh60sfYUakDSPg2B3u9pQLkC81Rb72lAxf5kx9nuaUCollm8We5pQJ0T9Dvb7WlACk6uS17taUC3NlPL4uxpQMLn3Zto7GlAWQQWwO/raUDRcIg7eOtpQGRUI+4B62lA2b2K1YzqaUAwTnbwGOppQHgxCSGm6WlAaXtNZjTpaUAFLBe+w+hpQPZjmgtU6GlAKQ6+M+XnaUAle6Uxd+dpQI2RjAAK52lA7Rrnhp3maUCXDBC+MeZpQNPQo5/G5WlAzHp/FFzlaUCX1iIH8uRpQDhnLW+I5GlAj3GgRB/kaUCAen10tuNpQFDmZPZN42lAa4zDwuXiaUBmisfKfeJpQP1wpgUW4mlAuz7ta67haUAxpa/zRuFpQKY7UZbf4GlACF7hTXjgaUCEp28VEeBpQK+Ecuup32lAvDlOy0LfaUBxPHix295pQH5U6Z503mlAeItklg3eaUCJelqUpt1pQHwpz5Q/3WlAOMK8ndjcaUDS95SrcdxpQChHOLsK3GlAqT0+JtbaaUCX93xbb9ppQGJxyacI2mlAtQ8ECaLZaUDyAKZ8O9lpQAFwhQ/V2GlAJXSIvm7YaUBWaNiHCNhpQPjItXmi12lAT6gSozzXaUD1RH0B19ZpQCzYmpBx1mlA9hMdXwzWaUCCV+9rp9VpQGMhMbVC1WlAaJFdSd7UaUAhFL0netRpQIVyN08W1GlAjpitzbLTaUDmQFixT9NpQFqkmPjs0mlAdnvfoIrSaUBZFpu2KNJpQIqdJTjH0WlAA6WoImbRaUBvG3aABdFpQJ+i6Ful0GlA/0TJsUXQaUBVw6x+5s9pQB2odsuHz2lAJnCSlCnPaUDSvLrVy85pQChh15VuzmlAHzWd0RHOaUB/gMWEtc1pQB1uXrRZzWlAjE33ZP7MaUAlBW2To8xpQAggRj1JzGlAO0izZ+/LaUCYRnYRlstpQPTfmjg9y2lAqJ2Z4OTKaUCBfQsMjcppQHAwDLg1ymlA7Opo4d7JaUC0l8WIiMlpQCeCt6syyWlA1PIuR93IaUB2sddZiMhpQKJyJ+AzyGlA6qh81t/HaUB1WyU7jMdpQIHGznHXp2lA1qOaRmCnaUAOs+iB6aZpQJf0aCBzpmlAoSzgIP2laUCN8bmBh6VpQHssWD4SpWlAGnqmUZ2kaUBsLHu6KKRpQOA/2Xe0o2lAWyIFhUCjaUBEVVbizKJpQDvbm49ZomlA92DkhuahaUAW5WPHc6FpQNYBEVABoWlAqcHnGY+gaUAAIo0dHaBpQCiAB1mrn2lApSE9yjmfaUBpKZhpyJ5pQHyxpjRXnmlAurO5KOadaUCyEFA9dZ1pQM5an2kEnWlAVaY6qpOcaUDOwgb8IpxpQH+nZFeym2lACIO2uUGbaUBMrCUh0ZppQMKNx4dgmmlAb1A26++ZaUBDopxJf5lpQBTNE54OmWlAwwgN5J2YaUCHgAkaLZhpQOPpHz68l2lACST2S0uXaUDsB+BC2pZpQEZbpSJplmlAxMe/6PeVaUAlnj+ThpVpQGnLFyIVlWlATam3laOUaUAuSSDuMZRpQAuukyvAk2lADWu9Tk6TaUAKDOxY3JJpQLHkVktqkmlAxXaZJ/iRaUDbLh3whZFpQOBXQagTkWlAewvqUqGQaUCOwMzzLpBpQDWMmpC8j2lAd77zLEqPaUCvmvbL145pQOaGeHJljmlAg6lRJfONaUBxsYnjgI1pQJ7jqasOjWlABEydgZyMaUCb+4tkKoxpQLrb5FK4i2lA79rAT0aLaUCvuE1a1IppQA9MH3FiimlAnWP1lvCJaUCjXOfOfolpQFxcFRcNiWlADRh0bZuIaUCdPu3UKYhpQEl5QUu4h2lAs0/4zUaHaUB26BBg1YZpQPig1ARkhmlAzM7xufKFaUDGuiB9gYVpQOCF4FEQhWlAIYedNp+EaUCVZH8pLoRpQLc6Gy69g2lALM1IQ0yDaUAKE1xn24JpQPQdH51qgmlADwpe5/mBaUAp9+VDiYFpQP8RhbAYgWlA8Id5MKiAaUCBJ5nCN4BpQEhlxWXHf2lAVPHZHVd/aUCUvefv5n5pQD0Hmt52fmlA8Kdy7QZ+aUBeOC4kl31pQG7Fw4YnfWlAf/j0GLh8aUBqGhbiSHxpQFDfM+bZe2lATo3EQ/ldaUACOqf9aF1pQKpWHgTZXGlAfNr7WUlcaUD1crIBultpQGX8MAArW2lAusx5VpxaaUB047QEDlppQNslTg2AWWlAhZAFcvJYaUDAXMUxZVhpQFBSVUvYV2lAa6Wkv0tXaUDSSY6Nv1ZpQILITrMzVmlAdicdMKhVaUA4MT8CHVVpQPV1TyiSVGlAk03boAdUaUCXkSBpfVNpQN6SBH/zUmlA+NhC4WlSaUDPA2eO4FFpQMUuQoZXUWlA1k7rx85QaUBDGSJRRlBpQGB6niC+T2lAegPIODZPaUAU8rmbrk5pQOPZaUcnTmlAlP8yP6BNaUDr3DSHGU1pQA+AZh6TTGlACZnFCw1MaUAYIPNVh0tpQBSGDfoBS2lA2FEr9XxKaUB/lsJP+ElpQNastBF0SWlA9RA2OPBIaUCOhRnNbEhpQHBGO9npR2lA7f59WGdHaUAswAJG5UZpQHLY46hjRmlAWfHIhuJFaUBHE//WYUVpQBJJnp/hRGlAw5m+5WFEaUDrEDCf4kNpQHjaG9NjQ2lA3K96h+VCaUB6+y2yZ0JpQJReKkvqQWlAIi7kW21BaUBleczt8EBpQJzQc/p0QGlAKtfsjvk/aUAeWCi4fj9pQOvH5nAEP2lAjXbis4o+aUD6YdOOET5pQKGXSQ+ZPWlAHMBELyE9aUD/nLT5qTxpQAMR0ngzPGlAtja6o707aUBnsE6ASDtpQFeUzhPUOmlA1VvdUmA6aUBU5rwx7TlpQDtHvbJ6OWlArE2Y1wg5aUBkyjKTlzhpQJtUK+UmOGlAZxzWzLY3aUCnBt08RzdpQCantSjYNmlAdYIOj2k2aUD+lCxu+zVpQM5JrLmNNWlAz5PXbyA1aUA2AuCOszRpQKLfcAtHNGlAyQVB49ozaUBKC8YTbzNpQEgjG5IDM2lARAZSVJgyaUCfo5BWLTJpQNCP4pTCMWlATdEoBlgxaUAAtkyl7TBpQLbHgm2DMGlAwq4VVxkwaUB9z0Bbry9pQKPnT3VFL2lAo7Y/odsuaUCkWYfacS5pQFvZrxwILmlAKhvxY54taUCK6hukwQ9pQBWnuA42D2lAmZeddaoOaUDrHxPYHg5pQPZhiDaTDWlACMfZjAcNaUDrRkDXewxpQPrsJhjwC2lANhKvS2QLaUCvArZt2AppQIFuAoJMCmlA0PzmjcAJaUDnecaNNAlpQAVu83yoCGlAHtS4XhwIaUD4CuoskAdpQEhliOQDB2lAE9BIjncGaUAjGB4n6wVpQBggkKxeBWlALNWQKNIEaUAgwgelRQRpQCArZB65A2lAQidwkiwDaUADHjsMoAJpQBZPlIYTAmlAyrHs+4YBaUAajZh0+gBpQMxaAPhtAGlA9x0Sf+H/aEBDVKACVf9oQAifWIrI/mhA/v+RDTz+aEBuEAGCr/1oQIAD1uwi/WhAiTP/Q5b8aEBEzwB8CfxoQD32Pph8+2hAtWwsne/6aECLHICAYvpoQB8LLjjV+WhAwYSgyUf5aEA31PEtuvhoQLgxhV4s+GhAAIdhYp73aEDAqUJBEPdoQMLUe/aB9mhA+NQJfvP1aECEj9XhZPVoQLXAVyLW9GhAL93gP0f0aEB9riZGuPNoQGNvmDkp82hAVvCVHpryaECx334CC/JoQBYTEfR78WhAu6aZ/ezwaECWlhMpXvBoQFpzFIbP72hA/mFOIkHvaEDmGH4Ks+5oQMRqNU0l7mhAIuV7+pftaECrM5wfC+1oQFP6fst+7GhA3A3REPPraEB3ZfT/Z+toQMcbYKnd6mhABeyUHlTqaEA4pXBxy+loQNS+IbND6WhA6xXm87zoaEAwUh1EN+hoQO5uKrOy52hAobUKTi/naEAIq5IfreZoQLmUhDAs5mhA9N9th6zlaECMyJcnLuVoQIqNpBGx5GhAIXVPRjXkaEB/SHvEuuNoQFci/YZB42hAIrqQh8niaEBXX4C9UuJoQIXxGxzd4WhApBY/lWjhaEA=", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -53956,1987 +3550,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "exSuR+F6hD97FK5H4XqUP7gehetRuJ4/exSuR+F6pD+amZmZmZmpP7gehetRuK4/7FG4HoXrsT97FK5H4Xq0PwrXo3A9Crc/mpmZmZmZuT8pXI/C9Si8P7gehetRuL4/pHA9CtejwD/sUbgehevBPzMzMzMzM8M/exSuR+F6xD/D9Shcj8LFPwrXo3A9Csc/UrgehetRyD+amZmZmZnJP+F6FK5H4co/KVyPwvUozD9xPQrXo3DNP7gehetRuM4/AAAAAAAA0D+kcD0K16PQP0jhehSuR9E/7FG4HoXr0T+PwvUoXI/SPzMzMzMzM9M/16NwPQrX0z97FK5H4XrUPx+F61G4HtU/w/UoXI/C1T9mZmZmZmbWPwrXo3A9Ctc/rkfhehSu1z9SuB6F61HYP/YoXI/C9dg/mpmZmZmZ2T89CtejcD3aP+F6FK5H4do/hetRuB6F2z8pXI/C9SjcP83MzMzMzNw/cT0K16Nw3T8UrkfhehTeP7gehetRuN4/XI/C9Shc3z8AAAAAAADgP1K4HoXrUeA/pHA9Ctej4D/2KFyPwvXgP0jhehSuR+E/mpmZmZmZ4T/sUbgehevhPz0K16NwPeI/j8L1KFyP4j/hehSuR+HiPzMzMzMzM+M/hetRuB6F4z/Xo3A9CtfjPylcj8L1KOQ/exSuR+F65D/NzMzMzMzkPx+F61G4HuU/cT0K16Nw5T/D9Shcj8LlPxSuR+F6FOY/ZmZmZmZm5j+4HoXrUbjmPwrXo3A9Cuc/XI/C9Shc5z+uR+F6FK7nPwAAAAAAAOg/UrgehetR6D+kcD0K16PoP/YoXI/C9eg/SOF6FK5H6T+amZmZmZnpP+xRuB6F6+k/PQrXo3A96j+PwvUoXI/qP+F6FK5H4eo/MzMzMzMz6z+F61G4HoXrP9ejcD0K1+s/KVyPwvUo7D97FK5H4XrsP83MzMzMzOw/H4XrUbge7T9xPQrXo3DtP8P1KFyPwu0/FK5H4XoU7j9mZmZmZmbuP7gehetRuO4/CtejcD0K7z9cj8L1KFzvP65H4XoUru8/AAAAAAAA8D8pXI/C9SjwP1K4HoXrUfA/exSuR+F68D+kcD0K16PwP83MzMzMzPA/9ihcj8L18D8fhetRuB7xP0jhehSuR/E/cT0K16Nw8T+amZmZmZnxP8P1KFyPwvE/7FG4HoXr8T8UrkfhehTyPz0K16NwPfI/ZmZmZmZm8j+PwvUoXI/yP7gehetRuPI/4XoUrkfh8j8K16NwPQrzPzMzMzMzM/M/XI/C9Shc8z+F61G4HoXzP65H4XoUrvM/16NwPQrX8z8AAAAAAAD0Pylcj8L1KPQ/UrgehetR9D97FK5H4Xr0P6RwPQrXo/Q/zczMzMzM9D/2KFyPwvX0Px+F61G4HvU/SOF6FK5H9T9xPQrXo3D1P5qZmZmZmfU/w/UoXI/C9T/sUbgehev1PxSuR+F6FPY/PQrXo3A99j9mZmZmZmb2P4/C9Shcj/Y/uB6F61G49j/hehSuR+H2PwrXo3A9Cvc/MzMzMzMz9z9cj8L1KFz3P4XrUbgehfc/rkfhehSu9z/Xo3A9Ctf3PwAAAAAAAPg/KVyPwvUo+D9SuB6F61H4P3sUrkfhevg/pHA9Ctej+D/NzMzMzMz4P/YoXI/C9fg/H4XrUbge+T9I4XoUrkf5P3E9CtejcPk/mpmZmZmZ+T/D9Shcj8L5P+xRuB6F6/k/FK5H4XoU+j89CtejcD36P2ZmZmZmZvo/j8L1KFyP+j+4HoXrUbj6P+F6FK5H4fo/CtejcD0K+z8zMzMzMzP7P1yPwvUoXPs/hetRuB6F+z+uR+F6FK77P9ejcD0K1/s/AAAAAAAA/D8pXI/C9Sj8P1K4HoXrUfw/exSuR+F6/D+kcD0K16P8P83MzMzMzPw/9ihcj8L1/D8fhetRuB79P0jhehSuR/0/cT0K16Nw/T+amZmZmZn9P8P1KFyPwv0/7FG4HoXr/T8UrkfhehT+Pz0K16NwPf4/ZmZmZmZm/j+PwvUoXI/+P7gehetRuP4/4XoUrkfh/j8K16NwPQr/PzMzMzMzM/8/XI/C9Shc/z+F61G4HoX/P65H4XoUrv8/16NwPQrX/z8AAAAAAAAAQBSuR+F6FABAKVyPwvUoAEA9CtejcD0AQFK4HoXrUQBAZmZmZmZmAEB7FK5H4XoAQI/C9ShcjwBApHA9CtejAEC4HoXrUbgAQM3MzMzMzABA4XoUrkfhAED2KFyPwvUAQArXo3A9CgFAH4XrUbgeAUAzMzMzMzMBQEjhehSuRwFAXI/C9ShcAUBxPQrXo3ABQIXrUbgehQFAmpmZmZmZAUCuR+F6FK4BQNejcD0K1wFA7FG4HoXrAUAAAAAAAAACQBSuR+F6FAJAKVyPwvUoAkA9CtejcD0CQFK4HoXrUQJAZmZmZmZmAkB7FK5H4XoCQI/C9ShcjwJApHA9CtejAkC4HoXrUbgCQM3MzMzMzAJA4XoUrkfhAkD2KFyPwvUCQArXo3A9CgNAH4XrUbgeA0AzMzMzMzMDQEjhehSuRwNAXI/C9ShcA0BxPQrXo3ADQIXrUbgehQNAmpmZmZmZA0CuR+F6FK4DQMP1KFyPwgNA16NwPQrXA0DsUbgehesDQAAAAAAAAARAFK5H4XoUBEApXI/C9SgEQD0K16NwPQRAUrgehetRBEBmZmZmZmYEQHsUrkfhegRAj8L1KFyPBECkcD0K16MEQLgehetRuARAzczMzMzMBEDhehSuR+EEQPYoXI/C9QRACtejcD0KBUAfhetRuB4FQDMzMzMzMwVASOF6FK5HBUBcj8L1KFwFQHE9CtejcAVAhetRuB6FBUCamZmZmZkFQK5H4XoUrgVAw/UoXI/CBUDXo3A9CtcFQOxRuB6F6wVAAAAAAAAABkAUrkfhehQGQClcj8L1KAZAPQrXo3A9BkBSuB6F61EGQGZmZmZmZgZAexSuR+F6BkCPwvUoXI8GQKRwPQrXowZAuB6F61G4BkDNzMzMzMwGQOF6FK5H4QZA9ihcj8L1BkAK16NwPQoHQB+F61G4HgdAMzMzMzMzB0BI4XoUrkcHQFyPwvUoXAdAcT0K16NwB0CF61G4HoUHQJqZmZmZmQdArkfhehSuB0DD9Shcj8IHQNejcD0K1wdA7FG4HoXrB0AAAAAAAAAIQBSuR+F6FAhAKVyPwvUoCEA9CtejcD0IQFK4HoXrUQhAZmZmZmZmCEB7FK5H4XoIQI/C9ShcjwhApHA9CtejCEC4HoXrUbgIQM3MzMzMzAhA4XoUrkfhCED2KFyPwvUIQArXo3A9CglAH4XrUbgeCUAzMzMzMzMJQEjhehSuRwlAXI/C9ShcCUBxPQrXo3AJQIXrUbgehQlAmpmZmZmZCUCuR+F6FK4JQMP1KFyPwglA16NwPQrXCUDsUbgehesJQAAAAAAAAApAFK5H4XoUCkApXI/C9SgKQD0K16NwPQpAUrgehetRCkBmZmZmZmYKQHsUrkfhegpAj8L1KFyPCkCkcD0K16MKQLgehetRuApAzczMzMzMCkDhehSuR+EKQPYoXI/C9QpACtejcD0KC0AfhetRuB4LQDMzMzMzMwtASOF6FK5HC0Bcj8L1KFwLQHE9CtejcAtAhetRuB6FC0CamZmZmZkLQK5H4XoUrgtAw/UoXI/CC0DXo3A9CtcLQOxRuB6F6wtAAAAAAAAADEAUrkfhehQMQClcj8L1KAxAPQrXo3A9DEBSuB6F61EMQGZmZmZmZgxAexSuR+F6DECPwvUoXI8MQKRwPQrXowxAuB6F61G4DEDNzMzMzMwMQOF6FK5H4QxA9ihcj8L1DEAK16NwPQoNQB+F61G4Hg1AMzMzMzMzDUBI4XoUrkcNQFyPwvUoXA1AcT0K16NwDUCF61G4HoUNQJqZmZmZmQ1ArkfhehSuDUDD9Shcj8INQNejcD0K1w1A7FG4HoXrDUAAAAAAAAAOQBSuR+F6FA5AKVyPwvUoDkA9CtejcD0OQFK4HoXrUQ5AZmZmZmZmDkB7FK5H4XoOQI/C9Shcjw5ApHA9CtejDkC4HoXrUbgOQM3MzMzMzA5A4XoUrkfhDkD2KFyPwvUOQArXo3A9Cg9AH4XrUbgeD0AzMzMzMzMPQEjhehSuRw9AXI/C9ShcD0CamZmZmZkPQK5H4XoUrg9Aw/UoXI/CD0DXo3A9CtcPQOxRuB6F6w9AAAAAAAAAEEAK16NwPQoQQBSuR+F6FBBAH4XrUbgeEEApXI/C9SgQQDMzMzMzMxBAPQrXo3A9EEBI4XoUrkcQQFK4HoXrURBAXI/C9ShcEEBmZmZmZmYQQHE9CtejcBBAexSuR+F6EECF61G4HoUQQI/C9ShcjxBAmpmZmZmZEECkcD0K16MQQK5H4XoUrhBAuB6F61G4EEDD9Shcj8IQQM3MzMzMzBBA16NwPQrXEEDhehSuR+EQQOxRuB6F6xBA9ihcj8L1EEAAAAAAAAARQArXo3A9ChFAFK5H4XoUEUAfhetRuB4RQClcj8L1KBFAMzMzMzMzEUA9CtejcD0RQEjhehSuRxFAUrgehetREUBcj8L1KFwRQGZmZmZmZhFAcT0K16NwEUB7FK5H4XoRQIXrUbgehRFAj8L1KFyPEUCamZmZmZkRQKRwPQrXoxFArkfhehSuEUC4HoXrUbgRQMP1KFyPwhFAzczMzMzMEUDXo3A9CtcRQOF6FK5H4RFA7FG4HoXrEUD2KFyPwvURQAAAAAAAABJACtejcD0KEkAUrkfhehQSQB+F61G4HhJAKVyPwvUoEkAzMzMzMzMSQD0K16NwPRJASOF6FK5HEkBSuB6F61ESQFyPwvUoXBJAZmZmZmZmEkBxPQrXo3ASQHsUrkfhehJAhetRuB6FEkCPwvUoXI8SQJqZmZmZmRJApHA9CtejEkCuR+F6FK4SQLgehetRuBJAw/UoXI/CEkDNzMzMzMwSQNejcD0K1xJA4XoUrkfhEkDsUbgehesSQPYoXI/C9RJAAAAAAAAAE0AK16NwPQoTQBSuR+F6FBNAH4XrUbgeE0ApXI/C9SgTQDMzMzMzMxNAPQrXo3A9E0BI4XoUrkcTQFK4HoXrURNAXI/C9ShcE0BmZmZmZmYTQHE9CtejcBNAexSuR+F6E0CF61G4HoUTQI/C9ShcjxNAmpmZmZmZE0CkcD0K16MTQK5H4XoUrhNAuB6F61G4E0DD9Shcj8ITQM3MzMzMzBNA16NwPQrXE0DhehSuR+ETQOxRuB6F6xNA9ihcj8L1E0AAAAAAAAAUQArXo3A9ChRAFK5H4XoUFEAfhetRuB4UQClcj8L1KBRAMzMzMzMzFEA9CtejcD0UQEjhehSuRxRAUrgehetRFEBcj8L1KFwUQGZmZmZmZhRAcT0K16NwFEB7FK5H4XoUQIXrUbgehRRAj8L1KFyPFECamZmZmZkUQLgehetRuBRAzczMzMzMFEDsUbgehesUQPYoXI/C9RRAAAAAAAAAFUAK16NwPQoVQBSuR+F6FBVAH4XrUbgeFUApXI/C9SgVQDMzMzMzMxVAPQrXo3A9FUBI4XoUrkcVQFK4HoXrURVAXI/C9ShcFUBmZmZmZmYVQHE9CtejcBVAexSuR+F6FUCF61G4HoUVQI/C9ShcjxVAmpmZmZmZFUCkcD0K16MVQK5H4XoUrhVAuB6F61G4FUDD9Shcj8IVQM3MzMzMzBVA16NwPQrXFUDhehSuR+EVQOxRuB6F6xVA9ihcj8L1FUAAAAAAAAAWQArXo3A9ChZAFK5H4XoUFkAfhetRuB4WQClcj8L1KBZAMzMzMzMzFkA9CtejcD0WQEjhehSuRxZAUrgehetRFkBcj8L1KFwWQGZmZmZmZhZAcT0K16NwFkB7FK5H4XoWQIXrUbgehRZAj8L1KFyPFkCamZmZmZkWQKRwPQrXoxZArkfhehSuFkC4HoXrUbgWQMP1KFyPwhZAzczMzMzMFkDXo3A9CtcWQOF6FK5H4RZA7FG4HoXrFkD2KFyPwvUWQAAAAAAAABdACtejcD0KF0AUrkfhehQXQB+F61G4HhdAKVyPwvUoF0AzMzMzMzMXQD0K16NwPRdASOF6FK5HF0BSuB6F61EXQFyPwvUoXBdAZmZmZmZmF0BxPQrXo3AXQHsUrkfhehdAhetRuB6FF0CPwvUoXI8XQJqZmZmZmRdApHA9CtejF0CuR+F6FK4XQLgehetRuBdAw/UoXI/CF0DNzMzMzMwXQNejcD0K1xdA4XoUrkfhF0DsUbgehesXQPYoXI/C9RdAAAAAAAAAGEAK16NwPQoYQBSuR+F6FBhAH4XrUbgeGEApXI/C9SgYQDMzMzMzMxhAPQrXo3A9GEBI4XoUrkcYQFK4HoXrURhAXI/C9ShcGEBmZmZmZmYYQHE9CtejcBhAexSuR+F6GECF61G4HoUYQI/C9ShcjxhAmpmZmZmZGECkcD0K16MYQK5H4XoUrhhAuB6F61G4GEDD9Shcj8IYQM3MzMzMzBhA16NwPQrXGEDhehSuR+EYQOxRuB6F6xhA9ihcj8L1GEAAAAAAAAAZQArXo3A9ChlAFK5H4XoUGUAfhetRuB4ZQClcj8L1KBlAMzMzMzMzGUA9CtejcD0ZQEjhehSuRxlAUrgehetRGUBcj8L1KFwZQGZmZmZmZhlAcT0K16NwGUB7FK5H4XoZQIXrUbgehRlAj8L1KFyPGUCamZmZmZkZQKRwPQrXoxlArkfhehSuGUC4HoXrUbgZQMP1KFyPwhlAzczMzMzMGUDXo3A9CtcZQOF6FK5H4RlA7FG4HoXrGUD2KFyPwvUZQAAAAAAAABpACtejcD0KGkAUrkfhehQaQB+F61G4HhpAKVyPwvUoGkAzMzMzMzMaQD0K16NwPRpAXI/C9ShcGkBmZmZmZmYaQHE9CtejcBpAexSuR+F6GkCF61G4HoUaQI/C9ShcjxpAmpmZmZmZGkCkcD0K16MaQK5H4XoUrhpAuB6F61G4GkDD9Shcj8IaQM3MzMzMzBpA16NwPQrXGkDhehSuR+EaQOxRuB6F6xpA9ihcj8L1GkAAAAAAAAAbQArXo3A9ChtAFK5H4XoUG0AfhetRuB4bQClcj8L1KBtAMzMzMzMzG0A9CtejcD0bQEjhehSuRxtAUrgehetRG0Bcj8L1KFwbQGZmZmZmZhtAcT0K16NwG0B7FK5H4XobQIXrUbgehRtAj8L1KFyPG0CamZmZmZkbQKRwPQrXoxtArkfhehSuG0C4HoXrUbgbQMP1KFyPwhtAzczMzMzMG0DXo3A9CtcbQOF6FK5H4RtA7FG4HoXrG0D2KFyPwvUbQAAAAAAAABxACtejcD0KHEAUrkfhehQcQB+F61G4HhxAKVyPwvUoHEAzMzMzMzMcQD0K16NwPRxASOF6FK5HHEBSuB6F61EcQFyPwvUoXBxAZmZmZmZmHEBxPQrXo3AcQHsUrkfhehxAhetRuB6FHECPwvUoXI8cQJqZmZmZmRxApHA9CtejHECuR+F6FK4cQLgehetRuBxAw/UoXI/CHEDNzMzMzMwcQNejcD0K1xxA4XoUrkfhHEDsUbgehescQPYoXI/C9RxAAAAAAAAAHUAK16NwPQodQBSuR+F6FB1AH4XrUbgeHUApXI/C9SgdQDMzMzMzMx1APQrXo3A9HUBI4XoUrkcdQFK4HoXrUR1AXI/C9ShcHUBmZmZmZmYdQHE9CtejcB1AexSuR+F6HUCF61G4HoUdQI/C9Shcjx1AmpmZmZmZHUCkcD0K16MdQK5H4XoUrh1AuB6F61G4HUDD9Shcj8IdQM3MzMzMzB1A16NwPQrXHUDhehSuR+EdQOxRuB6F6x1A9ihcj8L1HUAAAAAAAAAeQArXo3A9Ch5AFK5H4XoUHkAfhetRuB4eQClcj8L1KB5AMzMzMzMzHkA9CtejcD0eQEjhehSuRx5AUrgehetRHkBcj8L1KFweQGZmZmZmZh5AcT0K16NwHkB7FK5H4XoeQIXrUbgehR5Aj8L1KFyPHkCamZmZmZkeQKRwPQrXox5ArkfhehSuHkC4HoXrUbgeQMP1KFyPwh5AzczMzMzMHkDXo3A9CtceQOF6FK5H4R5A7FG4HoXrHkD2KFyPwvUeQAAAAAAAAB9ACtejcD0KH0AUrkfhehQfQB+F61G4Hh9AKVyPwvUoH0AzMzMzMzMfQD0K16NwPR9ASOF6FK5HH0BSuB6F61EfQFyPwvUoXB9AZmZmZmZmH0BxPQrXo3AfQHsUrkfheh9AhetRuB6FH0CPwvUoXI8fQJqZmZmZmR9ApHA9CtejH0CuR+F6FK4fQLgehetRuB9Aw/UoXI/CH0DNzMzMzMwfQNejcD0K1x9A4XoUrkfhH0DsUbgehesfQPYoXI/C9R9AAAAAAAAAIECF61G4HgUgQArXo3A9CiBAj8L1KFwPIEAUrkfhehQgQJqZmZmZGSBAH4XrUbgeIECkcD0K1yMgQClcj8L1KCBArkfhehQuIEAzMzMzMzMgQLgehetROCBAPQrXo3A9IEDD9Shcj0IgQEjhehSuRyBAzczMzMxMIEBSuB6F61EgQNejcD0KVyBAXI/C9ShcIEDhehSuR2EgQGZmZmZmZiBA7FG4HoVrIEBxPQrXo3AgQPYoXI/CdSBAexSuR+F6IEAAAAAAAIAgQIXrUbgehSBACtejcD2KIECPwvUoXI8gQBSuR+F6lCBAmpmZmZmZIEAfhetRuJ4gQKRwPQrXoyBAKVyPwvWoIECuR+F6FK4gQDMzMzMzsyBAuB6F61G4IEA9CtejcL0gQMP1KFyPwiBASOF6FK7HIEDNzMzMzMwgQFK4HoXr0SBA16NwPQrXIEBcj8L1KNwgQOF6FK5H4SBAZmZmZmbmIEDsUbgehesgQHE9Ctej8CBA9ihcj8L1IEB7FK5H4fogQAAAAAAAACFAhetRuB4FIUAK16NwPQohQI/C9ShcDyFAFK5H4XoUIUCamZmZmRkhQB+F61G4HiFApHA9CtcjIUApXI/C9SghQK5H4XoULiFAMzMzMzMzIUC4HoXrUTghQD0K16NwPSFAw/UoXI9CIUBI4XoUrkchQM3MzMzMTCFAUrgehetRIUDXo3A9ClchQFyPwvUoXCFA4XoUrkdhIUBmZmZmZmYhQOxRuB6FayFAcT0K16NwIUD2KFyPwnUhQHsUrkfheiFAAAAAAACAIUCF61G4HoUhQArXo3A9iiFAj8L1KFyPIUAUrkfhepQhQJqZmZmZmSFAH4XrUbieIUCkcD0K16MhQClcj8L1qCFArkfhehSuIUAzMzMzM7MhQLgehetRuCFAPQrXo3C9IUDD9Shcj8IhQEjhehSuxyFAzczMzMzMIUBSuB6F69EhQNejcD0K1yFAXI/C9SjcIUDhehSuR+EhQGZmZmZm5iFA7FG4HoXrIUBxPQrXo/AhQPYoXI/C9SFAexSuR+H6IUAAAAAAAAAiQIXrUbgeBSJACtejcD0KIkCPwvUoXA8iQBSuR+F6FCJAmpmZmZkZIkAfhetRuB4iQKRwPQrXIyJAKVyPwvUoIkCuR+F6FC4iQDMzMzMzMyJAuB6F61E4IkA9CtejcD0iQMP1KFyPQiJASOF6FK5HIkDNzMzMzEwiQFK4HoXrUSJA16NwPQpXIkBcj8L1KFwiQOF6FK5HYSJAZmZmZmZmIkDsUbgehWsiQHE9CtejcCJA9ihcj8J1IkB7FK5H4XoiQAAAAAAAgCJAhetRuB6FIkAK16NwPYoiQI/C9ShcjyJAFK5H4XqUIkCamZmZmZkiQB+F61G4niJApHA9CtejIkApXI/C9agiQK5H4XoUriJAMzMzMzOzIkC4HoXrUbgiQD0K16NwvSJAw/UoXI/CIkBI4XoUrsciQM3MzMzMzCJAUrgehevRIkDXo3A9CtciQFyPwvUo3CJA4XoUrkfhIkBmZmZmZuYiQOxRuB6F6yJAcT0K16PwIkD2KFyPwvUiQHsUrkfh+iJAAAAAAAAAI0CF61G4HgUjQArXo3A9CiNAj8L1KFwPI0AUrkfhehQjQJqZmZmZGSNAH4XrUbgeI0CkcD0K1yMjQClcj8L1KCNArkfhehQuI0AzMzMzMzMjQLgehetROCNAPQrXo3A9I0DD9Shcj0IjQEjhehSuRyNAzczMzMxMI0BSuB6F61EjQNejcD0KVyNAXI/C9ShcI0DhehSuR2EjQGZmZmZmZiNA7FG4HoVrI0BxPQrXo3AjQPYoXI/CdSNAexSuR+F6I0AAAAAAAIAjQIXrUbgehSNACtejcD2KI0CPwvUoXI8jQBSuR+F6lCNAmpmZmZmZI0AfhetRuJ4jQKRwPQrXoyNAKVyPwvWoI0CuR+F6FK4jQDMzMzMzsyNAuB6F61G4I0A9CtejcL0jQMP1KFyPwiNASOF6FK7HI0DNzMzMzMwjQFK4HoXr0SNA16NwPQrXI0Bcj8L1KNwjQOF6FK5H4SNAZmZmZmbmI0DsUbgehesjQHE9Ctej8CNA9ihcj8L1I0A=", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - 219.79372444840757, - 219.7732375651953, - 219.75266086666804, - 219.73199132334284, - 219.71122494988762, - 219.69035053637108, - 219.6693557231388, - 219.64823354708003, - 219.62696867494037, - 219.60554464649837, - 219.5839516945605, - 219.5621711105556, - 219.54018279241907, - 219.51797398039682, - 219.4955314642239, - 219.472833368698, - 219.44985667112678, - 219.4265859317826, - 219.40299663190007, - 219.37906321235133, - 219.3547684005782, - 219.3300947858977, - 219.30501625038187, - 219.2795062424841, - 219.25354728560245, - 219.22711417426765, - 219.20018154635378, - 219.1727324903338, - 219.14474337171671, - 219.11619094571085, - 219.08705984765302, - 219.05733522154523, - 219.02699724736595, - 218.99602664930558, - 218.96441069583818, - 218.9321330925193, - 218.89917852952104, - 218.8655369271183, - 218.83119798648394, - 218.7961488575117, - 218.76037643881068, - 218.72386917613514, - 218.68661615412526, - 218.6486056427085, - 218.60982308185976, - 218.57025746647398, - 218.52989785127102, - 218.48872989787523, - 218.44674213246466, - 218.40393083556054, - 218.36029350820067, - 218.31582355580386, - 218.2705252153255, - 218.22440322227087, - 218.17745390614522, - 218.1296748877819, - 218.08107548718806, - 218.03166493206334, - 217.98144065365497, - 217.93041405392108, - 217.87859608235254, - 217.8259834505079, - 217.77259055113686, - 217.718431070616, - 217.66350059822855, - 217.60779502605183, - 217.55132845708627, - 217.49411463652174, - 217.4361481170978, - 217.3774438903788, - 217.3180160850319, - 217.25785717032, - 217.19695935098284, - 217.13533656717652, - 217.0730024335921, - 217.00994711158145, - 216.94618493473303, - 216.88172966673574, - 216.8165690060104, - 216.75071776175216, - 216.68418994097303, - 216.6169707881614, - 216.54904514833262, - 216.4804270470125, - 216.41112983528484, - 216.3411363529864, - 216.27046102105643, - 216.19911747971076, - 216.12708644100084, - 216.05434841959385, - 215.980917067443, - 215.90680545611357, - 215.83199299578553, - 215.75649426185342, - 215.68032322648375, - 215.60345859315453, - 215.5259157421943, - 215.4477089035972, - 215.36881524880164, - 215.28921335250595, - 215.208918675558, - 216.51011750187692, - 216.45393613071462, - 216.39730768691186, - 216.3402419519139, - 216.2827255496487, - 216.2247463415136, - 216.16631482546998, - 216.1074406532502, - 216.0481110741871, - 215.98833734737536, - 215.92813047306416, - 215.8674777703394, - 215.8063903039537, - 215.7448790966106, - 215.68293123323727, - 215.62053361868828, - 215.55769638418306, - 215.4944299211995, - 215.43072141803097, - 215.36658160605703, - 215.30202157262235, - 215.23702952940994, - 215.17159448569586, - 215.105727304497, - 215.03943797027256, - 214.97271462304263, - 214.90556716819432, - 214.83800477872333, - 214.77001475588128, - 214.7016053601454, - 214.63278502889307, - 214.56354087669612, - 214.49386065085525, - 214.42375151049566, - 214.35322007380393, - 214.2822541873285, - 214.2108599092815, - 214.13904374446824, - 214.06679411403698, - 213.99410027058215, - 213.92096833031584, - 213.84740362960525, - 213.7733965086659, - 213.69895220822164, - 213.62407626819007, - 213.5487604121621, - 213.47300985083538, - 213.396831250369, - 213.32021766326588, - 213.2431632296539, - 213.16567522385324, - 213.0877603847738, - 213.0094143871413, - 212.93064387429783, - 212.85145670744598, - 212.77185030181226, - 212.69182292297208, - 212.61138297676447, - 212.5305376479591, - 212.4492869497328, - 212.36763829155242, - 212.28559882548586, - 212.20316893330963, - 212.12035357013193, - 212.03715929336474, - 211.9535875588303, - 211.86964017784013, - 211.78532197341247, - 211.70063755679422, - 211.61558964385463, - 211.5301809540705, - 211.4444146513141, - 211.35829301417388, - 211.27181757967782, - 211.18499008219996, - 211.09781235547763, - 211.0102868962944, - 210.92241402651365, - 210.83419668377866, - 210.74563904070718, - 210.65673663279918, - 210.56748723361258, - 210.47789435401626, - 210.38795856482773, - 210.29767336384992, - 210.20703356142394, - 210.1160403280586, - 210.02468538868504, - 209.9329611109866, - 209.8408690845741, - 209.74841007498728, - 209.65557482759735, - 209.56235573021013, - 209.46875464382234, - 209.37476288018345, - 209.2803725733088, - 209.1855869819565, - 209.0903987331861, - 208.9947998846725, - 208.8987950871738, - 213.71483396234754, - 213.66966739601855, - 213.62433762694883, - 213.57884656210032, - 213.53319017901316, - 213.48736465801662, - 213.4413729944449, - 213.3952187197847, - 213.34889931126287, - 213.3024132498302, - 213.25576560284824, - 213.20895520451054, - 213.16198119626648, - 213.1148493522234, - 213.0675588800613, - 213.02010911949657, - 212.972506916163, - 212.92475919332614, - 212.87686702274584, - 212.8288322096157, - 212.73235595454034, - 212.68392011377676, - 212.63535976286323, - 212.58668087426383, - 212.53788397426752, - 212.48896958146236, - 212.4399428233388, - 212.39080366038797, - 212.34155165050308, - 212.29219086595074, - 212.24272054212412, - 212.1931391758079, - 212.1434496081371, - 212.09365422843445, - 212.04375048180384, - 211.99373586542308, - 211.94361205658527, - 211.8933768313599, - 211.8430277562236, - 211.79256627284065, - 211.7419939979406, - 211.6913083362863, - 211.64050667305784, - 211.5895900825164, - 211.53855580278739, - 211.48740107961126, - 211.43612648361693, - 211.38472820584664, - 211.33320150585965, - 211.28154514108581, - 211.22975820942924, - 211.17783693463383, - 211.12577719832242, - 211.07357736911374, - 211.02123426317985, - 210.96874495372862, - 210.91610837168608, - 210.86332343607182, - 210.81038717997296, - 210.75729658831492, - 210.70405035895652, - 210.65064607182453, - 210.59708161288026, - 210.5433563149506, - 210.48946851617373, - 210.4354164457897, - 210.38119953292158, - 210.3268173527368, - 210.2722686932158, - 210.21755205265558, - 210.16266648747305, - 210.1076114938111, - 210.05238629312382, - 209.99698945166384, - 209.94141989940812, - 209.88567736682043, - 209.8297615977423, - 209.77367208069023, - 209.71740970629492, - 209.66097453872436, - 209.60436525718316, - 209.5475826928819, - 209.49062651228033, - 209.43349469599016, - 209.37618627174967, - 209.31870117842783, - 209.26103901256943, - 209.2031979712539, - 209.1451782635435, - 209.08698017779957, - 209.02860170507125, - 208.9700412359196, - 208.911299557501, - 208.85237728161732, - 208.79327324947093, - 208.73398901960596, - 208.67452589137713, - 208.6148827743041, - 208.55506202074196, - 208.49506580540515, - 211.3480120508112, - 211.30860799904278, - 211.26908190211955, - 211.22943624961542, - 211.18967099752385, - 211.1497896232531, - 211.10979550234683, - 211.0696886593782, - 211.02946938714484, - 210.98914215358673, - 210.94871138760004, - 210.9081776809241, - 210.86754687627507, - 210.8268247084301, - 210.78601206681455, - 210.7451163534622, - 210.70414460167393, - 210.66309721032658, - 210.62197452297016, - 210.580784375959, - 210.53953432392103, - 210.49822391628953, - 210.45686085021694, - 210.41545247156307, - 210.37399727325092, - 210.33249371769898, - 210.29094965489722, - 210.2493723743374, - 210.20775953976815, - 210.16611987602386, - 210.12446132535075, - 210.08278019438217, - 210.04108602402425, - 209.99938793456042, - 209.95768136387284, - 209.91596163255429, - 209.87423729328643, - 209.83251635639576, - 209.79079288762645, - 209.74907464130584, - 209.70736894677546, - 209.66566884901079, - 209.6239671233469, - 209.58227028625637, - 209.54058424129494, - 209.49890045127376, - 209.45722415409114, - 209.4155605805933, - 209.37390027324273, - 209.33224611615879, - 209.29060182574423, - 209.24895751402516, - 209.20730232244443, - 209.16563847768734, - 209.1239676017369, - 209.08227796042564, - 209.04057022509164, - 208.99884530322524, - 208.95709174651935, - 208.91529822170304, - 208.87346565268928, - 208.83159463355236, - 208.78967452086795, - 208.74770645890393, - 208.70569172333478, - 208.66362074804877, - 208.62149547472202, - 208.57931888243237, - 208.53708340171556, - 208.49478257314215, - 208.45242092930562, - 208.41000285163918, - 208.36752244248157, - 208.32498248797444, - 208.2823847247991, - 208.2397211345215, - 208.19698514782297, - 208.1541791857478, - 208.11130500623747, - 208.06835718473297, - 208.02533907076366, - 207.98225413608913, - 207.93909842142773, - 207.89587605716568, - 207.85259125124256, - 207.80924045501655, - 207.76582139142303, - 207.72233838676416, - 207.67879501938114, - 207.63518904607963, - 207.50401178892258, - 207.46017049254112, - 207.4162739991148, - 207.3723256974432, - 207.32832430140047, - 207.2842729652232, - 207.24017480657196, - 207.19602873073336, - 207.15183752491896, - 207.10760390181932, - 208.92044844891606, - 208.88693566748594, - 208.85339590288774, - 208.81983186157518, - 208.78624146359994, - 208.75262774737803, - 208.71899372042645, - 208.68533736679154, - 208.65165681830408, - 208.6179552054837, - 208.58423559749681, - 208.5504962742292, - 208.51674066370018, - 208.48297215108065, - 208.4491892126486, - 208.41539518295878, - 208.38159294572634, - 208.347780217268, - 208.3139547868046, - 208.28011845714667, - 208.24627270235513, - 208.2124148185233, - 208.17854574583362, - 208.14466619612813, - 208.1107732021496, - 208.07686401218928, - 208.04293819504338, - 208.00899582066796, - 207.97503535208344, - 207.9410567630034, - 207.90706000547712, - 207.87304385256877, - 207.83900829721887, - 207.8049534586265, - 207.77087884410307, - 207.73678428461412, - 207.7026695094106, - 207.66853385546315, - 207.63437650608185, - 207.60019553520982, - 207.56598898094214, - 207.53175606450907, - 207.49749609535323, - 207.46320620979657, - 207.42888361558576, - 207.39452782273312, - 207.360135372059, - 207.32570304699922, - 207.29123099854476, - 207.25671557140714, - 207.22215317082006, - 207.18754429250646, - 207.15288959167432, - 207.1181854142869, - 207.08342840739255, - 207.04862022041027, - 207.01375789234754, - 206.9788385118813, - 206.94386423995485, - 206.90883733679922, - 206.87375435465398, - 206.83861201050516, - 206.80341282659782, - 206.76815357465134, - 206.73283115539567, - 206.69744837650123, - 206.66200223132094, - 206.62648968111782, - 206.5909133465121, - 206.55527560977313, - 206.51957311820084, - 206.4838023173503, - 206.44796494236792, - 206.41205760524412, - 206.37607635911328, - 206.34002182379396, - 206.3038945115756, - 206.2676911608495, - 206.23140837305695, - 206.19504644581863, - 206.15860117935725, - 206.12206955936003, - 206.0854536375219, - 206.04874847432075, - 206.01194685239938, - 205.97504354929634, - 205.93803354964194, - 205.90090680067328, - 205.86365294500877, - 205.826269203575, - 205.78873821301482, - 205.75104348467514, - 205.71318473730219, - 205.6751629722034, - 205.63696473167224, - 205.59857540336336, - 205.559996156286, - 205.52122171466533, - 205.48224504424155, - 205.4430658047452, - 206.85219351936775, - 206.81987373545553, - 206.78734358727885, - 206.75460600155984, - 206.72165920177855, - 206.6885003065595, - 206.65513369800328, - 206.621560891838, - 206.58778285682664, - 206.5538074214023, - 206.5196479681575, - 206.41626017603505, - 206.34662701851323, - 206.24132931179042, - 206.20604465117327, - 206.17068587166065, - 206.13525885890246, - 206.0997677201304, - 206.06422499331282, - 206.0286351569784, - 205.9930024480292, - 205.95733524909983, - 205.9216388192624, - 205.8859165940246, - 205.85017038909214, - 205.81440280696336, - 205.77861625945266, - 205.74281200707875, - 205.70698924957304, - 205.67114904041767, - 205.6352916972345, - 205.59941466344702, - 205.56351747175177, - 205.52760310840551, - 205.49167318234592, - 205.45572561447074, - 205.41976291937715, - 205.38378629851505, - 205.3477906370488, - 205.31177014262775, - 205.27572540725467, - 205.23965628427302, - 205.2035548594999, - 205.16742229704323, - 205.1312596153315, - 205.0950584750861, - 205.05882172833034, - 205.02255178054463, - 204.98624003949888, - 204.94987752054465, - 204.91346635616614, - 204.87700843198388, - 204.84049341069544, - 204.8039241281907, - 204.76730287969443, - 204.7306187050125, - 204.6938607781988, - 204.65703201710147, - 204.620135754672, - 204.5831606689233, - 204.54611019029397, - 204.50898792749192, - 204.47178274565817, - 204.43449987992855, - 204.39714439450916, - 204.3597057867088, - 204.32217355796342, - 204.28455415052954, - 204.24685454749655, - 204.2090653104412, - 204.17119588260056, - 204.13325607611523, - 204.09523809391186, - 204.05713501063468, - 204.01896052771806, - 203.98072840376, - 203.94243286843525, - 203.90409067946624, - 203.8657187200266, - 203.82731270054992, - 203.78889194910997, - 203.75047554547027, - 203.71205897160814, - 203.67363812004368, - 203.6352329854508, - 203.5968617412735, - 203.55851804707947, - 203.52022010478714, - 203.4819860818951, - 203.44380986893512, - 203.40568572279372, - 203.3676303429053, - 203.32965891113452, - 203.2917643860025, - 203.25396086947205, - 203.21626049454107, - 203.17865329187055, - 203.141150120138, - 203.10376234155828, - 203.06647985592986, - 204.2259910996388, - 204.19449049069544, - 204.1630987189611, - 204.1318029715833, - 204.10060568880027, - 204.06950841613127, - 204.038496476052, - 204.00755570775672, - 203.97668648515, - 203.94588917503472, - 203.91514950000445, - 203.8844652053588, - 203.85383449894692, - 203.82324412898342, - 203.79269178059178, - 203.7621749577619, - 203.73168084269832, - 203.7011973995118, - 203.6707207107272, - 203.6402468669402, - 203.60976480965408, - 203.57926975362545, - 203.54875711654935, - 203.5182173410545, - 203.48764164432325, - 203.45702455546385, - 203.42636107616153, - 203.39564385940818, - 203.36486775018233, - 203.33402811072938, - 203.30312008041386, - 203.272139118176, - 203.24108076494656, - 203.20994307645995, - 203.1787257447417, - 203.14742549612112, - 203.1160401439955, - 203.08457199633887, - 203.05301906020495, - 203.0213794711441, - 202.98965675065233, - 202.95785518441255, - 202.92597267455363, - 202.89400802422708, - 202.86196707360665, - 202.82984822356525, - 202.79765006849829, - 202.7006167230772, - 202.66813343857632, - 202.63558832804458, - 202.6029797998441, - 202.57030657608982, - 202.53757666012226, - 202.50478814276812, - 202.47193937986472, - 202.43903881064446, - 202.40609489138143, - 202.37310524008333, - 202.34006726200676, - 202.30698897565617, - 202.27386897237403, - 202.24070543947326, - 202.2075059699436, - 202.17426922817424, - 202.14099346505952, - 202.10768575266732, - 202.0743531115131, - 202.0409936039585, - 202.00760494119947, - 201.97419314740532, - 201.94075635095322, - 201.90729222125356, - 201.87380568442666, - 201.84030152632437, - 201.80677735096637, - 201.773230524909, - 201.73966512499567, - 201.7060785686324, - 201.67246804436272, - 201.63883673547724, - 201.6051821824103, - 201.5715018648331, - 201.53779816420246, - 201.50407314991745, - 201.47032478760585, - 201.4365511986434, - 201.40275458347406, - 201.36893344758806, - 201.33508613323806, - 201.30121398197033, - 201.2673179353767, - 201.2333961039348, - 201.1994462988027, - 201.165468740406, - 201.13146181126538, - 201.09742367452014, - 201.0633538078771, - 201.02925016115645, - 200.99511080791956, - 200.96093515584914, - 202.04179177844904, - 202.01259597858729, - 201.98336336699475, - 201.95409258142024, - 201.92478294797905, - 201.89543363519493, - 201.86604272841691, - 201.83660809583512, - 201.80712909595138, - 201.7776052566031, - 201.74803464669992, - 201.718417390606, - 201.6887533732094, - 201.6590401132683, - 201.62927726267586, - 201.5994642598353, - 201.56959810694354, - 201.53967565639772, - 201.50969599317636, - 201.4796581931715, - 201.449558995579, - 201.41939731160375, - 201.38917190166822, - 201.35887906577972, - 201.3285149435979, - 201.29807793765698, - 201.26756667338677, - 201.2369777833562, - 201.20631009771625, - 201.17556279862, - 201.14473327900956, - 201.11382052152794, - 201.08282369024076, - 201.05174060514798, - 201.02056922185628, - 200.98930890086058, - 200.95795884028732, - 200.92651706704663, - 200.8949833454754, - 200.86335758992752, - 200.83163857788054, - 200.79982533935458, - 200.76791792230208, - 200.73591659558545, - 200.70382123592006, - 200.6716320634556, - 200.6393494412284, - 200.60697376609633, - 200.5745057711259, - 200.54194625157027, - 200.50929598036183, - 200.47655628638498, - 200.44372858156788, - 200.4108145629391, - 200.37781658428398, - 200.3447365995471, - 200.3115761009239, - 200.27833693616233, - 200.2450212456852, - 200.21162874833513, - 200.17815884124016, - 200.14461319473278, - 200.1109918903648, - 200.07729453208117, - 200.04352224565454, - 200.00967525537376, - 199.9757534187206, - 199.9417576050813, - 199.90768896849667, - 199.87354722823318, - 199.8393319269743, - 199.80504400669952, - 199.77068283448364, - 199.73624759438056, - 199.7017390948307, - 199.66715835867814, - 199.63250465952092, - 199.5977771970465, - 199.5629770492604, - 199.52810372661304, - 199.49315660557383, - 199.45813680228824, - 199.42304394402666, - 199.38787748702063, - 199.3526382444555, - 199.3173270693273, - 199.28194317519765, - 199.24648575239047, - 199.21095584600096, - 199.17535307518872, - 199.13967709154286, - 199.1039292050902, - 199.0681113229312, - 199.03222487777705, - 198.9962716536671, - 198.96025478317242, - 198.9241762237295, - 198.88803780458935, - 198.851842410868, - 198.8155919886592, - 199.78501874812903, - 199.75316964853425, - 199.72127291483483, - 199.6893299455294, - 199.65734194123127, - 199.62531083194006, - 199.59323735622718, - 199.56112182487314, - 199.5289650890334, - 199.49676770998428, - 199.46452938057072, - 199.43224973752436, - 199.39992893642477, - 199.367566632537, - 199.33516216022974, - 199.30271485093914, - 199.27022406702116, - 199.2376892613132, - 199.2051094700489, - 199.17248314202905, - 199.1398093822013, - 199.10708771757538, - 199.0743172156582, - 199.0414979075678, - 199.00862941494364, - 198.97571041701545, - 198.942740121031, - 198.90971969285863, - 198.8766502540919, - 198.84353065423724, - 198.81036256952933, - 198.77714806753886, - 198.74388655544567, - 198.71058153565158, - 198.6772361788781, - 198.64384901744688, - 198.61041862753294, - 198.576949158149, - 198.54344456368264, - 198.50990351552485, - 198.4763308363854, - 198.44273081954594, - 198.40910154386086, - 198.37544083374473, - 198.34175217744425, - 198.3080385425038, - 198.27429595262066, - 198.24052760214457, - 198.206736118214, - 198.1729166663957, - 198.13907293702633, - 198.10520781946173, - 198.07131638438105, - 198.0373947319412, - 198.0034473459689, - 197.9694787384794, - 197.93548573739372, - 197.9014746357149, - 197.8674515333674, - 197.8334137741852, - 197.79935876214387, - 197.76529291303686, - 197.73122265157673, - 197.69714508602425, - 197.6630653649183, - 197.62898827855562, - 197.59490958177844, - 197.56083198646394, - 197.52675786926105, - 197.49268181870715, - 197.45859827124522, - 197.42450818632116, - 197.39041218820833, - 197.35630402803338, - 197.32218331042378, - 197.28804950105805, - 197.2538963061719, - 197.21971783291866, - 197.18551323293988, - 197.15128140718863, - 197.11701652430733, - 197.08271745640735, - 197.04838301243475, - 197.01400787089318, - 196.9795905664791, - 196.94512954126225, - 196.91061974371752, - 196.87605663718955, - 196.84143812899865, - 196.80676208363028, - 196.77202447247095, - 196.7372227089219, - 196.70235435965773, - 196.6674162054719, - 196.63240551560114, - 196.59732004695942, - 196.56215798459556, - 196.52691779705592, - 196.4915975145844, - 196.45619551439125, - 197.3616678579629, - 197.33033220877172, - 197.29891023820014, - 197.2674022183186, - 197.23580893948267, - 197.20412866963136, - 197.17235986529985, - 197.14050422901235, - 197.10856028074483, - 197.07652636182502, - 197.0444047783473, - 197.0121985905643, - 196.97990644672046, - 196.94752648559756, - 196.9150607095771, - 196.8825066563759, - 196.8498631958943, - 196.81713448533247, - 196.78431944444628, - 196.75141714740565, - 196.71843203684767, - 196.68536846981627, - 196.6522249322877, - 196.6190004541676, - 196.58569971043633, - 196.55232049841743, - 196.51886037053742, - 196.4853225298004, - 196.45170987693913, - 196.41801954870735, - 196.38424852824988, - 196.3503998058059, - 196.3164700114599, - 196.2824549643684, - 196.24835641378078, - 196.21417058558046, - 196.17989304616327, - 196.14552460329656, - 196.11106663041105, - 196.0765151840549, - 196.04186635776244, - 196.00712196123743, - 195.9722796903885, - 195.93733744746302, - 195.90229779063307, - 195.86716359968543, - 195.831933637489, - 195.79660676424996, - 195.76118673216888, - 195.72567457384366, - 195.69007116508277, - 195.6543809321109, - 195.6186065548838, - 195.58275069676978, - 195.54681835439007, - 195.51081519456167, - 195.474746468605, - 195.43861712373203, - 195.40243295422582, - 195.36620049510643, - 195.32992566354446, - 195.29361342358874, - 195.2572693952024, - 195.22089942798186, - 195.1845100043637, - 195.14810766942932, - 195.11169956839257, - 195.07529284592022, - 195.03889356645678, - 195.00250977914868, - 194.96614892809305, - 194.92981666128182, - 194.89351886542605, - 194.85726254355222, - 194.82105381409232, - 194.78489660967458, - 194.7487956461021, - 194.7127547313466, - 194.67677525075715, - 194.64085738331133, - 194.6050023443179, - 194.569210874377, - 194.53348076358722, - 194.4978104591577, - 194.46219732800077, - 194.42663588814943, - 194.39112120502793 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -55946,1987 +3568,15 @@ }, "name": "px est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - 220.42617998044125, - 220.405756412329, - 220.3853072567754, - 220.3648319347307, - 220.34433036910718, - 220.32379689631347, - 220.30322642391926, - 220.28262045177283, - 220.2619740503426, - 220.24128297650748, - 220.22055038502955, - 220.1997728452915, - 220.17894735369575, - 220.15807823711108, - 220.13717018487668, - 220.11622208647583, - 220.09523327506488, - 220.07420945767444, - 220.05315054029754, - 220.03205673445368, - 220.01093429374754, - 219.9897893994549, - 219.96862310006813, - 219.94743678147464, - 219.92623728057535, - 219.90502696126342, - 219.88380817823895, - 219.86258741611124, - 219.84136701653534, - 219.82014926820483, - 219.79893981380525, - 219.77774362674288, - 219.75656224882104, - 219.7353967268414, - 219.7142506710881, - 219.6931243620886, - 219.67201764135956, - 219.65093277658664, - 219.629871124601, - 219.6088307051582, - 219.5878087606278, - 219.56680406795653, - 219.54581327802643, - 219.52483193316002, - 219.5038552566233, - 219.48287564534067, - 219.46188508909108, - 219.4408771440762, - 219.41984614187413, - 219.39878505221935, - 219.377686809561, - 219.3565466786527, - 219.33535835744144, - 219.31411582146674, - 219.29281539764548, - 219.27145369263786, - 219.25002561528208, - 219.22852656820083, - 219.20695428266637, - 219.18530331103807, - 219.1635684353248, - 219.1417479602849, - 219.11983679191272, - 219.09783011565744, - 219.075726794652, - 219.05352585951144, - 219.03122120872533, - 219.00880757191115, - 218.98628580843837, - 218.96365076604593, - 218.94089791535148, - 218.91803002168515, - 218.89505017559293, - 218.87195549407627, - 218.84874421814555, - 218.82542083541205, - 218.80198493009172, - 218.7784367746008, - 218.75478140818478, - 218.73102067942187, - 218.70715669739482, - 218.68319464155275, - 218.65913964047772, - 218.63499530467962, - 218.61076538475052, - 218.5864552298087, - 218.56206978015285, - 218.5376138421128, - 218.5130922560297, - 218.48850960872375, - 218.46387119864238, - 218.43918229168906, - 218.41444739653312, - 218.38967238740247, - 218.36486279558596, - 218.34002268091936, - 218.31515800493105, - 218.29027353590305, - 218.26537182526312, - 218.24045679631377, - 218.215534176745, - 218.2064290585906, - 218.1817985399557, - 218.15717783355396, - 218.13257217741904, - 218.10798414854327, - 218.0834172627966, - 218.05887763788928, - 218.03437024204146, - 218.00989710785737, - 217.98546363661956, - 217.96107461367535, - 217.9367305167136, - 217.9124346386093, - 217.8881898882472, - 217.86399488224143, - 217.83984665816752, - 217.81574557782406, - 217.79169196414554, - 217.76768095882764, - 217.7437118818433, - 217.719783856825, - 217.695890880084, - 217.67202636410371, - 217.64818863943833, - 217.62437573913292, - 217.60057943472583, - 217.57679767958575, - 217.5530284756212, - 217.52926332348488, - 217.50550047522796, - 217.48173846868187, - 217.45796926518176, - 217.43418476390886, - 217.41038401656098, - 217.38656663900056, - 217.3627255312516, - 217.33886066485505, - 217.31497251236303, - 217.29105498508258, - 217.2671022201752, - 217.24311549795704, - 217.21909661361124, - 217.19504088660946, - 217.1709506231309, - 217.14682856053128, - 217.12267113173846, - 217.09848227933927, - 217.07426620323668, - 217.05002044176442, - 217.02574294959902, - 217.00143945164706, - 216.97711595001766, - 216.95277119401996, - 216.92841184878247, - 216.9040447963261, - 216.87966950909868, - 216.85528556645698, - 216.83090019660574, - 216.80652098311035, - 216.78214833450704, - 216.75778946178156, - 216.73345073152416, - 216.70913125882666, - 216.6848364812075, - 216.66057131507947, - 216.63633459043695, - 216.61212529631612, - 216.58794748537147, - 216.56380516289116, - 216.53969732430693, - 216.51562702862134, - 216.49159636429724, - 216.46760338082316, - 216.44364690511756, - 216.41972929940908, - 216.3958532423773, - 216.37201850168083, - 216.348227804307, - 216.32448486610554, - 216.30079060048558, - 216.27714582461184, - 216.25355166446687, - 216.23000807404853, - 216.20651395429115, - 216.18306777933566, - 216.15966808751386, - 216.13631323373755, - 216.1130001386027, - 216.08972585606605, - 216.0664886624091, - 216.04328669918306, - 216.02011612076075, - 215.9969731582383, - 215.97385606983386, - 215.950760566573, - 215.9276824822187, - 215.90462037014674, - 215.88156961161684, - 215.85852576922227, - 215.83548786285562, - 215.65581188500235, - 215.63113282423333, - 215.60644316237577, - 215.58174292927345, - 215.5570282317612, - 215.5322954451976, - 215.5075454834166, - 215.48277977028746, - 215.4579957350418, - 215.4331913824247, - 215.4083695146877, - 215.38352848803495, - 215.35866696162486, - 215.33378850386845, - 215.30889170971867, - 215.28397566842332, - 215.2590451675793, - 215.23410520270676, - 215.20915642920647, - 215.18420038809603, - 215.13428448627124, - 215.1093289393367, - 215.08438050458776, - 215.05944365245634, - 215.03451852162775, - 215.00960520669403, - 214.98470776675578, - 214.95982571074552, - 214.9349583448791, - 214.91010909750884, - 214.88527682385418, - 214.86046002086547, - 214.8356612767386, - 214.8108828376354, - 214.78612224386154, - 214.7613771173434, - 214.7366493515129, - 214.7119368389156, - 214.68723745710142, - 214.66255314516573, - 214.63788600900185, - 214.6132336939785, - 214.58859376301643, - 214.56396792607853, - 214.53935348964862, - 214.51474779079732, - 214.4901519670819, - 214.46556188635256, - 214.44097259569836, - 214.4163833355932, - 214.39179358850097, - 214.367199111061, - 214.34259541227124, - 214.31798152008534, - 214.29335375847748, - 214.26870864972287, - 214.24404574898094, - 214.21936480255687, - 214.19466278916474, - 214.16993660842456, - 214.145185865804, - 214.12040801488985, - 214.09560080096165, - 214.0707643656826, - 214.04589680521593, - 214.02099620850694, - 213.99606289644316, - 213.97109714754296, - 213.94609722606177, - 213.92106102054308, - 213.89598791151772, - 213.87087659328847, - 213.84572569771584, - 213.82053437142116, - 213.7953018572949, - 213.7700270344166, - 213.74470899083926, - 213.71934763210015, - 213.69394285167607, - 213.66849399844915, - 213.64300045064948, - 213.6174620044808, - 213.59187765648915, - 213.56624629524083, - 213.54056741389564, - 213.51484018726848, - 213.48906357184137, - 213.46323648897527, - 213.43735828703083, - 213.41142838058332, - 213.38544549468338, - 213.35940860768721, - 213.3333175728362, - 213.30717218843364, - 213.28097190264228, - 213.25471721355132, - 213.22840845633044, - 213.2020451865007, - 213.1756287386473, - 213.14916035932023, - 213.19881912733322, - 213.17279547125761, - 213.14672305559992, - 213.12060396228068, - 213.09443837289248, - 213.06822942005843, - 213.04198016142715, - 213.0156909247183, - 212.98936230458486, - 212.96299854260494, - 212.93660388181456, - 212.9101792822423, - 212.8837305039856, - 212.85726320339865, - 212.8307786604178, - 212.80428434479003, - 212.7777873299131, - 212.7512883972852, - 212.72478827685578, - 212.69829491862433, - 212.67181597354838, - 212.64535134219682, - 212.61890895848862, - 212.59249628241727, - 212.56611200844966, - 212.53975484696446, - 212.5134328122481, - 212.4871532609963, - 212.4609138986912, - 212.43472375145993, - 212.4085909207651, - 212.38251154762528, - 212.35649566704615, - 212.3305527086111, - 212.30467778426916, - 212.27886599410368, - 212.25312625638347, - 212.2274668748342, - 212.20188150364655, - 212.17637832399535, - 212.1509649003067, - 212.12563360529657, - 212.10037657530162, - 212.0752004938541, - 212.0501114531864, - 212.02510004844945, - 212.0001717897539, - 211.97533198797808, - 211.9505701001698, - 211.9258896166601, - 211.90129433101515, - 211.8767733006169, - 211.85231501363495, - 211.82792218166497, - 211.8035968565684, - 211.77932640950482, - 211.75511255486487, - 211.73095701851497, - 211.7068477905272, - 211.6827732235741, - 211.65873521702432, - 211.6347356437064, - 211.6107633168461, - 211.5868206361758, - 211.56290995806583, - 211.53902086542934, - 211.51515674782317, - 211.49132123753864, - 211.46750549852317, - 211.44370181469696, - 211.41991528741175, - 211.39615097111223, - 211.3724014607772, - 211.34867060192067, - 211.3249607948414, - 211.301262468743, - 211.27756771828695, - 211.25387963239322, - 211.23020110458597, - 211.20652530883117, - 211.1828565830179, - 211.1591992535408, - 211.13554770011433, - 211.1119072508137, - 211.08828272661984, - 211.0646687488178, - 211.04106127511596, - 211.01746526966, - 210.99388507674405, - 210.9703165104255, - 210.8996911067906, - 210.87617664023537, - 210.8526788855775, - 210.82920189176312, - 210.8057423158154, - 210.78230393674033, - 210.75889045730938, - 210.73549872285204, - 210.71213227933228, - 210.68879444682773, - 210.67666146824686, - 210.65343738409416, - 210.63023958912018, - 210.60707113694187, - 210.58392900048221, - 210.56081661737974, - 210.5377373756109, - 210.51468834401186, - 210.49166679439472, - 210.46867627982311, - 210.4457203240495, - 210.42279637731824, - 210.3999083950088, - 210.37706028281684, - 210.35424971935834, - 210.33148065749862, - 210.30875652457814, - 210.2860742036624, - 210.26343070445327, - 210.24082837513663, - 210.2182692223053, - 210.1957497486351, - 210.17327149549325, - 210.15083572958955, - 210.128438669557, - 210.10607682009658, - 210.08375033363458, - 210.06145985220894, - 210.0392031114759, - 210.0169807480581, - 209.99479335681914, - 209.97263897700228, - 209.95051829816302, - 209.9284322144659, - 209.9063797550068, - 209.88436038293443, - 209.86237480591913, - 209.84042333478916, - 209.8185047744058, - 209.7966182114263, - 209.7747626250161, - 209.75293666808716, - 209.7311390769695, - 209.70936775058692, - 209.68762054556655, - 209.6658962104918, - 209.64419181181782, - 209.62250459077063, - 209.60083377666186, - 209.579175988837, - 209.55752788296516, - 209.53588889908852, - 209.51425866826187, - 209.4926335727778, - 209.47101023901453, - 209.44938919448975, - 209.427767267277, - 209.40614132009134, - 209.38451235728402, - 209.36288151760186, - 209.34124508698082, - 209.31959950873988, - 209.2979463069334, - 209.27628200878914, - 209.25460332898408, - 209.23291222748202, - 209.21120549325002, - 209.18947990890396, - 209.16773739438244, - 209.1459796906086, - 209.12420329516752, - 209.10240459588618, - 209.08058500587785, - 209.05874120800806, - 209.0368694390534, - 209.0149702731687, - 208.99304427014883, - 208.97108827576014, - 208.9490990903625, - 208.92707725620642, - 208.9050187219716, - 208.8829208126747, - 208.86078619216823, - 208.83860983705813, - 208.81638439459394, - 208.79410519408833, - 208.77176788411495, - 208.74936257336427, - 208.72687902230243, - 208.70431489916137, - 208.68165147021546, - 208.65887069432978, - 208.63597269546835, - 208.6129588511598, - 208.58981360133282, - 208.56652067981054, - 208.54308166047397, - 208.51948948988775, - 208.4957353362371, - 208.47181935632486, - 208.52956444611002, - 208.5057377127588, - 208.48173999528242, - 208.4575746064595, - 208.43323864534582, - 208.40872813927163, - 208.3840478518609, - 208.35919802730413, - 208.3341782189035, - 208.3089967372926, - 208.2836676262419, - 208.20697968560788, - 208.15531949643065, - 208.0772385712671, - 208.05109593810445, - 208.02491754336648, - 207.99870908857656, - 207.97247514237594, - 207.94623116391145, - 207.91998227595596, - 207.89373300189504, - 207.86749475468932, - 207.8412756509141, - 207.8150793200557, - 207.78890834152557, - 207.76276817512792, - 207.73666166567182, - 207.71059035453496, - 207.68455601038363, - 207.65855996240836, - 207.63260224904545, - 207.60668239334535, - 207.58080185165008, - 207.554962893338, - 207.52916636109433, - 207.50341167335122, - 207.47770033935214, - 207.4520323067621, - 207.42640337974103, - 207.40080843213403, - 207.37524660407826, - 207.34971595996745, - 207.3242088747261, - 207.2987247323324, - 207.27326267861818, - 207.24781430730073, - 207.22238026867097, - 207.19696121679488, - 207.17154837684188, - 207.14613253282576, - 207.12071414273893, - 207.09529310887973, - 207.06985891486664, - 207.0444125768923, - 207.0189549966836, - 206.99347527042087, - 206.96796265373962, - 206.9424191795673, - 206.91684670585843, - 206.89123428587607, - 206.86558457613427, - 206.8399004534275, - 206.81417150054892, - 206.78840226135472, - 206.7625976406717, - 206.7367480772578, - 206.71084409588207, - 206.68489204345195, - 206.65889870582015, - 206.63285591858914, - 206.60677322450698, - 206.58066058517736, - 206.5545115448731, - 206.52832054104573, - 206.502101363789, - 206.4758678429419, - 206.44961553572577, - 206.4233614657104, - 206.39712266725914, - 206.37089599105013, - 206.34470114245028, - 206.3185572612662, - 206.29246085906183, - 206.26640880750665, - 206.24042117972198, - 206.21451639154856, - 206.1886887945626, - 206.16295667402895, - 206.13733781332058, - 206.1118262888454, - 206.0864164162297, - 206.06112409499045, - 206.03596427387274, - 206.01092959959664, - 205.9860333321367, - 205.96128589453207, - 205.93667616041412, - 205.91221515647982, - 205.88791364852577, - 205.86376143094913, - 205.86050300833944, - 205.8367322558281, - 205.8131136411705, - 205.78963435502916, - 205.76629732968067, - 205.74310441056554, - 205.72004084416523, - 205.6970923923073, - 205.6742596887682, - 205.65154348337495, - 205.62892910020747, - 205.60641452615357, - 205.58399821272903, - 205.56166654377824, - 205.539418000103, - 205.5172507211594, - 205.49515172696584, - 205.47310886960278, - 205.45111912568308, - 205.4291795030584, - 205.40727877072524, - 205.38541314064844, - 205.36357896945225, - 205.34176635871822, - 205.3199661366312, - 205.2981737258917, - 205.27638483536037, - 205.25459146939883, - 205.23278919299167, - 205.21097400356396, - 205.1891401042012, - 205.16728325482114, - 205.14539957282656, - 205.12348581732596, - 205.10154032100797, - 205.07956013680408, - 205.05754307798043, - 205.03548992674087, - 205.01339864902002, - 204.9912675295365, - 204.96909848767874, - 204.94689423563423, - 204.9246529343699, - 204.90237304224806, - 204.88005878927908, - 204.85770855424738, - 204.83532090343596, - 204.76796383339203, - 204.74545052167963, - 204.7229131805129, - 204.70035047336782, - 204.67776110658744, - 204.65515193348855, - 204.63252112323374, - 204.60986730343294, - 204.58719791196708, - 204.56452056235514, - 204.54183333279806, - 204.51913374706507, - 204.49642913790032, - 204.47371847202584, - 204.4510003436991, - 204.42828187701485, - 204.4055621643959, - 204.38284004979195, - 204.36012232968852, - 204.3374158898504, - 204.31471940291394, - 204.29203116442278, - 204.2693571737408, - 204.24669615792004, - 204.2240463542413, - 204.20141271601327, - 204.17880014398884, - 204.156206759957, - 204.13363051139254, - 204.11107560394836, - 204.0885398971869, - 204.0660209752408, - 204.04352213030523, - 204.02104138267075, - 203.99857648768642, - 203.97612987936122, - 203.95370370926804, - 203.9312961828633, - 203.90890571436054, - 203.8865345915152, - 203.86418163679292, - 203.8418454472528, - 203.81952750637726, - 203.79722888720957, - 203.77494789058397, - 203.75268260425827, - 203.73043329755154, - 203.7081985179518, - 203.68597656272834, - 203.66376688785564, - 203.6415676111306, - 203.61937688812503, - 203.59719404960853, - 203.6423778769313, - 203.62051502868871, - 203.59865788651234, - 203.57680502153684, - 203.55495578190911, - 203.53310935883718, - 203.51126373894274, - 203.48941668492475, - 203.46756755946043, - 203.44571584035225, - 203.4238594481935, - 203.40199845169084, - 203.38013268516585, - 203.35825952970802, - 203.33637858241198, - 203.31448927540512, - 203.2925884816811, - 203.2706729390912, - 203.24874173620006, - 203.22679392800526, - 203.20482615187433, - 203.18283730775056, - 203.16082616686361, - 203.1387889457535, - 203.11672171657725, - 203.0946229100142, - 203.07249112828168, - 203.05032292360357, - 203.02811711355903, - 203.00587285411333, - 202.98358743430373, - 202.96125980030408, - 202.93888910960777, - 202.91647308696878, - 202.89400960736856, - 202.87149801454476, - 202.84893747764235, - 202.82632596094766, - 202.80366321571805, - 202.78094915516343, - 202.7581825315312, - 202.73536237989393, - 202.71248877504524, - 202.68956200503223, - 202.66658195178616, - 202.64354883865434, - 202.62046304134182, - 202.59732498639775, - 202.57413540429306, - 202.55089510835955, - 202.52760494222636, - 202.5042662991912, - 202.48088062390093, - 202.45744965474688, - 202.43397581379392, - 202.41046101562011, - 202.38690675162468, - 202.36331496637433, - 202.33968784549896, - 202.3160250274689, - 202.29232586504455, - 202.2685920881603, - 202.24482364269002, - 202.22102001776082, - 202.19718242838468, - 202.17331093856106, - 202.14940523906924, - 202.1254663037096, - 202.10149536086854, - 202.0774919415157, - 202.0534554386163, - 202.029386921406, - 202.00528568567216, - 201.98115087754323, - 201.9569835194524, - 201.9327848053731, - 201.9085539165855, - 201.88429000261652, - 201.85999431891378, - 201.83566634789318, - 201.81130542655586, - 201.7869128307676, - 201.76248819756935, - 201.7380309276743, - 201.71354192596493, - 201.6890221424622, - 201.6644707363242, - 201.63988683430205, - 201.61527156720092, - 201.59062452722821, - 201.5659453182414, - 201.54123533895932, - 201.51649658634457, - 201.49173047447422, - 201.46693881256323, - 201.44212488804834, - 201.41729071328433, - 201.39243816864257, - 201.36757030544098, - 201.34268914833729, - 201.3603534509236, - 201.3356449960385, - 201.31093091101525, - 201.28621264249685, - 201.26149144257855, - 201.2367693141564, - 201.21204694112274, - 201.1873245858584, - 201.1626031224929, - 201.13788313033285, - 201.1131642603015, - 201.08844609416582, - 201.06372880744885, - 201.03901200699843, - 201.01429498719375, - 200.98957710692457, - 200.96485767096735, - 200.94013610482864, - 200.91541147222733, - 200.8906822517013, - 200.86594752753328, - 200.84120678332152, - 200.816459109729, - 200.79170448142318, - 200.76694250440173, - 200.7421719024251, - 200.7173918906282, - 200.69260359617104, - 200.66780806211494, - 200.64300417051038, - 200.6181935271514, - 200.59337810939755, - 200.56855732307062, - 200.5437345216241, - 200.51891281637464, - 200.4940907806103, - 200.46926700292272, - 200.44444549382837, - 200.41963004839076, - 200.39481935685495, - 200.3700181053204, - 200.34523050593825, - 200.32045468538797, - 200.295688462045, - 200.2709352313734, - 200.24619781404735, - 200.22147226277806, - 200.19676158420296, - 200.17206829662084, - 200.1473877209361, - 200.12272335536372, - 200.0980780529397, - 200.07344712542627, - 200.04882684288228, - 200.0242216293148, - 199.99963595769498, - 199.9750668647821, - 199.95052047511544, - 199.92600282078718, - 199.90151148506027, - 199.8770440375563, - 199.85260687000553, - 199.82820638945697, - 199.80383989039035, - 199.77951247089777, - 199.75522890562593, - 199.73098511990423, - 199.70678372934512, - 199.68262704263225, - 199.65850979069867, - 199.6344265106034, - 199.6103780986228, - 199.5863651767928, - 199.5623816460561, - 199.53842709372663, - 199.51450098509676, - 199.4905971456752, - 199.46670976898375, - 199.44283800452308, - 199.41898080095712, - 199.3951324397259, - 199.3712918592013, - 199.34745795869796, - 199.32362553745702, - 199.2997932437271, - 199.27595963415428, - 199.25211976131067, - 199.2282691538108, - 199.2044058098962, - 199.18052769389814, - 199.15663078836653, - 199.13271257398762, - 199.1087706852787, - 199.08480183968814, - 199.06080320951216, - 199.03677255516956, - 199.0127080205885, - 198.98860790283828, - 198.96447016100913, - 198.9402930893823, - 198.92656882236872, - 198.90235726350775, - 198.8781022712304, - 198.853803919766, - 198.82946279622186, - 198.80507705372955, - 198.78064502039757, - 198.75616817931174, - 198.7316448599867, - 198.70707324095187, - 198.68245541108453, - 198.65779420556288, - 198.63308808449108, - 198.60833499431914, - 198.5835367568308, - 198.55869067747722, - 198.53379544531538, - 198.50885517829155, - 198.48386860838238, - 198.45883468348862, - 198.43375795226086, - 198.40864290326815, - 198.38348791455402, - 198.35829194167488, - 198.33305988236017, - 198.3077893836888, - 198.28247788309142, - 198.25712889419137, - 198.23174557557056, - 198.2063248170139, - 198.18086338991233, - 198.15536455137374, - 198.1298245645611, - 198.10423889831756, - 198.07860960361975, - 198.05293241851078, - 198.02720240472462, - 198.00142070190074, - 197.9755889883725, - 197.94970285048478, - 197.9237579488992, - 197.89775642280685, - 197.87169550189023, - 197.84557259414692, - 197.8193906143946, - 197.7931528035244, - 197.76685746739665, - 197.74050310875418, - 197.71409392190756, - 197.68763056673248, - 197.6611135809397, - 197.63454792718377, - 197.60793602788203, - 197.5812802792491, - 197.55458632578402, - 197.5278604762737, - 197.50110784422623, - 197.47433330326928, - 197.4475434143684, - 197.42074472141553, - 197.39394322452688, - 197.3671448194312, - 197.3403560707187, - 197.31358307284802, - 197.28683261407514, - 197.26011233461122, - 197.2334296874363, - 197.20679213802634, - 197.1802067965988, - 197.15368191657095, - 197.12722527849496, - 197.1008434875713, - 197.07454330192363, - 197.04833185569328, - 197.02221526930325, - 196.99619799292392, - 196.97028442775013, - 196.94447799468225, - 196.91878007628577, - 196.893190841011, - 196.86771106621487, - 196.84234086931443, - 196.81707788287724, - 196.7919198501352, - 196.76686340160805, - 196.74190275956443, - 196.7170321119394 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -57937,1988 +3587,15 @@ }, "name": "px true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x", - "y": [ - 220.44659050072994, - 220.42617998044125, - 220.40578727024288, - 220.38541422189914, - 220.36505913600513, - 220.3447189683345, - 220.32439307245826, - 220.30408122632784, - 220.2837802807588, - 220.2634877724974, - 220.24320369007827, - 220.22292516761763, - 220.20264906056772, - 220.18237416628614, - 220.16209838866163, - 220.14181850131956, - 220.12153181674262, - 220.10123636391242, - 220.08092900772175, - 220.0606067017844, - 220.04026701954186, - 220.01990707937017, - 219.9995238837271, - 219.97911455991272, - 219.95867630397595, - 219.9382062239162, - 219.91770143485164, - 219.8971588216526, - 219.87657576382784, - 219.85594982621828, - 219.83527789421169, - 219.81455728881465, - 219.79378593093057, - 219.77296145190368, - 219.75208096593198, - 219.73114287469838, - 219.71014562112694, - 219.68908675060854, - 219.66796481737236, - 219.64677889084564, - 219.62552762868148, - 219.60420994038967, - 219.58282581730836, - 219.56137517247663, - 219.53985710107264, - 219.51827211736875, - 219.4966209912366, - 219.47490368257942, - 219.45312041987515, - 219.4312719835785, - 219.40935877157335, - 219.3873808132786, - 219.36533891471925, - 219.34323387007183, - 219.32106608079067, - 219.29883619824582, - 219.27654499211093, - 219.25419305907891, - 219.2317808689886, - 219.20930899216998, - 219.1867781206038, - 219.16418941448484, - 219.1415432231765, - 219.11883979179598, - 219.09608014392768, - 219.07326484026686, - 219.05039393680107, - 219.02746823268657, - 219.0044894663551, - 218.9814571951736, - 218.95837109850694, - 218.93523309444998, - 218.91204286127655, - 218.88879907968612, - 218.8655022346614, - 218.8421528064409, - 218.81874893092746, - 218.79528945806587, - 218.77177494945602, - 218.74820368737787, - 218.72457379835492, - 218.70088494268975, - 218.67713598748725, - 218.65332491321098, - 218.62945032479627, - 218.60551161705828, - 218.58150683863818, - 218.5574341957395, - 218.53329295653106, - 218.5090817206794, - 218.4847989209628, - 218.4604435811939, - 218.43601496421687, - 218.41151172303742, - 218.38693275071023, - 218.36227774177217, - 218.33754584708288, - 218.31273650590472, - 218.28784971864485, - 218.26288569725278, - 218.2378445539308, - 218.21272652291154, - 218.18753222365368, - 218.16226223517438, - 218.13691764212814, - 218.1114992457928, - 218.08600840501387, - 218.06044658051368, - 218.03481506089412, - 218.00911530182285, - 217.98334949387893, - 217.9575197657671, - 217.93162770079533, - 217.90567590437354, - 217.87966724405732, - 217.85360394955615, - 217.82748860065192, - 217.80132456509736, - 217.77511498412227, - 217.7488622752552, - 217.72257001637368, - 217.6962419085029, - 217.66988017298473, - 217.64348814499795, - 217.61706954024982, - 217.590627014951, - 217.5641630070713, - 217.53768133492304, - 217.51118521111627, - 217.48467607398126, - 217.45815738986167, - 217.4316327871646, - 217.40510356853582, - 217.3785720421969, - 217.35204178006603, - 217.32551513000726, - 217.29899282942353, - 217.27247801868248, - 217.2459737207319, - 217.2194805002983, - 217.19300054973763, - 217.16653675257632, - 217.1400905568388, - 217.113663021965, - 217.08725666405266, - 217.0608734723976, - 217.0345137735914, - 217.0081796839774, - 216.98187340608382, - 216.95559528979643, - 216.92934645596654, - 216.90312886768984, - 216.8769436376372, - 216.85079092888094, - 216.82467232524155, - 216.79858918611288, - 216.77254161536706, - 216.74653057990324, - 216.72055723766658, - 216.69462209077815, - 216.66872551960427, - 216.64286838019652, - 216.61705127879029, - 216.59127428438538, - 216.56553774892987, - 216.53984189923747, - 216.51418681442746, - 216.48857271143746, - 216.46299967179073, - 216.43746785193318, - 216.4119776008071, - 216.38652927744855, - 216.36112319701573, - 216.3357600629392, - 216.3104403611563, - 216.2851642479768, - 216.25993222823644, - 216.23474476362438, - 216.2096014820607, - 216.1845022369248, - 216.15944738461212, - 216.13443638676532, - 216.10946899911798, - 216.0845462279632, - 216.059668362017, - 216.03483511384027, - 216.01004692818137, - 215.98530513515126, - 215.96060933948564, - 215.93595927982622, - 215.9113565269969, - 215.88680106574998, - 215.86229225860342, - 215.83783082873111, - 215.8134176460579, - 215.7890517582224, - 215.76473264282913, - 215.74046158839346, - 215.7162376231306, - 215.69205941936514, - 215.6679276240053, - 215.64384178660723, - 215.6198001600194, - 215.59580179664513, - 215.5718468845239, - 215.54793342483174, - 215.5240595208018, - 215.50022531493426, - 215.47642914224633, - 215.45266852552916, - 215.4289422662475, - 215.40524924195356, - 215.38158658180782, - 215.35795189359317, - 215.33434442628618, - 215.31076152724435, - 215.2872003191888, - 215.26365945678964, - 215.24013682104587, - 215.21662942892988, - 215.19313509828987, - 215.1696523186805, - 215.12270928803378, - 215.09924532965042, - 215.07578374157828, - 215.0523221899663, - 215.02885916547413, - 215.00539318054862, - 214.98192227805745, - 214.95844481181066, - 214.9349598811872, - 214.9114660598557, - 214.88796194805968, - 214.8644468450473, - 214.84091994507082, - 214.81738027895852, - 214.7938271684795, - 214.77026026981585, - 214.74667902998718, - 214.72308307980154, - 214.6994722180903, - 214.67584620228646, - 214.6522047577313, - 214.62854768376585, - 214.60487484654251, - 214.5811861571648, - 214.55748165387456, - 214.5337610462389, - 214.51002436637341, - 214.48627176887453, - 214.46250246004368, - 214.43871574581618, - 214.41491142076364, - 214.39108891326052, - 214.36724697794685, - 214.34338555224016, - 214.31950452672908, - 214.29560234020073, - 214.27167836422834, - 214.24773244467355, - 214.22376348638994, - 214.1997701239502, - 214.17575232909948, - 214.15170974951187, - 214.12764054997038, - 214.10354441690782, - 214.0794212593749, - 214.05526957594373, - 214.03108852264543, - 214.00687809062822, - 213.98263764204154, - 213.95836566337934, - 213.9340621024687, - 213.90972680861415, - 213.8853580663482, - 213.86095551213825, - 213.83651920786247, - 213.8120481406648, - 213.7875411142706, - 213.7629980297851, - 213.73841845272497, - 213.71380083475913, - 213.68914504851372, - 213.6644509549074, - 213.63971760288703, - 213.61494456352065, - 213.59013185969735, - 213.56527920763318, - 213.5403859516524, - 213.51545220919465, - 213.4904780362498, - 213.46546295923278, - 213.4404070735999, - 213.41531069993815, - 213.39017381629063, - 213.36499629591958, - 213.33977839714407, - 213.31452035458983, - 213.28922228190075, - 213.2638845774842, - 213.23850758680726, - 213.2130915821503, - 213.18763693268568, - 213.16214403288222, - 213.13661330573495, - 213.11104531525558, - 213.08544063329146, - 213.059799737683, - 213.03412342399423, - 213.0084123595492, - 212.98266703768377, - 212.95688829214495, - 212.93107717005074, - 212.90523426210385, - 212.87936022353495, - 212.85345652180803, - 212.82752399497542, - 212.8015633272408, - 212.77557610288977, - 212.74956373694712, - 212.7235272432183, - 212.6974681613157, - 212.67138916052022, - 212.64529183029248, - 212.61917773133416, - 212.5930504067218, - 212.56691239112692, - 212.54076543720743, - 212.51461265718214, - 212.4884578832144, - 212.46230321148525, - 212.4361512189657, - 212.41000722222762, - 212.38387382712648, - 212.3577529680749, - 212.33164945050797, - 212.30556693455281, - 212.27950690367643, - 212.25347193338297, - 212.22746666241773, - 212.20149245020252, - 212.1755506338879, - 212.14964575649628, - 212.12377981019887, - 212.0979535878956, - 212.07217010342316, - 212.04643269337953, - 212.02074193496222, - 211.99509912022518, - 211.96950839294067, - 211.94397049949163, - 211.9184858932617, - 211.89305807801964, - 211.8676890785423, - 211.84237910709797, - 211.81712986373148, - 211.7919452810779, - 211.7668255285828, - 211.74177061206657, - 211.7167841082918, - 211.6918667004548, - 211.66701769697914, - 211.64223884015533, - 211.61753230876909, - 211.59289692308718, - 211.56833224708194, - 211.5438414044746, - 211.519423098256, - 211.49507526428005, - 211.47079963307013, - 211.44659581055186, - 211.42246083740474, - 211.3983935417123, - 211.37439533035428, - 211.3504632758493, - 211.32659492910616, - 211.30279248559296, - 211.27905449062598, - 211.25537795553305, - 211.23176314901676, - 211.20821090649005, - 211.1847180621054, - 211.1612825644747, - 211.13790675124443, - 211.11458809555495, - 211.091323403712, - 211.06811416160343, - 211.0449597533717, - 211.02185671449809, - 210.9988038309962, - 210.9758030889115, - 210.95285118360914, - 210.88427567606934, - 210.86150681028641, - 210.83878081144277, - 210.8160988554195, - 210.7934570670244, - 210.77085297050644, - 210.7482898643791, - 210.725764831889, - 210.70327411323726, - 210.68082024999703, - 210.6584031605549, - 210.63601920151018, - 210.6136676838799, - 210.59135220065767, - 210.56906978166015, - 210.5468178489139, - 210.52460071876388, - 210.50241751139478, - 210.48026530389737, - 210.45814592699122, - 210.43606231994644, - 210.41401182827047, - 210.39199347280942, - 210.37001267896835, - 210.34806807246002, - 210.32615745046354, - 210.3042851151225, - 210.2824524792926, - 210.26065727673054, - 210.2389001574881, - 210.21718588103855, - 210.19551255261072, - 210.17387860119368, - 210.15228867919978, - 210.1307426515377, - 210.1092384032598, - 210.08777774305472, - 210.06636336963888, - 210.0449933755014, - 210.02366711444517, - 210.00238871372244, - 209.98115701803707, - 209.95997017692628, - 209.9388309212351, - 209.91774012002685, - 209.89669616070697, - 209.8756993060034, - 209.85475239126302, - 209.83385384344405, - 209.8130021726273, - 209.79219924769015, - 209.77144412922357, - 209.75073468968804, - 209.73007037775184, - 209.7094508400945, - 209.68887357353458, - 209.66833639603107, - 209.6478385444823, - 209.62737754980907, - 209.60695066523925, - 209.58655588268522, - 209.56619069222688, - 209.5458520239408, - 209.5255368620693, - 209.50524223592018, - 209.48496493529495, - 209.46470183247615, - 209.44444945073758, - 209.42420445208242, - 209.4039637026719, - 209.38372361952673, - 209.3634804977888, - 209.34323128795387, - 209.32297271908644, - 209.30270034863128, - 209.28241109976702, - 209.26210221298243, - 209.24176950318915, - 209.2214095556655, - 209.201020022483, - 209.18059786356125, - 209.16013896802215, - 209.1396412582743, - 209.11910270787558, - 209.09851945354237, - 209.07788938685835, - 209.0572111166523, - 209.03648218231697, - 209.0157000210416, - 208.99486356630067, - 208.97397152717977, - 208.95302142899175, - 208.93201131995525, - 208.91094015486743, - 208.88980738103817, - 208.86861314887784, - 208.84735828867585, - 208.82604342278623, - 208.804669622977, - 208.7832370485298, - 208.76174620003363, - 208.7402027108668, - 208.71860785450698, - 208.69696091650295, - 208.67526482343735, - 208.6535236295655, - 208.63173642526462, - 208.60990259108854, - 208.5880249437127, - 208.56610322178918, - 208.54413599328097, - 208.5221242732063, - 208.50006862651048, - 208.47796724237384, - 208.45581879648773, - 208.43362461800473, - 208.4113822668347, - 208.38908820945102, - 208.36674308366796, - 208.34434427665894, - 208.32188580867754, - 208.25412929470062, - 208.2085911788346, - 208.1396335451468, - 208.11645313578467, - 208.09316321085922, - 208.06975894852403, - 208.0462413248238, - 208.02260244084314, - 207.99883533696146, - 207.97494214299365, - 207.95091832092692, - 207.92675811923183, - 207.90246126543644, - 207.8780287551291, - 207.85345622618942, - 207.82874112469432, - 207.80388756667284, - 207.77889336565352, - 207.75375599192327, - 207.72847920237743, - 207.70306459612138, - 207.67751041950433, - 207.6518177726475, - 207.62599195955318, - 207.60003245567415, - 207.57393934041406, - 207.54771857011875, - 207.52137244147147, - 207.49490243498133, - 207.4683130437445, - 207.4416096524604, - 207.4147949367109, - 207.38787262973898, - 207.36084894433063, - 207.33372793149087, - 207.30651354894295, - 207.27921137589126, - 207.25182664820642, - 207.2243641275258, - 207.19682912183546, - 207.16922746598374, - 207.14156471547776, - 207.11384657683166, - 207.08607860203486, - 207.05826666258216, - 207.03041678731802, - 207.002534585497, - 206.97462569816858, - 206.94669643509988, - 206.91875277114545, - 206.89079985723413, - 206.8628437606042, - 206.83489042715178, - 206.806944755167, - 206.77901220767671, - 206.75109860685788, - 206.72320908550353, - 206.6953483126199, - 206.66752153719202, - 206.63973374405762, - 206.6119896840626, - 206.58429438026235, - 206.55665237944595, - 206.52906851815328, - 206.50154778122825, - 206.47409437748448, - 206.44671222514515, - 206.4194067001895, - 206.39218171050513, - 206.36504038324026, - 206.33798794565953, - 206.3110287333405, - 206.28416546158235, - 206.25740161664174, - 206.23074224969815, - 206.20418879603145, - 206.17774241607606, - 206.15140774224724, - 206.12518651881018, - 206.09907901209206, - 206.07308811245875, - 206.04721712027, - 206.021465586706, - 205.99583395729044, - 205.97032707041305, - 205.944944926577, - 205.9196864477927, - 205.89455555875043, - 205.86955387025674, - 205.84468018987485, - 205.81993571525166, - 205.79532496652106, - 205.77084664206984, - 205.74649940449135, - 205.72228765193432, - 205.69821062233225, - 205.67426518352372, - 205.65045249791305, - 205.62677396915996, - 205.60322497129633, - 205.57980236579047, - 205.55650923747314, - 205.53334168304056, - 205.5102953527561, - 205.48737321575302, - 205.46457479655606, - 205.44189538421685, - 205.41933365971994, - 205.39689309464865, - 205.37456901888132, - 205.3523570048682, - 205.33026095061717, - 205.30827779457823, - 205.28640159884105, - 205.26463218542676, - 205.24297033323148, - 205.22140965192565, - 205.1999455266435, - 205.1785808116045, - 205.15730960313488, - 205.13612440783942, - 205.11502572394795, - 205.0940101236229, - 205.0730692287536, - 205.05219847711143, - 205.031398478077, - 205.01066112934228, - 204.98997893246357, - 204.9693528603365, - 204.9487772312169, - 204.92824391601889, - 204.9077503701638, - 204.88729527441504, - 204.86687052992534, - 204.84646996982872, - 204.82609496548096, - 204.76506388012305, - 204.74474191730263, - 204.72442259133115, - 204.7041024302367, - 204.68378288887698, - 204.66345818666377, - 204.64312317597458, - 204.62278003775316, - 204.60242548513645, - 204.58205424356345, - 204.56166591815344, - 204.54126161025877, - 204.52083689160693, - 204.50038878135203, - 204.47992017657302, - 204.45942820708152, - 204.43890920838592, - 204.41836508979415, - 204.3977957153458, - 204.37719796837172, - 204.3565710169144, - 204.3359174288776, - 204.31523491544792, - 204.29452160234277, - 204.2737801601474, - 204.2530100409383, - 204.2322093992525, - 204.21137899486797, - 204.19052026025608, - 204.16963171685728, - 204.14871265228845, - 204.12776527267187, - 204.10678879144913, - 204.0857820817201, - 204.06474632055284, - 204.04368178143457, - 204.02258752894699, - 204.0014633995879, - 203.98031029385695, - 203.9591276018162, - 203.93791490354278, - 203.91667306467906, - 203.89540203303662, - 203.87410145370035, - 203.85277156062136, - 203.8314127213742, - 203.81002471418455, - 203.78860743958523, - 203.76716118920243, - 203.74568586404598, - 203.7241813281244, - 203.70264763992273, - 203.68108486425217, - 203.6594930221212, - 203.63787215602244, - 203.6162223161074, - 203.5945435550297, - 203.57283592950319, - 203.55109932661617, - 203.52933379433458, - 203.5075394867324, - 203.48571634915314, - 203.46386429384842, - 203.4419834760298, - 203.420073950265, - 203.39813545175232, - 203.3761681020841, - 203.3541720985559, - 203.33214732384369, - 203.31009388320317, - 203.28801206583424, - 203.26590196607148, - 203.24376350043542, - 203.22159695229013, - 203.19940257616253, - 203.17718030639864, - 203.15493033762777, - 203.13265296780912, - 203.1103483056355, - 203.08801641465655, - 203.06565756613816, - 203.04327194318142, - 203.02085946455443, - 202.99842025455183, - 202.97595450124228, - 202.95346220423912, - 202.9309433670132, - 202.9083980691994, - 202.88582634237562, - 202.8632281841279, - 202.840603647141, - 202.81795268626968, - 202.79527521841788, - 202.7725711391903, - 202.74984034569445, - 202.72708276364952, - 202.70429817300737, - 202.68148627377613, - 202.65864683353624, - 202.63577977980145, - 202.6128847107722, - 202.58996125191626, - 202.56700925130045, - 202.54402837574403, - 202.52101818286323, - 202.49797838966455, - 202.4749089533706, - 202.4518096377419, - 202.42868037721883, - 202.40552162589015, - 202.3823336313964, - 202.35911657022532, - 202.33587102683816, - 202.31259801440743, - 202.28929777684814, - 202.265970555418, - 202.2426172592505, - 202.2192382322248, - 202.1958336354046, - 202.17240401962889, - 202.14894980032216, - 202.12547117511744, - 202.10196848229023, - 202.0784422376226, - 202.05489266421029, - 202.03132003986605, - 202.0077248955683, - 201.98410758317792, - 201.96046835984959, - 201.93680775178422, - 201.91312629131068, - 201.88942423481882, - 201.86570188947763, - 201.8419597694214, - 201.81819808297539, - 201.7944170336965, - 201.77061705768375, - 201.7467984698458, - 201.7229614655457, - 201.69910634940751, - 201.67523356709626, - 201.651343336619, - 201.6274358962341, - 201.60351165752735, - 201.57957083011823, - 201.5556135308459, - 201.53163971673024, - 201.50764915330333, - 201.48364151664046, - 201.45961648416426, - 201.43557363941576, - 201.41151269357127, - 201.38743330407132, - 201.36333484408894, - 201.33921677499976, - 201.31507873825439, - 201.2909202365606, - 201.2667405082787, - 201.24253921891028, - 201.21831601152235, - 201.1940699279756, - 201.16980043215375, - 201.14550723390744, - 201.1211897336069, - 201.09684717465092, - 201.07247940473755, - 201.04808617039848, - 201.02366653977998, - 200.9992206432883, - 200.97474877898713, - 200.95025037921448, - 200.9257253181672, - 200.9011741368393, - 200.8765971435572, - 200.85199402854636, - 200.8273653039637, - 200.8027114998719, - 200.77803262300202, - 200.75332930400407, - 200.7286022495973, - 200.70385175377604, - 200.67907811654908, - 200.65428220060397, - 200.6294649027759, - 200.60462668709576, - 200.57976843495004, - 200.55489111340103, - 200.52999553712579, - 200.50508276676715, - 200.48015410383772, - 200.45521081080707, - 200.43025431540178, - 200.4052859585736, - 200.38030710676094, - 200.3553196068073, - 200.33032524040343, - 200.3053256353513, - 200.28032279801272, - 200.25531908272828, - 200.2303162089827, - 200.2053159210849, - 200.18032081794402, - 200.15533261444656, - 200.13035256001228, - 200.10538272850613, - 200.08042484930937, - 200.05547990538116, - 200.03054921110422, - 200.0056346996139, - 199.98073704892005, - 199.95585700383342, - 199.93099659806822, - 199.90615674381664, - 199.8813377849158, - 199.8565408408111, - 199.83176693207056, - 199.8070159252828, - 199.7822879906618, - 199.75758416826818, - 199.73290438731965, - 199.70824869629354, - 199.6836183359437, - 199.65901416209778, - 199.63443646050285, - 199.6098858668385, - 199.5853634976667, - 199.56086948057353, - 199.53640398265978, - 199.51196791549836, - 199.4875614725149, - 199.46318445717614, - 199.43883700631378, - 199.4145193231074, - 199.39023109613865, - 199.3659720929534, - 199.34174238906877, - 199.3175416356064, - 199.2933693195414, - 199.2692250485938, - 199.24510827897439, - 199.22101821390592, - 199.19695393452142, - 199.17291458482663, - 199.14889916928243, - 199.12490663851432, - 199.10093589171743, - 199.07698579140873, - 199.05305505382958, - 199.02914213150558, - 199.00524523839894, - 198.98136253953982, - 198.95749227465583, - 198.9336323515664, - 198.90978076879418, - 198.88593549546826, - 198.86209423287053, - 198.83825488731915, - 198.8144154004584, - 198.79057360476136, - 198.76672710531273, - 198.74287409474192, - 198.71901260010202, - 198.69514035510574, - 198.67125558772543, - 198.64735635022183, - 198.62344021536177, - 198.599505121836, - 198.57554924276204, - 198.55157086300346, - 198.52756808404996, - 198.5035393937878, - 198.47948351922784, - 198.4553991112762, - 198.431284699305, - 198.40713881928184, - 198.3829602699276, - 198.35874796967727, - 198.33450057624935, - 198.31021716783283, - 198.2858973613268, - 198.26154052438727, - 198.2371460290936, - 198.2127136346441, - 198.18824315490517, - 198.16373412622224, - 198.13918617199508, - 198.11459953782162, - 198.08997410384373, - 198.06530967217233, - 198.04060664232495, - 198.0158653698601, - 197.99108583070088, - 197.9662682600486, - 197.94141348227907, - 197.9165216093497, - 197.89159264808313, - 197.86662714060907, - 197.84162513273026, - 197.81658648205058, - 197.791511513668, - 197.76640068392214, - 197.7412538111497, - 197.7160706367011, - 197.69085159610572, - 197.66559645455501, - 197.64030469321656, - 197.6149764502615, - 197.58961163623232, - 197.56420973015216, - 197.5387703493266, - 197.51329347619887, - 197.48777878091332, - 197.46222589920998, - 197.43663473347354, - 197.41100533200975, - 197.38533771007468, - 197.35963189826205, - 197.33388833520675, - 197.3081074273394, - 197.28228999477523, - 197.25643675985287, - 197.23054899550525, - 197.20462811227125, - 197.1786751141074, - 197.15269146776487, - 197.1266788299267, - 197.10063905059124, - 197.07457378497693, - 197.0484856379216, - 197.0223777156529, - 196.99625250950396, - 196.97011390614148, - 196.94396614769084, - 196.9178121907831, - 196.8916546088091, - 196.86549705631882, - 196.83934297633576, - 196.81319420301372, - 196.78705418371328, - 196.7609264351399 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y" }, { @@ -59928,1987 +3605,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -0.8620031399697367, - -0.8633373793633263, - -0.8645964782172593, - -0.8657852381879101, - -0.8669063091876054, - -0.8679488669383691, - -0.8689002487282762, - -0.8697577143233736, - -0.8705054408185685, - -0.871125329092586, - -0.8716095722249416, - -0.8719385927280628, - -0.8720909909537703, - -0.8720550703563702, - -0.8718181319478421, - -0.8713559902303617, - -0.870643202840272, - -0.8696643300639385, - -0.8683926959260345, - -0.8668005753178386, - -0.8648702900765086, - -0.8625837626868441, - -0.8599136414379817, - -0.8568331319759056, - -0.8533263053646514, - -0.8493714703563255, - -0.8449466081010648, - -0.840036125328737, - -0.8346206427496536, - -0.8286804015206413, - -0.8221995499802923, - -0.8151624636530443, - -0.8075522711252058, - -0.7993526992525005, - -0.7905498744452363, - -0.7811310714446486, - -0.771084002138918, - -0.7603957632033492, - -0.7490534769483316, - -0.7370489173276433, - -0.7243731435316821, - -0.7110101266977279, - -0.6969509544479732, - -0.6821848970094393, - -0.6666897765006002, - -0.6504590208398011, - -0.6334858864981797, - -0.6157518816335779, - -0.5972465048094966, - -0.5779798786425927, - -0.5579646884877985, - -0.5371987809825953, - -0.5157032231457304, - -0.4934994989056869, - -0.47058583640457763, - -0.4469598082060928, - -0.42264441453137525, - -0.39766345032328787, - -0.37201440417833487, - -0.3457228531522918, - -0.31881304439627156, - -0.2912777193223923, - -0.26314078873761027, - -0.23442427019349177, - -0.20511583853375592, - -0.17520157658508317, - -0.1447021886595985, - -0.11363690766700185, - -0.08198666780579256, - -0.04977065399670333, - -0.01700621558228832, - 0.016330707152248713, - 0.050264941944873076, - 0.08478197141404697, - 0.11986890275096207, - 0.15555448932853633, - 0.19182640799769834, - 0.2286734669871382, - 0.26612652833386075, - 0.3041747648393225, - 0.34280820750315, - 0.3820587446232233, - 0.4219576248053871, - 0.4624950617674952, - 0.503661208764776, - 0.545486782810328, - 0.5879612807192005, - 0.6310742769917221, - 0.6748557586899595, - 0.7193349316101127, - 0.7645003902873815, - 0.8103405079849235, - 0.8568837894109438, - 0.9041177257589528, - 0.952029583679395, - 1.0006463024634136, - 1.049954080222, - 1.0999389563448367, - 1.1506257147506114, - 1.2020379073066194, - 1.2541607173999734, - 0.03860669698604724, - 0.06875898629156718, - 0.09940359027054835, - 0.1305312317991718, - 0.16215780083247644, - 0.19429926285681542, - 0.22694508809322422, - 0.2600848053086713, - 0.29373176575785354, - 0.3278743088109939, - 0.3625007985336699, - 0.39762349978568756, - 0.43323169622901037, - 0.46931498383326864, - 0.5058862540286484, - 0.5429589097685654, - 0.58052480995034, - 0.6185746738874025, - 0.6571201289997641, - 0.696151109840432, - 0.7356563953839534, - 0.775644820334521, - 0.8161249463931581, - 0.8570863018141508, - 0.8985182612851081, - 0.9404302436474692, - 0.9828133380297865, - 1.0256568377964557, - 1.0689671972876835, - 1.1127352777274568, - 1.1569513797097657, - 1.2016194737808432, - 1.2467432403176042, - 1.292314354025415, - 1.3383241612753811, - 1.3847766123086818, - 1.4316620505342024, - 1.478972044895194, - 1.526712172273585, - 1.5748867213963182, - 1.6234874165524602, - 1.6725073564944761, - 1.7219526093727202, - 1.771817786637703, - 1.8220969653187695, - 1.872794510914376, - 1.923907754160093, - 1.9754344746694856, - 2.0273795771505396, - 2.07974734626483, - 2.1325368601398953, - 2.185747538119557, - 2.239383876826202, - 2.293446350809332, - 2.3479356230154473, - 2.4028565372601802, - 2.458214320914648, - 2.514011952851452, - 2.570251488932147, - 2.626936236740432, - 2.6840703203345533, - 2.7416576162104747, - 2.799699327220257, - 2.8581978297360644, - 2.9171559896528816, - 2.976573587096958, - 3.0364484486132417, - 3.096782168927204, - 3.1575738791897416, - 3.218814870900433, - 3.2805037763043394, - 3.3426370842634903, - 3.405202554428175, - 3.46819092654078, - 3.5316017442279604, - 3.595433221391273, - 3.659678203342339, - 3.7243417923319875, - 3.789425783074445, - 3.8549223429211663, - 3.920843883823067, - 3.987201623786434, - 4.053988512951434, - 4.121200890189876, - 4.188853975913767, - 4.2569602962356825, - 4.325513986446515, - 4.394529718658713, - 4.464021228504462, - 4.533980430170553, - 4.604400138447617, - 4.675295034550555, - 4.746676562348641, - 4.818534804481659, - 4.890881457523833, - 4.963726311958226, - 5.037055875225493, - 5.110878274670581, - 5.185201570408424, - 5.260009612748617, - 0.13921848746998733, - 0.16038877400011464, - 0.18178384475166887, - 0.2033908399323905, - 0.22521454601617474, - 0.24725913984717351, - 0.269511275565409, - 0.2919583990349799, - 0.3146057799398958, - 0.3374572131892837, - 0.3604978371554519, - 0.383731719285062, - 0.40716214793617067, - 0.4307731071527281, - 0.45456893206796956, - 0.4785532120536957, - 0.5027090338477198, - 0.5270195046394985, - 0.5514862821206981, - 0.5761090664303963, - 0.6257867578118923, - 0.6508323531592708, - 0.675999594768147, - 0.7012761791405271, - 0.7266682556019382, - 0.752181204855553, - 0.777802533079949, - 0.8035401282968235, - 0.8294001126555073, - 0.855370279413491, - 0.8814592909246592, - 0.9076730190306004, - 0.9339993753759208, - 0.9604282969754929, - 0.9869655923365517, - 1.0136181008452807, - 1.0403763157162231, - 1.067247689454388, - 1.0942386279849086, - 1.1213405641352676, - 1.148547756625425, - 1.1758668266497943, - 1.2033056936042053, - 1.230859335418558, - 1.2585351577711195, - 1.2863395950088485, - 1.3142671977697045, - 1.3423263392136184, - 1.3705229653429178, - 1.398851564258014, - 1.4273077081973364, - 1.455896264934413, - 1.4846226811638152, - 1.5134822278802995, - 1.5424779818505006, - 1.5716121586887197, - 1.6008798922778589, - 1.6302769532431993, - 1.6598048316782765, - 1.689466021266923, - 1.7192562069544062, - 1.7491751881708077, - 1.7792223157693092, - 1.8093929013292498, - 1.8396853764897283, - 1.8700980103331268, - 1.9006273515825778, - 1.931270559480273, - 1.9620259414333963, - 1.9928933050993003, - 2.0238727517597246, - 2.054963015133353, - 2.086163847676411, - 2.1174771088347315, - 2.148903871313126, - 2.180443083853019, - 2.2120941333734017, - 2.243858877485322, - 2.2757346306558244, - 2.3077202210586, - 2.3398199879790567, - 2.3720298329811342, - 2.4043500153362083, - 2.436786930045338, - 2.469343407922983, - 2.502018327078037, - 2.534810608703655, - 2.5677257382963807, - 2.6007597768496, - 2.6339087154964345, - 2.667177125503541, - 2.7005683804505747, - 2.7340791442383012, - 2.7677048155029578, - 2.8014493803914036, - 2.835306696455201, - 2.869271780761663, - 2.9033494188026725, - 2.937531253615484, - 2.9718128891749194, - -0.08632220017936998, - -0.07411592626232055, - -0.061865986938484774, - -0.04957857852180103, - -0.037247823541647795, - -0.0248807384845664, - -0.012483164408573444, - -4.7677802933021596e-05, - 0.012432835075110171, - 0.024953034611136404, - 0.03750751761074933, - 0.05010483410331257, - 0.06273924903590422, - 0.07540542467105626, - 0.08811236752062324, - 0.10085258398208996, - 0.11362101265046709, - 0.1264285010351438, - 0.13928560086441966, - 0.15218760347416382, - 0.16513008482653113, - 0.17812508915246195, - 0.19116719914029878, - 0.20425325470279532, - 0.21739756972425162, - 0.2306132994035872, - 0.2438989694939111, - 0.2572540516895889, - 0.27069375137115226, - 0.2842152356951373, - 0.29781814624820613, - 0.3115195881192847, - 0.3253134847132877, - 0.33919789647024867, - 0.35318963791019575, - 0.36729969867909174, - 0.38152117015659703, - 0.395846401467157, - 0.4102837492812559, - 0.42482397160392615, - 0.4394600799184549, - 0.45420219454941746, - 0.4690576705372549, - 0.48401840734673796, - 0.4990773097698984, - 0.5142430495324377, - 0.5295058690295984, - 0.5448579555516755, - 0.5603070365867246, - 0.5758375706128835, - 0.5914382905884645, - 0.6071174479714245, - 0.6228789261553733, - 0.6387054234150331, - 0.6545794138000747, - 0.6705054000953314, - 0.6864727817012333, - 0.7024724066866028, - 0.7185134425738195, - 0.7346048952741433, - 0.7507385100878756, - 0.766905235279276, - 0.7831132753414374, - 0.7993537404487676, - 0.8156179681816766, - 0.831914866898539, - 0.8482365360675259, - 0.8645749441015389, - 0.880938295893213, - 0.8973340700704022, - 0.9137531294203911, - 0.9301842716759472, - 0.9466319338103277, - 0.9630914324912445, - 0.9795596815519709, - 0.9960477053061334, - 1.012569127446148, - 1.0291269671322447, - 1.0457255340902463, - 1.0623810966988918, - 1.0791002032524069, - 1.095888578447867, - 1.1127605165441112, - 1.1297240475084158, - 1.1467857362380234, - 1.1639583160552047, - 1.1812534624410018, - 1.198677859531065, - 1.2162377946254899, - 1.23394131133045, - 1.2880255895622286, - 1.3063755544388669, - 1.3248938984470295, - 1.3435828093510107, - 1.362444397678304, - 1.3814818766024795, - 1.400696786118401, - 1.4200884633253676, - 1.4396593738269612, - 1.4594092918265935, - -0.41853486601401024, - -0.4095883824338995, - -0.40049400406604274, - -0.39125396151391767, - -0.3818756664803691, - -0.3723596392961579, - -0.3627071691627668, - -0.3529272908546297, - -0.34302880651659984, - -0.33301181496188614, - -0.322877045093352, - -0.3126339430996825, - -0.3022813409295739, - -0.29181831212809417, - -0.28125424754392236, - -0.2705865562738483, - -0.25981338210896765, - -0.24894526862823496, - -0.2379918609691536, - -0.2269509228519726, - -0.21582048738087534, - -0.20460952455877446, - -0.193312606761328, - -0.18192459646555248, - -0.17045424919582786, - -0.15890903158738157, - -0.14728192671730778, - -0.13556759847797872, - -0.12377518473579974, - -0.11189640296191516, - -0.09992303720271023, - -0.0878640541304998, - -0.07571344957387494, - -0.06346539664462014, - -0.051130157260891984, - -0.03871767964110706, - -0.0262233218979242, - -0.013640909551482672, - -0.0009763042837649394, - 0.011781456943621205, - 0.02464236829422628, - 0.03759843715862399, - 0.05064218076993754, - 0.06378377665754664, - 0.07703169302909263, - 0.0903767252974279, - 0.10382718297078863, - 0.11739061255923255, - 0.13105659744662557, - 0.14483163290043732, - 0.15872206503915942, - 0.1727164222879698, - 0.18680413775010418, - 0.20099053996830074, - 0.21528017360538554, - 0.22966076302372773, - 0.24413149850226867, - 0.25869218612050293, - 0.27332947584173484, - 0.28803013751983686, - 0.3027933409600787, - 0.31761797298400873, - 0.33249201351783153, - 0.3474156105511903, - 0.3623891416532392, - 0.3774018936370731, - 0.39245376220175876, - 0.4075447124767497, - 0.4226636585295922, - 0.4378002306399882, - 0.4529554294410709, - 0.4681312771628754, - 0.48332124532574294, - 0.49853085286823795, - 0.5137668231929968, - 0.5290256333644301, - 0.544304523540978, - 0.5596111360824816, - 0.574952162903918, - 0.5903241770596614, - 0.605735000032888, - 0.6211873288900902, - 0.6366685637400789, - 0.6521871629420462, - 0.6677539441443039, - 0.6833578039814023, - 0.6989928385906361, - 0.7146883779935371, - 0.7304722697816297, - 0.7463438835070351, - 0.7623220669239035, - 0.7784232755879192, - 0.794640343129799, - 0.8109645471573428, - 0.8274139585908467, - 0.8440048627560763, - 0.8607231459340703, - 0.8775764120960927, - 0.8945740844725685, - 0.911702709170668, - -0.6274209455743911, - -0.6178986849771608, - -0.6082529898443865, - -0.5985058406997257, - -0.5886650957999846, - -0.5787364870093945, - -0.5687433699705895, - -0.5586985279369627, - -0.5486124769055756, - -0.5385090583215977, - -0.5284159103020112, - -0.49844193262692493, - -0.478760813131621, - -0.4496844960932316, - -0.44011710997729847, - -0.4306114200846902, - -0.4211574636318778, - -0.4117432060609969, - -0.40236448202586605, - -0.3930085853102563, - -0.3836621297906735, - -0.37431845831254273, - -0.3649689251389159, - -0.355599311823535, - -0.34619434473880095, - -0.3367430660916597, - -0.32723119208929985, - -0.317645031310003, - -0.3079743337611405, - -0.29820811785280754, - -0.288336501796973, - -0.2783532205787327, - -0.2682556522221424, - -0.2580438712838462, - -0.2477178457691971, - -0.23727725153156065, - -0.2267258126195344, - -0.2160671864881314, - -0.20530274092938816, - -0.19443559883046957, - -0.18347242664957752, - -0.17241962558216395, - -0.16128147608049437, - -0.15006707186630353, - -0.13878631498901006, - -0.1274461893165344, - -0.11605976791087835, - -0.10463994298252954, - -0.09319411680531386, - -0.08172929768790738, - -0.07025705961672601, - -0.05878785937736186, - -0.04732637866567124, - -0.03588416010422302, - -0.024471030032626295, - -0.0130884886302991, - -0.001738835416603468, - 0.009569833212888401, - 0.02083032037970378, - 0.03204323627645822, - 0.0432040647542129, - 0.05430897429891157, - 0.06536172601460333, - 0.07635810863235193, - 0.08729598329608868, - 0.09818146461706112, - 0.10902170804469247, - 0.11981442675902754, - 0.13055774237601936, - 0.14126250284332142, - 0.15192820915988836, - 0.1625559238017611, - 0.17315917240317136, - 0.18375182274780633, - 0.194332559198926, - 0.20489990643380462, - 0.21547107420597955, - 0.226046716831366, - 0.2366277692449712, - 0.24723277842711155, - 0.25786286771281874, - 0.26852304128791804, - 0.27923661946163314, - 0.29002622509859943, - 0.30089727669358535, - 0.3118557344475943, - 0.3229219429641055, - 0.3340920107216938, - 0.34536020447234783, - 0.3567374521541202, - 0.36823158173775816, - 0.37983265114471276, - 0.3915307238425787, - 0.40333149176776484, - 0.4152188270430104, - 0.4271650312558819, - 0.43916497700001234, - 0.45120833965908336, - 0.46328657367195314, - 0.47540936184197635, - -0.8161197731964538, - -0.810084091413835, - -0.8040198456650949, - -0.7979187641815133, - -0.7917877475319945, - -0.7856335801752927, - -0.7794488339461194, - -0.7732268572527663, - -0.766974217484041, - -0.7606998727386487, - -0.7544021953428881, - -0.748092669026228, - -0.7417836981324213, - -0.7354737636960749, - -0.729167875386409, - -0.7228690479538911, - -0.7165696154772665, - -0.7102603613268317, - -0.7039378675424492, - -0.6975985070826936, - -0.6912306611759182, - -0.684827618378441, - -0.6783830973470013, - -0.6718849684437376, - -0.6653227265063746, - -0.6586911525955232, - -0.6519863277732809, - -0.6452026998827054, - -0.6383356877321635, - -0.631381167909294, - -0.6243347220141746, - -0.6171917965381422, - -0.609948628721612, - -0.6026028187467758, - -0.5951529955049297, - -0.587595636220313, - -0.5799279700385371, - -0.5721514434080381, - -0.5642639598229844, - -0.5562636834966324, - -0.5481540279037069, - -0.539938459887934, - -0.5316151966666824, - -0.5231840373024439, - -0.5146495731488923, - -0.506011009466099, - -0.4972685416284026, - -0.4704614916010974, - -0.46134075984883793, - -0.4521334071056695, - -0.4428412784122897, - -0.43346698971641695, - -0.42401830152486175, - -0.41450089716712357, - -0.40492028991134665, - -0.3952831502560583, - -0.38559626109488265, - -0.37586609181904374, - -0.36609876942548425, - -0.35630109397631715, - -0.34647630032058263, - -0.3366269321842399, - -0.32675746616757584, - -0.3168707246940956, - -0.30696839502944107, - -0.2970517261844603, - -0.2871205719468457, - -0.27717354492802393, - -0.2672085495597023, - -0.2572236641594543, - -0.24721628989701383, - -0.23718318681610207, - -0.22712190457607706, - -0.2170296919450454, - -0.2069027017361127, - -0.19673702570506402, - -0.1865295052472864, - -0.17627925653985876, - -0.16598539399687073, - -0.15564462406021384, - -0.14525481483126068, - -0.13481417550586006, - -0.12432024083122872, - -0.11377088694532933, - -0.10316657188617828, - -0.0925092710070059, - -0.08180047940722046, - -0.07104546384054666, - -0.06024862792526342, - -0.04940998681444242, - -0.03852964012414484, - -0.02761020581914675, - -0.01665384058273789, - -0.005659864769017364, - 0.005368909819923662, - 0.01643013659969572, - 0.027525493687637237, - 0.038654584842902295, - 0.04981687677394975, - 0.06101381717604104, - -1.0535281967762133, - -1.0474453517190323, - -1.0413311687129823, - -1.0351837110297113, - -1.0290039861093527, - -1.0227928478530106, - -1.0165481999403538, - -1.0102681800887146, - -1.0039545147605256, - -0.9976095168018353, - -0.9912327245954811, - -0.9848277973052721, - -0.978397889936095, - -0.9719415997508092, - -0.9654611326895166, - -0.9589588834969724, - -0.9524332151461192, - -0.9458813100480041, - -0.9393024173952846, - -0.9326958497806688, - -0.9260582705541871, - -0.9193884541696293, - -0.9126849355060986, - -0.9059432227736692, - -0.8991585011029579, - -0.8923282817064813, - -0.8854509023830246, - -0.8785238838563809, - -0.8715457811111271, - -0.8645163863298704, - -0.8574359403540075, - -0.8503031921273037, - -0.8431174616327675, - -0.8358800881020292, - -0.8285923980195842, - -0.8212533726229811, - -0.8138620199546762, - -0.8064195695971788, - -0.7989243699497515, - -0.7913756405725474, - -0.7837756393258737, - -0.7761257602174696, - -0.7684225308580344, - -0.7606633559221958, - -0.7528517676245394, - -0.7449849158039912, - -0.7370608649091006, - -0.7290847526483013, - -0.7210525887988317, - -0.7129624454349663, - -0.7048214346727888, - -0.6966341231299289, - -0.6883973437303372, - -0.6801105804868279, - -0.6717803142131356, - -0.6634018712549938, - -0.654974279989117, - -0.6465050671679871, - -0.637996329611354, - -0.6294468841568883, - -0.6208568608530158, - -0.6122284177361252, - -0.6035548776428605, - -0.5948325812543316, - -0.5860667539013402, - -0.5772481696497644, - -0.5683697352691865, - -0.5594384681292746, - -0.5504595495730742, - -0.5414248847771881, - -0.5323271951894801, - -0.5231722945349677, - -0.5139506078856262, - -0.5046522242693365, - -0.4952829070910436, - -0.485848914321906, - -0.47634321960102133, - -0.4667598318518058, - -0.457106207214649, - -0.44737500388931206, - -0.43755991757859514, - -0.42766983497011335, - -0.4176979938020766, - -0.4076390064651174, - -0.39750401998636775, - -0.387302703543805, - -0.3770295715474532, - -0.3666808692973138, - -0.3562678612096102, - -0.3457861087023817, - -0.3352321208796072, - -0.32461809709452005, - -0.3139554507949076, - -0.30323930635957286, - -0.29246368343911033, - -0.2816368836917893, - -0.2707520595826405, - -0.2598035061282089, - -0.24880064552138403, - -0.23773679410325377, - -1.2508561411886767, - -1.2442174464854496, - -1.2375281638719786, - -1.2307827624855516, - -1.2239760813564515, - -1.2171167113175583, - -1.2101992265735526, - -1.2032184256533616, - -1.1961825160839492, - -1.1890992490682626, - -1.1819642207161103, - -1.174773326961947, - -1.1675348414387026, - -1.160244884921547, - -1.1528998275654498, - -1.1455078634317712, - -1.138066192996577, - -1.1305723364206666, - -1.1230339616318399, - -1.1154575366287858, - -1.107840723918879, - -1.1001818276238318, - -1.0924878457111122, - -1.0847585511353806, - -1.0769932074321515, - -1.069197795174779, - -1.0613786974346802, - -1.0535381683743306, - -1.0456778855090147, - -1.0378024971213786, - -1.029914791614573, - -1.022018083017818, - -1.0141168766408293, - -1.0062166787965052, - -0.998321963832032, - -0.9904340289880755, - -0.9825542036081298, - -0.9746893166434594, - -0.9668450232244481, - -0.9590207769668513, - -0.9512228630846342, - -0.943455711385758, - -0.9357151502469621, - -0.927997136932414, - -0.9203054647242612, - -0.9126426880744067, - -0.9050008315623017, - -0.8973846467429749, - -0.8897962415374854, - -0.8822229429308408, - -0.8746712797578551, - -0.8671428639106717, - -0.8596225478591664, - -0.8520993992543184, - -0.8445797399729305, - -0.8370676103070567, - -0.8295498500999248, - -0.8220399803061058, - -0.8145474973370188, - -0.8070584787230883, - -0.7995622214181011, - -0.792065678579946, - -0.7845735015454718, - -0.7770699436116804, - -0.7695627700066092, - -0.7620573324439261, - -0.754537921741322, - -0.7470201543537267, - -0.7395166767591972, - -0.7320144124652321, - -0.724502810138933, - -0.7169960728300442, - -0.7095065547934531, - -0.7020206485115037, - -0.6945536634317988, - -0.6871186662192557, - -0.6797021205575517, - -0.6722924854150816, - -0.6649032538752828, - -0.6575478032761741, - -0.6502124103754556, - -0.6429098900390597, - -0.6356518712872159, - -0.6284232481800274, - -0.6212364370202677, - -0.6141012763229226, - -0.6070006442941804, - -0.5999179494870512, - -0.592860459127917, - -0.5858347525007952, - -0.5788226364385083, - -0.5718287321650655, - -0.5648568641980307, - -0.5578884700363966, - -0.5509057386335412, - -0.5439101964545543, - -0.536902472438042, - -0.5298641450016635, - -0.522795146010206, - -0.5156955906863745, - -1.4684732445336481, - -1.4655795170822175, - -1.4626331220465651, - -1.4596199969423198, - -1.4565277801005054, - -1.4533545818473523, - -1.4500989299977847, - -1.4467515262993615, - -1.443311315621765, - -1.4397773140411045, - -1.4361419965237534, - -1.4323972415590343, - -1.4285409618463196, - -1.424571212448366, - -1.420479379759917, - -1.4162611059467078, - -1.4119175872802507, - -1.4074502070904336, - -1.4028553379206579, - -1.3981298172878311, - -1.3932762043029596, - -1.3882984153481537, - -1.3831956722897685, - -1.3779695231330573, - -1.3726285383745633, - -1.3671718961287336, - -1.3615987066487485, - -1.355918075524157, - -1.3501367646823554, - -1.344251414145502, - -1.3382607434085663, - -1.332174181790736, - -1.3259873845987717, - -1.3196954491220725, - -1.3133073911641313, - -1.3068162720548997, - -1.300216882194199, - -1.2935215186805562, - -1.2867423009409027, - -1.279876620531054, - -1.2729215189960077, - -1.2658877825060852, - -1.258769151090628, - -1.2515569071673358, - -1.244258360560826, - -1.2368819762540553, - -1.229418314859038, - -1.221858866483527, - -1.2142123878382267, - -1.2064697864820675, - -1.1986222371033606, - -1.1906777445838, - -1.182627324392904, - -1.1744610915727731, - -1.1661865629300951, - -1.1578104693232163, - -1.1493195717016662, - -1.1407021702236633, - -1.1319672805679764, - -1.1231055216904338, - -1.1141070183035189, - -1.104982561593169, - -1.0957451741168671, - -1.0863862695612565, - -1.0768993498537536, - -1.0673022672956245, - -1.0575938426940565, - -1.0477741783759038, - -1.0378650119968302, - -1.027867350783048, - -1.0177823512880853, - -1.0076310304222793, - -0.9974343159979506, - -0.987194737249907, - -0.9769157491461127, - -0.9666240773438393, - -0.9563289154311962, - -0.9460409230395519, - -0.9357911633500775, - -0.9256042986631203, - -0.9154788868172838, - -0.9054096893762322, - -0.8954076830554891, - -0.8854670813401859, - -0.8755804050625793, - -0.8657537341337158, - -0.8559793810314709 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -61920,1987 +3625,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -2.1269142040370883, - -2.1283750737789493, - -2.129889260920502, - -2.1314664740232536, - -2.1331171894306196, - -2.134841690362113, - -2.1366418693668146, - -2.1385319340973137, - -2.1405168985691434, - -2.142603132926724, - -2.144808700424363, - -2.147144615625337, - -2.149623712309848, - -2.1522684800944307, - -2.155102015986934, - -2.1581416674884677, - -2.161406700095886, - -2.164923919763024, - -2.168715466515414, - -2.1728051081939626, - -2.177222119082363, - -2.181995485181301, - -2.1871520802136146, - -2.1927208772918525, - -2.198734405604362, - -2.2052259633326816, - -2.2122288070987866, - -2.2197739388639777, - -2.2278937685552833, - -2.2366194285251986, - -2.245976897988492, - -2.2559900475726966, - -2.26668459854878, - -2.2780848154391387, - -2.2902094110437248, - -2.3030787427821555, - -2.316710794053864, - -2.331117353479381, - -2.3463088799893788, - -2.362298960021354, - -2.3790993495815167, - -2.3967147363188097, - -2.4151513816823735, - -2.434413126981701, - -2.4544974453156274, - -2.475404523729112, - -2.4971337220837015, - -2.519682500472241, - -2.543052145722338, - -2.567246481287124, - -2.5922692371958203, - -2.6181222320004265, - -2.644805628872234, - -2.672319906290804, - -2.7006636034741085, - -2.7298325922005215, - -2.759821933801539, - -2.7906279725555256, - -2.822249168709493, - -2.8546779637469983, - -2.8879069991872015, - -2.9219326126072787, - -2.9567398659799173, - -2.9923149337522483, - -3.0286522905165794, - -3.0657443741327746, - -3.10357201088826, - -3.1421163241343164, - -3.181370530308837, - -3.2213131630249743, - -3.261924351527374, - -3.303199974218661, - -3.345136206374807, - -3.3877139518676382, - -3.4309143166201714, - -3.474736270093063, - -3.5191620635922938, - -3.56417534655262, - -3.609779033612363, - -3.6559570947290325, - -3.7026957301802113, - -3.7500022065515815, - -3.797885238126492, - -3.846333767465104, - -3.895338123277776, - -3.944912279066614, - -3.995047660639269, - -4.045737298809295, - -4.096999366870446, - -4.148852795902602, - -4.201292781613278, - -4.254315348806185, - -4.307942294024451, - -4.362169016566874, - -4.41699164722657, - -4.472434083975077, - -4.5284914135248995, - -4.585159072345935, - -4.642463141271547, - -4.700430908183087, - -4.759057989121626, - -3.354013960708142, - -3.386966728886134, - -3.4203411098255216, - -3.454137375916738, - -3.488371591747695, - -3.5230591896093015, - -3.5582021240004824, - -3.5938016696335873, - -3.629874238623924, - -3.666420080773311, - -3.703438761328231, - -3.7409446916179796, - -3.7789334537939023, - -3.8173998117952115, - -3.8563544648247845, - -3.895804796290323, - -3.9357401165333323, - -3.976150245840384, - -4.017040069192589, - -4.058397491919553, - -4.1002106719843265, - -4.142482919543385, - -4.185214982273899, - -4.228393265505174, - -4.2720049197995, - -4.3160480303307835, - -4.360508162129135, - -4.405374193012901, - -4.450647960665953, - -4.496318310473846, - -4.542375925159222, - -4.588826008559568, - -4.635672402191562, - -4.682907406055223, - -4.730525148349569, - -4.778530584305939, - -4.826920273192622, - -4.875690537163403, - -4.92484523164083, - -4.974388079779107, - -5.024317796848143, - -5.074632634196373, - -5.125334558155322, - -5.176422244709881, - -5.2278952362490685, - -5.279756624369904, - -5.332004748558508, - -5.384637558289768, - -5.437657351324113, - -5.491065656230871, - -5.544860978267448, - -5.599041797863952, - -5.653608267695472, - -5.708559531128798, - -5.763894300389307, - -5.819610788495566, - -5.875705411799293, - -5.93217536869935, - -5.989018970865125, - -6.046233212945413, - -6.103814876374965, - -6.161759800409564, - -6.220063749173907, - -6.278724858352356, - -6.337739605573439, - -6.39710258900876, - -6.456809900363644, - -6.516860299436006, - -6.577253431391518, - -6.637989749865957, - -6.699071375806739, - -6.760500583140072, - -6.822280054495481, - -6.884413034415456, - -6.946903300246874, - -7.009753796502073, - -7.072966228334386, - -7.136541397501405, - -7.200480696012121, - -7.264785806218195, - -7.329454875804671, - -7.394486006087948, - -7.459879089798608, - -7.5256340571315885, - -7.5917467551547935, - -7.658212241355088, - -7.725030088261409, - -7.792195425691521, - -7.859704174186517, - -7.927556728685293, - -7.995753793478333, - -8.064291517794794, - -8.13316450588202, - -8.202373862202688, - -8.271915320438847, - -8.341784838965513, - -8.411984468387711, - -8.482509378733438, - -8.553356455570407, - -8.624528346614063, - -3.7450056291287455, - -3.7648193377507297, - -3.7847105112970647, - -3.804687797382441, - -3.8247460993601576, - -3.8448809437400735, - -3.865101162723959, - -3.885414920122486, - -3.905816185480899, - -3.926299854925637, - -3.946876311429185, - -3.967540131811229, - -3.988286633927305, - -4.009127725394477, - -4.03005791253762, - -4.051072416638696, - -4.072184750691711, - -4.0934089151081885, - -4.114742231704683, - -4.136185060079167, - -4.1794349767015575, - -4.201248842333884, - -4.223203007646468, - -4.245308287775208, - -4.2675568843077585, - -4.289943464707497, - -4.312479950855099, - -4.335157226475683, - -4.357968367273747, - -4.380925860518667, - -4.404020906743674, - -4.427245909188746, - -4.45061398049416, - -4.474136488550066, - -4.497806366009794, - -4.52161701605081, - -4.545579975800586, - -4.569687910070054, - -4.593933546877143, - -4.618328065768672, - -4.642879629128549, - -4.667579415692844, - -4.692420296148425, - -4.717409746770066, - -4.7425390530292955, - -4.767800635468977, - -4.793202220557825, - -4.818734340467884, - -4.844387347834023, - -4.870168786426063, - -4.896084712663043, - -4.922126807641726, - -4.948288097018275, - -4.974575437141851, - -5.0009841167472935, - -5.027508910021197, - -5.054156960808938, - -5.0809350939349205, - -5.107839417098741, - -5.134867779468973, - -5.162027329399513, - -5.18931774527113, - -5.216739316908463, - -5.2442998769388485, - -5.272001595276642, - -5.299845654893875, - -5.327838573338745, - -5.3559858942993985, - -5.384288238340735, - -5.412744437068295, - -5.441355233024423, - -5.470120484037259, - -5.499038902385233, - -5.528109215448986, - -5.557330982091333, - -5.586704467846095, - -5.616228256343837, - -5.645901263840279, - -5.675725637747032, - -5.7057009198497575, - -5.7358234634007825, - -5.76609534156538, - -5.796516649054784, - -5.827081180965147, - -5.857786605178189, - -5.888634284366535, - -5.919623816700181, - -5.950750018019806, - -5.982015792001583, - -6.013426379661593, - -6.04497757641397, - -6.076666058495762, - -6.1084981134848455, - -6.14047587846518, - -6.172595327461625, - -6.204863220037207, - -6.237284224047752, - -6.269852851425005, - -6.302575182612253, - -6.335459352712211, - -3.786181618802971, - -3.8007579114276666, - -3.815441212398992, - -3.830237030002149, - -3.845139239011811, - -3.8601544934489036, - -3.8752891191459153, - -3.890535501604086, - -3.9058863755169098, - -3.92134836600646, - -3.936926089027467, - -3.952610849078435, - -3.9684090803603826, - -3.984326640247545, - -4.000354282534779, - -4.016499399934357, - -4.032769152806461, - -4.049152179514667, - -4.065637512118583, - -4.082231534482534, - -4.098938635274515, - -4.115746124452279, - -4.1326602177448075, - -4.14968541551902, - -4.166806151139498, - -4.184008575964317, - -4.201296440130431, - -4.218669567494776, - -4.236111411972462, - -4.25362658036382, - -4.271216345065009, - -4.288861887588589, - -4.306570540783978, - -4.324347528722532, - -4.3421741315964315, - -4.360038245554153, - -4.3779498895548254, - -4.395918159119587, - -4.413933133713728, - -4.432006098427144, - -4.450146632241676, - -4.4683423411714855, - -4.486583799315344, - -4.504882229683318, - -4.523245090046125, - -4.541660928859285, - -4.560141615731808, - -4.578696246064633, - -4.597313769137597, - -4.6160112724715425, - -4.634802540253862, - -4.653675908026013, - -4.672624993731432, - -4.691669912666454, - -4.710829478049757, - -4.730095718787104, - -4.749481416730545, - -4.768998291763666, - -4.788633823323876, - -4.808376146038761, - -4.828236406358373, - -4.848225017206682, - -4.8683302020793295, - -4.888563079261724, - -4.908934004283808, - -4.929429838911476, - -4.950060261013213, - -4.97083485800586, - -4.991740443367997, - -5.012764827483544, - -5.033918110694742, - -5.055211964614271, - -5.076636645026134, - -5.098198072536912, - -5.119899757178516, - -5.141725281403321, - -5.163656729027918, - -5.185692240106821, - -5.207829637802158, - -5.2300494186941515, - -5.252347974996271, - -5.274722401223385, - -5.297155899758969, - -5.319645071916595, - -5.3421863763420205, - -5.3647649281407634, - -5.3873674429652585, - -5.409991025376599, - -5.432633671187334, - -5.455285594738709, - -5.523236189161378, - -5.545863278703685, - -5.5684816310545155, - -5.591092638307444, - -5.613691435601755, - -5.63627790482517, - -5.658853098706981, - -5.681414109877673, - -5.703961157501137, - -5.726496218840484, - -3.933490312435879, - -3.94534297706408, - -3.957168706401654, - -3.96897052683591, - -3.9807535762211317, - -3.992519267910593, - -4.0042698390665645, - -4.0160119593259545, - -4.027752136292331, - -4.03949161325248, - -4.051231930021629, - -4.062980261816085, - -4.074736676269652, - -4.086501506209965, - -4.098281944029811, - -4.1100766347840105, - -4.121885358831154, - -4.133716398046521, - -4.145577255978358, - -4.157467280156185, - -4.169385746076035, - -4.181339486322197, - -4.193324474790324, - -4.2053372974132195, - -4.217384566292678, - -4.229471737210057, - -4.241593712958434, - -4.25374623582135, - -4.265936531572738, - -4.278158041634087, - -4.290404223508725, - -4.302682145554291, - -4.314987137859495, - -4.327315910530062, - -4.339677401275055, - -4.35208055256471, - -4.364523569204005, - -4.377002499064623, - -4.389522229037669, - -4.4020739937714914, - -4.414650407548754, - -4.427257974123807, - -4.439902686405196, - -4.452576652336079, - -4.465272104345927, - -4.477996247732001, - -4.490741703079267, - -4.503501641529194, - -4.516284114856258, - -4.529082246214447, - -4.541890341602711, - -4.554717139819299, - -4.567570593690342, - -4.58044515697215, - -4.59333534241277, - -4.606250789088029, - -4.619191095767874, - -4.632155584959655, - -4.645154926935369, - -4.658199917724254, - -4.671290460261146, - -4.684426068566404, - -4.697616712982928, - -4.710861122109666, - -4.7241578491015215, - -4.737516105097036, - -4.750934758541376, - -4.76441316072289, - -4.777961246731914, - -4.791588483395642, - -4.805293071125039, - -4.819072160030053, - -4.832931873859249, - -4.846866126481554, - -4.860867757559015, - -4.874940255449285, - -4.889086470286058, - -4.903298242863331, - -4.917568257160301, - -4.931900491676357, - -4.946286249611985, - -4.960722703707453, - -4.975224375024082, - -4.989781232423468, - -5.004380442773607, - -5.019033659979768, - -5.033747427958854, - -5.048489801049547, - -5.063229987943811, - -5.077968807377105, - -5.092679985153177, - -5.10733973571018, - -5.121955817940357, - -5.136537800918181, - -5.151059248521788, - -5.165495750446772, - -5.179862457268092, - -5.194145434059895, - -5.208328335596258, - -5.222425615640283, - -3.9950779779760026, - -4.0027321609940945, - -4.010318550574836, - -4.017860506791925, - -4.025363099029712, - -4.0328294062682195, - -4.040285138254213, - -4.047741495758739, - -4.055207020581741, - -4.062709551644009, - -4.070282388985486, - -4.093715980837183, - -4.109982711463232, - -4.1353979791323265, - -4.144147908960321, - -4.15304762570049, - -4.162086314264522, - -4.171251450711989, - -4.1805445559874865, - -4.189952177570533, - -4.199459275748508, - -4.209063833716231, - -4.218761009197817, - -4.228534044938063, - -4.238366017501636, - -4.248249072526143, - -4.258166610260879, - -4.268102509017259, - -4.278049121978263, - -4.287993396705653, - -4.297922616972995, - -4.307832909164649, - -4.317724309493567, - -4.327594890429815, - -4.337442610619796, - -4.347269703412194, - -4.357078116103587, - -4.366869595301803, - -4.376647783939871, - -4.386418050480991, - -4.396185481497163, - -4.405954841044434, - -4.415732594355267, - -4.4255267210162454, - -4.4353461306259625, - -4.445200228420205, - -4.4551014580972, - -4.465062694298085, - -4.4750938736131705, - -4.4852042406779855, - -4.495405562653048, - -4.505707955359513, - -4.516117949334666, - -4.526646992707553, - -4.537305309594693, - -4.548095673887451, - -4.559021313341086, - -4.570091072963844, - -4.581311118613483, - -4.592680999531776, - -4.60420489894544, - -4.615886155556345, - -4.62772044359257, - -4.6397105708777415, - -4.651859280418858, - -4.664159108641966, - -4.676601501321324, - -4.689189123657375, - -4.7019229110400875, - -4.714790430168055, - -4.727791830914177, - -4.740926764292933, - -4.754179888300779, - -4.7675358009261775, - -4.780998243108666, - -4.794568351992258, - -4.808227258587106, - -4.821976399414885, - -4.835816481291826, - -4.84972743085957, - -4.863709679389064, - -4.8777615761029205, - -4.891858022703737, - -4.905975065987479, - -4.920110999951841, - -4.9342620371109245, - -4.948406431888239, - -4.962551463646911, - -4.976706876440703, - -4.990860323232211, - -5.005002714382581, - -5.019148213756326, - -5.033308869747961, - -5.047476940398256, - -5.061671378054449, - -5.075921597176724, - -5.090229143845626, - -5.104606387225128, - -5.119064990828827, - -5.133592315738014, - -4.088337136098173, - -4.097970258608889, - -4.107677690885431, - -4.117449949272219, - -4.12729573315912, - -4.137223556574432, - -4.147224383156802, - -4.157289979834928, - -4.1674284796873335, - -4.177649991548822, - -4.187950625367261, - -4.198342700572686, - -4.208839370011105, - -4.219436722646556, - -4.2301410035423705, - -4.240956381313508, - -4.251872853029277, - -4.262878993723451, - -4.273972424853523, - -4.28515050736651, - -4.296399357869678, - -4.30771332948936, - -4.319087065928745, - -4.330506149186027, - -4.3419578896796835, - -4.353437740111412, - -4.36494250115655, - -4.376464272064043, - -4.387999105696527, - -4.399543441351293, - -4.411090446203011, - -4.422635973912635, - -4.434176470912006, - -4.4457070289141, - -4.457223989357132, - -4.468723958774277, - -4.48020433471272, - -4.4916643704507635, - -4.503102029757241, - -4.514515603741001, - -4.525906353737199, - -4.537275764342477, - -4.548622077374064, - -4.559944883570887, - -4.571246866162933, - -4.582527089190367, - -4.593785605559459, - -4.627470582552284, - -4.638670242677745, - -4.64986056963583, - -4.661043415697728, - -4.672221317461515, - -4.683401053051451, - -4.69458817161898, - -4.705788180554572, - -4.717007128216693, - -4.72825141704382, - -4.739527702999476, - -4.75084227226348, - -4.762201876146333, - -4.773610308922792, - -4.785070739004729, - -4.796587949104076, - -4.808165581312132, - -4.819806212995559, - -4.831511642638528, - -4.843282464314564, - -4.8551182047353345, - -4.867017626216111, - -4.8789795057494105, - -4.891002058630999, - -4.903082783024032, - -4.915219781986362, - -4.927410945574888, - -4.939653051837878, - -4.951942744440506, - -4.964277379945139, - -4.976656456328501, - -4.989079365788309, - -5.001543141992317, - -5.014045952081647, - -5.0265861897275395, - -5.03916150618479, - -5.051769914257376, - -5.0644120063513896, - -5.0770899079001115, - -5.089805345062624, - -5.102563915128867, - -5.115370316423131, - -5.1282248221682565, - -5.141127732151512, - -5.154081811377849, - -5.1670893439015355, - -5.180149604796718, - -5.193265464092088, - -5.20643923618495, - -5.219668971080141, - -5.232955040566582, - -5.246297843612133, - -5.259695566881227, - -4.265643821028175, - -4.274514372316885, - -4.283440892007613, - -4.2924211059450945, - -4.301455966283747, - -4.310546211081697, - -4.319689299337181, - -4.328882896411064, - -4.338128562395543, - -4.347428482182929, - -4.356781641735555, - -4.366191536109598, - -4.375661139147513, - -4.385188449682813, - -4.394775535683821, - -4.404424549158746, - -4.414133221181398, - -4.423898106730233, - -4.433718237663216, - -4.4435927454046675, - -4.453517681171093, - -4.463491643869001, - -4.47351295199642, - -4.483576503284618, - -4.493676883986176, - -4.503811381548755, - -4.513978160047983, - -4.52417415312657, - -4.534397722930188, - -4.544648459286802, - -4.55492603551447, - -4.565228974849322, - -4.575556431385376, - -4.5859092159111645, - -4.596288164794657, - -4.606692132213578, - -4.61711987975575, - -4.627572159217845, - -4.638047204482916, - -4.648544233484626, - -4.65906518861616, - -4.6696112694548235, - -4.680179220878913, - -4.690766328514205, - -4.701375982233554, - -4.712005381444834, - -4.722652603010575, - -4.733322703622528, - -4.744011617029999, - -4.754717719914648, - -4.765448123566607, - -4.776207588404798, - -4.786993409571812, - -4.797805127555847, - -4.808649557202737, - -4.819522270755557, - -4.830422600527758, - -4.841358404366065, - -4.852332137730878, - -4.8633428384523505, - -4.874390195467136, - -4.8854766833685215, - -4.896595626328848, - -4.907743148646434, - -4.918924691033788, - -4.930130564447633, - -4.941353937661191, - -4.952602018957954, - -4.96388017311218, - -4.975180373587481, - -4.986494943550396, - -4.99782994786193, - -5.009175574982185, - -5.020522171671139, - -5.031875866022481, - -5.043243221080324, - -5.054617546108108, - -5.065992220907077, - -5.077374962554206, - -5.088758403254897, - -5.100136064574382, - -5.111516998172153, - -5.12289398961077, - -5.134261852761206, - -5.145631754770746, - -5.157013450417461, - -5.168401425081393, - -5.179791429449333, - -5.191194864410948, - -5.202607015095256, - -5.214024337824965, - -5.225459271749234, - -5.236923607014319, - -5.248412675928224, - -5.259920322886171, - -5.271455441081667, - -5.283011253603416, - -5.294582038273827, - -5.3061778084390525, - -5.31779187180976, - -4.407672107347303, - -4.415224860545216, - -4.422809180756016, - -4.43041946210634, - -4.438050489045672, - -4.445711192851226, - -4.453395855876591, - -4.461098837124338, - -4.468828533119622, - -4.476592896182802, - -4.48438694347245, - -4.492206311269431, - -4.50005953053234, - -4.507942328767837, - -4.515850679593834, - -4.52379303737535, - -4.531766458732034, - -4.539767928867823, - -4.547805461924806, - -4.555885842030738, - -4.564006353852433, - -4.572165206486305, - -4.580369861993092, - -4.58862012407039, - -4.59691503860813, - -4.605261110178175, - -4.6136652832448775, - -4.622129889165381, - -4.6306569585869015, - -4.639251686485663, - -4.6479171900498395, - -4.656657181638813, - -4.665476721869883, - -4.67438179558223, - -4.68337752999124, - -4.692465554162305, - -4.701647471346426, - -4.7109309091430775, - -4.720321937666157, - -4.729820120314297, - -4.7394323468196795, - -4.749163751140198, - -4.7590097577964094, - -4.768965805266632, - -4.7790368900594, - -4.78922498373238, - -4.799521268589816, - -4.809931135240877, - -4.820456736406603, - -4.831084295985855, - -4.8418201018863884, - -4.852667419828723, - -4.863609925762681, - -4.8746357763235695, - -4.88575319881381, - -4.896966280908901, - -4.908260715539363, - -4.919650977322894, - -4.931148456376537, - -4.942737797028921, - -4.954407240385137, - -4.96616671119354, - -4.978019828384195, - -4.989949343959565, - -5.00196449895846, - -5.014071531706051, - -5.026253229659552, - -5.038525194192092, - -5.050903302006075, - -5.063372770665807, - -5.075921554341968, - -5.088566160951067, - -5.101318979181288, - -5.1141645494541255, - -5.12711851211081, - -5.140195574810032, - -5.153380097015964, - -5.166658670940059, - -5.180047122519831, - -5.193557658826094, - -5.20717440768747, - -5.220910668206498, - -5.2347781582057, - -5.248759453730229, - -5.262865945119512, - -5.277108423594999, - -5.291467272189475, - -5.305923693378042, - -5.320484912496633, - -5.335156407646851, - -5.349917857054805, - -5.364773029067665, - -5.379725216167872, - -5.3947541068299385, - -5.409840595553883, - -5.424985812763279, - -5.440189771723865, - -5.455433288824837, - -5.470716060413073, - -5.4860379857788, - -4.598804036000855, - -4.610129220990871, - -4.621479071409933, - -4.632839597068629, - -4.644198646912476, - -4.655554441362306, - -4.666905843729548, - -4.678243982185161, - -4.6895681370536915, - -4.700877583642363, - -4.712165420227825, - -4.723424104350753, - -4.734651739670181, - -4.745846888027564, - -4.757001658964416, - -4.768112034696135, - -4.779179503904686, - -4.790206014218077, - -4.801188174960723, - -4.812123291654017, - -4.823014404916911, - -4.83386572523944, - -4.844676743152103, - -4.85544884565773, - -4.866190786275822, - -4.876901602066151, - -4.887580693910043, - -4.898237367165757, - -4.908878620568715, - -4.919501764674748, - -4.930104912783502, - -4.940697524121427, - -4.951275136917967, - -4.96183279230865, - -4.972379528217582, - -4.982907478698233, - -4.993411925103137, - -5.003905164548492, - -5.0143992762705345, - -5.024891860621739, - -5.035379246834715, - -5.0458722986838005, - -5.05636428248481, - -5.066846972468587, - -5.077327946044704, - -5.0878158333902075, - -5.0983022992049944, - -5.10877800809899, - -5.119251880045047, - -5.129714810773368, - -5.140157931917126, - -5.150589396756327, - -5.160999132890095, - -5.1713780228099635, - -5.181733671404192, - -5.192072827698175, - -5.2023824890063235, - -5.212650165030613, - -5.2228846525506, - -5.233075380697273, - -5.243212232178172, - -5.253305768056204, - -5.263368691096858, - -5.273392278882971, - -5.283368444856189, - -5.2933147803857805, - -5.303228896208541, - -5.313109647940018, - -5.322978613611336, - -5.332835316456723, - -5.3426802219564, - -5.352534848520035, - -5.3624209256141055, - -5.372340570459448, - -5.382296846045001, - -5.392318007958687, - -5.40241335122983, - -5.412593381986145, - -5.422891273221197, - -5.433333995444336, - -5.443920048565983, - -5.454644804138879, - -5.4655214891429775, - -5.476544442555047, - -5.48770610462007, - -5.499014448666232, - -5.5104621630635515 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -63910,1987 +3643,15 @@ }, "name": "py est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -1.4944586720034125, - -1.495856226571138, - -1.4972428695688806, - -1.4986258561055819, - -1.5000117493091125, - -1.5013952786502411, - -1.5027710590475454, - -1.5041448242103437, - -1.505511169693856, - -1.5068642310096552, - -1.5082091363246521, - -1.5095416041766998, - -1.5108573516318091, - -1.5121617752254004, - -1.513460073967388, - -1.5147488288594146, - -1.516024951468079, - -1.5172941249134813, - -1.5185540812207243, - -1.5198028417559006, - -1.521046204579436, - -1.5222896239340726, - -1.523532860825798, - -1.524777004633879, - -1.5260303554845067, - -1.5272987168445036, - -1.5285877075999257, - -1.5299050320963574, - -1.5312572056524685, - -1.5326499150229198, - -1.5340882239843923, - -1.5355762556128705, - -1.5371184348369928, - -1.5387187573458196, - -1.5403796427444805, - -1.542104907113402, - -1.543897398096391, - -1.5457565583413653, - -1.5476811784688551, - -1.5496739386744987, - -1.5517362465565994, - -1.5538624315082687, - -1.5560511680651734, - -1.55829901199557, - -1.5605936109081138, - -1.5629317722844565, - -1.5653098042909406, - -1.5677171910529093, - -1.5701493252659173, - -1.5726131799648582, - -1.5751169628418094, - -1.5776605064915108, - -1.5802544260089824, - -1.5829097025982455, - -1.585624719939343, - -1.5883962002033072, - -1.591233174166457, - -1.5941457114394066, - -1.5971317864439138, - -1.600200408449645, - -1.6033600217917365, - -1.6066051659648355, - -1.6099403273587638, - -1.61336960197287, - -1.6168840645251676, - -1.6204729753589289, - -1.6241370997739293, - -1.627876615900659, - -1.6316785990573148, - -1.635541908510839, - -1.6394652835548311, - -1.6434346335332062, - -1.647435632214967, - -1.6514659902267956, - -1.6555227069346048, - -1.6595908903822634, - -1.6636678277972976, - -1.667750939782741, - -1.6718262526392513, - -1.6758911649448551, - -1.6799437613385306, - -1.683971730964179, - -1.6879638066605522, - -1.6919193528488043, - -1.6958384572565002, - -1.6997127481281429, - -1.7035431899600344, - -1.707331510908786, - -1.7110718040902435, - -1.7147589321462446, - -1.7183961956629483, - -1.7219874204106307, - -1.7255292523067534, - -1.7290256454039605, - -1.7324810317735873, - -1.7358938907558317, - -1.7392686666514499, - -1.742610058000549, - -1.7459187132604677, - -1.749196500438234, - -1.752448635860826, - -1.6577036318610474, - -1.6591038712972834, - -1.6604687597774868, - -1.661803072058783, - -1.6631068954576094, - -1.664379963376243, - -1.665628517953629, - -1.666858432162458, - -1.6680712364330352, - -1.6692728859811587, - -1.6704689813972806, - -1.6716605959161461, - -1.672850878782446, - -1.6740424139809715, - -1.675234105398068, - -1.6764229432608788, - -1.6776076532914963, - -1.6787877859764908, - -1.6799599700964127, - -1.6811231910395608, - -1.6822771383001867, - -1.683419049604432, - -1.6845450179403703, - -1.6856534818455118, - -1.6867433292571958, - -1.6878088933416573, - -1.6888474120496744, - -1.6898586776082227, - -1.6908403816891349, - -1.6917915163731947, - -1.692712272724728, - -1.6936032673893624, - -1.6944645809369792, - -1.695296526014904, - -1.6961004935370938, - -1.6968769859986284, - -1.6976291113292095, - -1.6983592461341046, - -1.6990665296836225, - -1.6997506791913943, - -1.7004151901478413, - -1.7010626388509484, - -1.7016909743913007, - -1.7023022290360892, - -1.7028991354651497, - -1.7034810567277638, - -1.7040484971992076, - -1.7046015418101412, - -1.7051388870867863, - -1.7056591549830205, - -1.7061620590637765, - -1.706647129872198, - -1.7071121954346349, - -1.7075565901597332, - -1.7079793386869295, - -1.708377125617693, - -1.7087455454423224, - -1.7090817079239493, - -1.7093837409664892, - -1.709648488102491, - -1.7098722780202062, - -1.710051092099545, - -1.7101822109768245, - -1.710263514308146, - -1.7102918079602791, - -1.7102645009559014, - -1.7101807258752009, - -1.710039065254401, - -1.709839776100888, - -1.7095874394827617, - -1.7092837997511998, - -1.7089317494382907, - -1.7085387500336533, - -1.7081110539373379, - -1.707650778009457, - -1.7071602875553997, - -1.7066440124960234, - -1.706099802584709, - -1.7055274564688379, - -1.7049317316485142, - -1.7043054959908017, - -1.7036421911507567, - -1.702945288423587, - -1.7022165834708562, - -1.7014463896205136, - -1.700625972559703, - -1.6997580509074475, - -1.6988328535164032, - -1.6978414728410267, - -1.6967881492573702, - -1.695676827515358, - -1.69449824162212, - -1.6932439717666894, - -1.691919528860514, - -1.6905169314575064, - -1.689029263503643, - -1.6874642965811097, - -1.6858155520314282, - -1.684077442580992, - -1.6822593669327226, - -1.802893570829379, - -1.8022152818753074, - -1.801463333272698, - -1.8006484787250252, - -1.7997657766719914, - -1.79881090194645, - -1.797794943579275, - -1.7967282605437531, - -1.7956052027705016, - -1.7944213208681767, - -1.7931892371368667, - -1.7919042062630834, - -1.790562242995567, - -1.7891773091208745, - -1.7877444902348252, - -1.7862596022925006, - -1.7847378584219953, - -1.7831947052343449, - -1.7816279747919923, - -1.7800379968243851, - -1.7768241094448325, - -1.7752082445873067, - -1.7736017064391605, - -1.7720160543173404, - -1.77044431435291, - -1.7688811299259724, - -1.767338708887575, - -1.76580854908943, - -1.76428412730912, - -1.7627777905525883, - -1.7612808079095073, - -1.7597864450790726, - -1.7583073025591196, - -1.7568540957872867, - -1.7554203868366212, - -1.7539994576027644, - -1.7526018300421815, - -1.7512201103078329, - -1.7498474594461173, - -1.7484937508167022, - -1.7471659362515621, - -1.7458562945215246, - -1.74455730127211, - -1.7432752056757543, - -1.7420019476290878, - -1.7407305202300642, - -1.7394675113940605, - -1.738204000627133, - -1.7369321912455526, - -1.7356586110840249, - -1.7343885022328533, - -1.7331152713536568, - -1.7318327079272298, - -1.7305466046307758, - -1.7292530674483964, - -1.7279483756662388, - -1.7266385342655395, - -1.7253290703458606, - -1.7240172927102322, - -1.7227008791010248, - -1.7213855612225535, - -1.7200712785501613, - -1.7187585005695767, - -1.7174534878047996, - -1.7161581093934568, - -1.7148738222803739, - -1.713605610878084, - -1.7123576674095629, - -1.7111311484536698, - -1.7099255659844974, - -1.7087412406323492, - -1.7075787344519526, - -1.706437527354411, - -1.7053160533071272, - -1.7042135553891034, - -1.7031306919965383, - -1.702067061485218, - -1.7010211931774786, - -1.6999955035456036, - -1.698990349395579, - -1.6980017377108632, - -1.6970327542921233, - -1.6960833168592875, - -1.695147125459904, - -1.694221598627603, - -1.693307978644249, - -1.6924066039982628, - -1.6915121398617126, - -1.6906280075759919, - -1.6897588320825794, - -1.6889002254552143, - -1.688048839022594, - -1.687209484623272, - -1.6863855314811111, - -1.6855729735351106, - -1.684778261791003, - -1.6840062216430443, - -1.6832517163111667, - -1.6825219644983846, - -1.6818232317686455, - -1.9362519094911705, - -1.9374369188449936, - -1.9386535996687384, - -1.939907804261975, - -1.9411935312767292, - -1.942517615966735, - -1.9438861417772444, - -1.9452915897035097, - -1.9467267702208997, - -1.9481976656976616, - -1.9497092857083589, - -1.9512530074875614, - -1.9528349156622393, - -1.9544606077882445, - -1.9561209575070782, - -1.9578234079761336, - -1.9595740700779967, - -1.9613618392397618, - -1.9631759556270816, - -1.965021965504185, - -1.966904275223992, - -1.9688105176499087, - -1.9707465093022545, - -1.9727160804081123, - -1.974704290707623, - -1.9766976382803647, - -1.9786987353182597, - -1.9807077579025936, - -1.9827088303006548, - -1.984705672334341, - -1.9866990994084015, - -1.988671149734652, - -1.9906285280353453, - -1.9925748161261416, - -1.994492246843118, - -1.9963692734375307, - -1.998214359699114, - -2.000035878826215, - -2.001824692216236, - -2.003591063411609, - -2.005343276161611, - -2.007070073311034, - -2.0087630643890444, - -2.01043191116829, - -2.0120838901381135, - -2.0137089396634233, - -2.015317873351105, - -2.016919145256479, - -2.018503366275436, - -2.0200868509293293, - -2.0216821248326986, - -2.023279230027294, - -2.0248730337880296, - -2.0264822446257105, - -2.028125032124841, - -2.0297951593458863, - -2.031504317514656, - -2.033262942538532, - -2.035060190375028, - -2.0368856253823084, - -2.0387489481352485, - -2.0406598909637026, - -2.0426084633689463, - -2.044604669406478, - -2.046658018051066, - -2.0487574860064686, - -2.050911862472844, - -2.053129956952161, - -2.055401073737392, - -2.0577153787065705, - -2.0600824906371757, - -2.062513846469162, - -2.0650023556079034, - -2.0675533200228338, - -2.070170037813272, - -2.072838788048594, - -2.075543800790885, - -2.078282636487288, - -2.081052051855956, - -2.08383416099763, - -2.0866238858719317, - -2.089416911387759, - -2.0921976916074287, - -2.0949605122040897, - -2.097700320051999, - -2.100403306042779, - -2.1030569902621283, - -2.105656582922767, - -2.1081979382809224, - -2.1106721417041294, - -2.1176052997995747, - -2.119743862132409, - -2.121793866303743, - -2.1237549144782166, - -2.125623518961725, - -2.1273980141113453, - -2.12907815629429, - -2.1306628232761526, - -2.132150891837088, - -2.1335434635069452, - -2.1760125892249444, - -2.1774656797489897, - -2.1788313552338483, - -2.180112244174914, - -2.1813146213507504, - -2.1824394536033753, - -2.1834885041146657, - -2.184469625090292, - -2.185390471404465, - -2.186251714107183, - -2.1870544875574907, - -2.187807102457884, - -2.1885090085996133, - -2.1891599091690295, - -2.1897680957868664, - -2.1903315955289293, - -2.190849370470061, - -2.191330833337378, - -2.191784558473756, - -2.192209101504079, - -2.192603116728455, - -2.192974505440486, - -2.193318540775826, - -2.1936309469393858, - -2.1939194077442528, - -2.194190384398719, - -2.1944378198378707, - -2.194656917149664, - -2.194855858154269, - -2.195027222298001, - -2.195163630355718, - -2.1952730998423955, - -2.1953502937166847, - -2.195390653587341, - -2.1954037792679735, - -2.1953991161029087, - -2.1953734455509646, - -2.1953217043080526, - -2.195249266660717, - -2.1951462684139353, - -2.1950040196272638, - -2.1948297684825917, - -2.194630252817629, - -2.1943964378392664, - -2.1941202056584173, - -2.1938097612172864, - -2.193457260054239, - -2.1930555144849806, - -2.192613758704816, - -2.1921253066570046, - -2.1915841382817756, - -2.1910003587656646, - -2.190383227970119, - -2.189727308501925, - -2.189027584403692, - -2.1882950130321506, - -2.187529798632803, - -2.186731699419576, - -2.1859127255468174, - -2.1850848901022086, - -2.1842485596505337, - -2.183404047791198, - -2.182562349732548, - -2.181722755779238, - -2.1808843537241414, - -2.1800571057299813, - -2.1792404981698086, - -2.17843422412307, - -2.177648794101161, - -2.1768941263778268, - -2.176168820841984, - -2.1754704414335886, - -2.174805314266753, - -2.174167636806658, - -2.1735504671830093, - -2.1729573110424276, - -2.17239097337254, - -2.1718435533904246, - -2.171308047128192, - -2.1707881573083476, - -2.1702756247895483, - -2.1697676874086813, - -2.1692779056420015, - -2.168797034740711, - -2.1683132493146515, - -2.167837927999183, - -2.167377294684109, - -2.166900711528005, - -2.1663788590810906, - -2.165812461935035, - -2.1651789591146366, - -2.164458230061131, - -2.163657737405279, - -2.1627866268804192, - -2.1618226449654707, - -2.160745443845348, - -2.1595696556670108, - -2.1582845109819013, - -2.156877125561845, - -2.1553614532348075, - -2.311249461775197, - -2.3103154229856275, - -2.3092857702096112, - -2.3081831737458254, - -2.3070140974148483, - -2.305782946638807, - -2.3045142541124015, - -2.303220011847851, - -2.3019097487436584, - -2.300609304982803, - -2.299349149643749, - -2.2960789567320536, - -2.2943717622974265, - -2.292541237612779, - -2.2921325094688094, - -2.29182952289259, - -2.2916218889482, - -2.2914973283864932, - -2.291454519006676, - -2.291480381440395, - -2.2915607027695906, - -2.2916911460143865, - -2.2918649671683666, - -2.292066678380799, - -2.2922801811202183, - -2.292496069308901, - -2.29269890117509, - -2.2928737701636313, - -2.2930117278697018, - -2.2931007572792304, - -2.293129559384984, - -2.2930930648716905, - -2.292989980857855, - -2.2928193808568302, - -2.2925802281944963, - -2.2922734774718774, - -2.2919019643615606, - -2.291468390894967, - -2.29097526243463, - -2.29042682465573, - -2.2898289540733705, - -2.289187233313299, - -2.2885070352178807, - -2.2877968964412747, - -2.287066222807486, - -2.2863232088683696, - -2.285580613004039, - -2.284851318640307, - -2.2841439952092424, - -2.2834667691829464, - -2.2828313111348866, - -2.2822479073684376, - -2.281722164000169, - -2.281265576405888, - -2.2808881698136596, - -2.280592081258875, - -2.2803800743788445, - -2.2802606198754782, - -2.28024039911689, - -2.2803188816276587, - -2.2805004170956136, - -2.280788590628717, - -2.2811793587889833, - -2.281676231122695, - -2.2822816485613844, - -2.2829888220124523, - -2.2837898966383157, - -2.284687348449174, - -2.285682584332034, - -2.2867639636623665, - -2.2879318108771445, - -2.2891854202455857, - -2.290510357948804, - -2.291891989089186, - -2.2933328419548697, - -2.294834222779227, - -2.296378092190563, - -2.2979648412917597, - -2.2995943560234275, - -2.301247326216229, - -2.3029234058381225, - -2.3046192674075012, - -2.306310701621052, - -2.30797442044444, - -2.3096068616291276, - -2.3112031513316653, - -2.3127422444620667, - -2.3142297264626084, - -2.3156733359841777, - -2.3170614355390455, - -2.3183855663224113, - -2.3196577813058066, - -2.320889072952691, - -2.3220727243152455, - -2.323226275505719, - -2.324378282960421, - -2.325532083422807, - -2.3266990237830223, - -2.327889208578437, - -2.329091476948019, - -2.4522284546473134, - -2.4540271750113622, - -2.455848768275263, - -2.4576843567268662, - -2.4595417403455575, - -2.4614285683748625, - -2.4633366085514607, - -2.465258418543847, - -2.467201348585687, - -2.4691749321437353, - -2.4711764103550746, - -2.473217684799457, - -2.475311534071763, - -2.4774552431713155, - -2.47965443946439, - -2.4819127146336992, - -2.4842212342532717, - -2.486569677525141, - -2.488955146197986, - -2.491374507224602, - -2.493815009522798, - -2.4962704739339006, - -2.498735081637873, - -2.5011955588148824, - -2.503640308093029, - -2.5060644463534674, - -2.5084644144649153, - -2.5108334859733743, - -2.513167396714345, - -2.5154623046302933, - -2.517712584108593, - -2.5199138852253884, - -2.522062549816809, - -2.524154923830438, - -2.526188492431031, - -2.528159797497295, - -2.5300661523756287, - -2.531907906929401, - -2.5336829947901127, - -2.5353896436188164, - -2.537030190820453, - -2.5386071121152054, - -2.5401186370203734, - -2.541564460436666, - -2.5429482196559126, - -2.544269049328233, - -2.545527073593931, - -2.548966037076691, - -2.5500055012632914, - -2.55099698837075, - -2.551942347055009, - -2.5528441535889663, - -2.5537096772881567, - -2.5545445343930515, - -2.5553542352329597, - -2.5561451392363757, - -2.556923839069351, - -2.5576968974092598, - -2.558470520844482, - -2.559251485061325, - -2.5600433046216873, - -2.5608488355944843, - -2.561672707635826, - -2.5625181530031136, - -2.5633873040124997, - -2.5642816844114944, - -2.5652015181307046, - -2.566145874831679, - -2.5671130878879067, - -2.5681015849544324, - -2.5691091742640064, - -2.570132984920067, - -2.5711708432812195, - -2.5722203187599666, - -2.5732778767869955, - -2.574339885072785, - -2.575403442596213, - -2.57646785643418, - -2.57753237989259, - -2.5785938830262656, - -2.5796503834564537, - -2.5807001826166998, - -2.5817408735080094, - -2.5827704006013525, - -2.583789289118784, - -2.5847995894535587, - -2.5858029122349224, - -2.586804689484707, - -2.587809472174197, - -2.5888174044913494, - -2.589828686137828, - -2.590846008598498, - -2.591871592242137, - -2.5929047347828673, - -2.5939482771360822, - -2.5950045497926273, - -2.596071738696252, - -2.5971502278618397, - -2.5982404834190915, - -2.599340874852593, - -2.659586008902194, - -2.6609798620179586, - -2.6623860303602975, - -2.663802408487403, - -2.66522997619655, - -2.666669529467354, - -2.6681187496387677, - -2.669575538249889, - -2.671041538578034, - -2.672518999492382, - -2.674007183165518, - -2.6755096667074354, - -2.677029514541804, - -2.678565024716811, - -2.680118334186669, - -2.681691716327859, - -2.6832832181637585, - -2.6848897083891186, - -2.6865103275292506, - -2.688144297592668, - -2.68978797586264, - -2.6914400490193153, - -2.6930989437512594, - -2.6947598630291436, - -2.696417692544567, - -2.698069831627618, - -2.6997145312155038, - -2.701349018491475, - -2.7029717520206575, - -2.704582422808336, - -2.7061809879342387, - -2.707766083488313, - -2.7093369465090715, - -2.710894652006597, - -2.7124402814071207, - -2.7139727524182793, - -2.715490949855213, - -2.7169958644075116, - -2.7184857872163337, - -2.7199599370285865, - -2.7214204139710167, - -2.7228685148361467, - -2.7243008758684737, - -2.7257148422182005, - -2.7271138749290467, - -2.728495148624413, - -2.7298567339598376, - -2.7312037281354145, - -2.732532102914415, - -2.7338400826748073, - -2.735134779119698, - -2.7364208557673635, - -2.7376953766510748, - -2.7389578540213373, - -2.7402149357079364, - -2.7414620710052753, - -2.742698440258437, - -2.743931735767026, - -2.7451642336711157, - -2.746394861304619, - -2.747623528160076, - -2.7488525505523236, - -2.7500752519858542, - -2.751287864950383, - -2.752495722467564, - -2.7536893670486986, - -2.7548618364651887, - -2.7560202435436145, - -2.757169861342627, - -2.7583026291823343, - -2.759411069369938, - -2.7605011211984487, - -2.761563091433906, - -2.762587197970238, - -2.763579386556762, - -2.764546067701115, - -2.7654803828545647, - -2.7663760263794415, - -2.7672405848844277, - -2.7680667035721047, - -2.7688479910764885, - -2.769593416571133, - -2.770295991706423, - -2.770950429613162, - -2.771567887378557, - -2.7721580769806327, - -2.7727154983144233, - -2.7732361493733233, - -2.773731362810279, - -2.774196561898819, - -2.774628229352286, - -2.775038684421877, - -2.7754395289046134, - -2.7758259911438983, - -2.776192003162641, - -2.776546162386728, - -2.7768816565930283, - -2.777192772201018, - -2.7774892269802183, - -2.777764332956507, - -2.82926412426799, - -2.8297211535153326, - -2.8301686723139974, - -2.830601112295946, - -2.831013285201062, - -2.831413952084392, - -2.8317975412250718, - -2.8321586313888494, - -2.8325055246017854, - -2.8328460726255322, - -2.83317558209428, - -2.8334898191156888, - -2.8337971859855213, - -2.834093606844692, - -2.834375253579642, - -2.834650450403561, - -2.8349163258643055, - -2.8351701326442447, - -2.835419711778323, - -2.835671689329762, - -2.835923538885656, - -2.8361735170550686, - -2.836428853852102, - -2.8366893376028854, - -2.8369541230201407, - -2.837229452676477, - -2.837521990339779, - -2.8378340287698554, - -2.8381674220479582, - -2.838527091803521, - -2.838915990832206, - -2.839337632328316, - -2.8397967992553563, - -2.8402992371893676, - -2.840849746911636, - -2.84144979157519, - -2.842100837477278, - -2.8428101128932686, - -2.843583480445303, - -2.8444204486405744, - -2.845327604952157, - -2.846309731262978, - -2.847362454021686, - -2.848481471099523, - -2.849671177391831, - -2.8509338359033936, - -2.852261050076059, - -2.853657890991926, - -2.8551264889720445, - -2.856653619458348, - -2.858245690822122, - -2.8599051418696972, - -2.861616236810924, - -2.863367587788944, - -2.8651664693933703, - -2.867016945607979, - -2.868905282819644, - -2.8708454788144997, - -2.872847976856778, - -2.874898137876005, - -2.8769847309016194, - -2.879116194886743, - -2.8812966649648333, - -2.8835096437856227, - -2.885763634482535, - -2.8880644320749886, - -2.8903955757004374, - -2.892772674272909, - -2.895209989382636, - -2.8976935915655195, - -2.9002121822404505, - -2.9027811168905555, - -2.9054127669873706, - -2.908092598982815, - -2.910836087771304, - -2.9136571205146438, - -2.9165411087867574, - -2.9194755781775705, - -2.9224751881975566, - -2.9255527310511344, - -2.9286934090314625, - -2.931910279122779, - -2.9352150147464577, - -2.9385913509551282, - -2.94205119106989, - -2.945604849958961, - -2.9492339582418277, - -2.9529208214325466, - -2.956672685812275, - -2.960495580073823, - -2.9643702467466566, - -2.9683008806163653, - -2.9722910401829514, - -2.9763212884331676, - -2.980373167093712, - -2.984448004608917, - -2.9885461220809537, - -2.9926487169132505, - -2.9967556032116396, - -3.0008667882325875, - -3.0336386402672515, - -3.0378543690365443, - -3.042056096728249, - -3.0462297970054744, - -3.0503632135064906, - -3.0544545116048294, - -3.0585023868636667, - -3.062497754242261, - -3.066439726337728, - -3.070327448841734, - -3.074153708375789, - -3.0779106729548937, - -3.0815963507582502, - -3.0852090502379648, - -3.0887405193621666, - -3.0921865703214215, - -3.0955485455924685, - -3.0988281106542552, - -3.1020217564406902, - -3.105126554470924, - -3.1081453046099354, - -3.111082070293797, - -3.113936207720936, - -3.1167091843953934, - -3.1194096623251926, - -3.1220367490974423, - -3.1245897002793956, - -3.127077721344957, - -3.1295076926255354, - -3.131876589410125, - -3.134182828096034, - -3.1364358529560814, - -3.1386312607583693, - -3.140764120715361, - -3.1428434596908565, - -3.1448618753765665, - -3.1468144036486683, - -3.148713341614524, - -3.1505707886057186, - -3.1523842405763967, - -3.154150382915361, - -3.1558800405949428, - -3.157566716787719, - -3.1592019398179616, - -3.160793153302765, - -3.1623489048221316, - -3.1638603070320164, - -3.1653184372912584, - -3.166732133941637, - -3.168092298627718, - -3.169390084510243, - -3.1706335706700637, - -3.1718132286414993, - -3.1729195571913684, - -3.1739601171671437, - -3.174941648510696, - -3.175851030353995, - -3.176676167627138, - -3.177425966559288, - -3.1780904511938535, - -3.1786596252408454, - -3.1791441648246863, - -3.1795569326068627, - -3.179889274222114, - -3.1801338973549713, - -3.1803085238407025, - -3.1804113694512988, - -3.180441913157961, - -3.180421812804083, - -3.1803513336198854, - -3.1802312866222424, - -3.180082939471157, - -3.179927620806028, - -3.1797676538546775, - -3.179606297595557, - -3.1794710426512633, - -3.179371133330513, - -3.1793171525128483, - -3.179341218285637, - -3.179469147053728, - -3.1796994676916333, - -3.1800272467575557, - -3.1804645860992333, - -3.1810057619476164, - -3.1816432548413247, - -3.182384091399974, - -3.183220772047511 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -65901,1988 +3662,15 @@ }, "name": "py true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x2", - "y": [ - -1.4930540144931643, - -1.4944586720034125, - -1.4958384575018235, - -1.4971933911215, - -1.4985235188951256, - -1.4998296765508152, - -1.5011131988402957, - -1.5023752267312724, - -1.5036157644589427, - -1.5048354439654037, - -1.5060363315825225, - -1.5072179378254407, - -1.508380367844239, - -1.5095264080670248, - -1.5106572435337615, - -1.5117724145120324, - -1.5128725585721492, - -1.5139597986302646, - -1.5150339368070291, - -1.516094498811265, - -1.5171433220366015, - -1.5181808787768605, - -1.5192067057645071, - -1.5202216981650214, - -1.5212267985929222, - -1.5222206810694974, - -1.5232023255301779, - -1.5241721150140033, - -1.525129976147516, - -1.5260760562698847, - -1.5270111360560081, - -1.52793556995706, - -1.528849669499258, - -1.5297543470271457, - -1.530650325553708, - -1.5315394930801016, - -1.5324235280148677, - -1.5333035350510342, - -1.5341818451359956, - -1.5350611971233639, - -1.5359441375360772, - -1.5368351761558108, - -1.5377416125942422, - -1.5386709397070566, - -1.5396297353789814, - -1.5406251351151414, - -1.5416609749737311, - -1.5427342986831514, - -1.5438416985350607, - -1.5449801253001014, - -1.5461444213502644, - -1.5473271640859696, - -1.548525529951483, - -1.5497371009186123, - -1.5509571639402981, - -1.5521843621463582, - -1.553419156701384, - -1.554658671685116, - -1.5559002159267967, - -1.5571450512297718, - -1.5583933683886717, - -1.5596405585796684, - -1.5608861093765685, - -1.562130611657407, - -1.563370088793665, - -1.5646019060057157, - -1.5658277112747112, - -1.5670476942971412, - -1.5682594957879037, - -1.569466164479922, - -1.5706708385237547, - -1.5718717225467536, - -1.5730708499281503, - -1.5742722275309153, - -1.5754768316351593, - -1.5766848977450465, - -1.577900661623386, - -1.5791273616175026, - -1.5803643011767607, - -1.5816150781813574, - -1.5828836489061264, - -1.5841700305610626, - -1.5854759038125248, - -1.5868047046223097, - -1.5881582673121795, - -1.5895359211786437, - -1.590940690795343, - -1.592375217864684, - -1.5938382203039454, - -1.595330938954369, - -1.5968552514173555, - -1.598410743075116, - -1.5999964733585872, - -1.601613506979855, - -1.60326208685623, - -1.604940070392912, - -1.6066477954525749, - -1.6083857945902589, - -1.61015216285408, - -1.6119457793560077, - -1.613766920652364, - -1.615614736691568, - -1.6174868454610474, - -1.6193826945429939, - -1.621301778371164, - -1.623241776422094, - -1.625202094161161, - -1.6271809941957918, - -1.6291766210541991, - -1.631187182281083, - -1.633211556612151, - -1.6352487185217353, - -1.6372972153338892, - -1.639356282557117, - -1.6414252217506573, - -1.6435023100095376, - -1.645587302142552, - -1.6476806706193388, - -1.6497811622381637, - -1.651887152945285, - -1.6539986940008542, - -1.6561154105461124, - -1.6582355981849173, - -1.660358668635571, - -1.6624845821627614, - -1.6646128446441373, - -1.666743509624716, - -1.6688759447570223, - -1.6710076952942237, - -1.6731385143128925, - -1.6752690902839986, - -1.6773991513618867, - -1.6795272993663217, - -1.6816543673500348, - -1.6837818464407563, - -1.6859090730446218, - -1.688034840663562, - -1.690160158630689, - -1.6922861554566846, - -1.6944129809109736, - -1.6965400340474728, - -1.698667503689772, - -1.7007957942062166, - -1.7029259937347272, - -1.705057958534763, - -1.7071909399537475, - -1.7093248729597796, - -1.711460291108973, - -1.7135978160758747, - -1.7157359973252657, - -1.7178742544460004, - -1.7200131099225044, - -1.7221519911154066, - -1.724290895237672, - -1.7264291194651615, - -1.7285656875195035, - -1.7307000264689727, - -1.732831133514726, - -1.734957216313404, - -1.7370761780807742, - -1.739186671159056, - -1.7412871015373914, - -1.7433755527181076, - -1.7454491577276627, - -1.7475064561864138, - -1.749545381427849, - -1.7515632378456296, - -1.7535590667794052, - -1.755531820609845, - -1.7574806800132614, - -1.7594053875557687, - -1.761305190925617, - -1.7631805864943335, - -1.7650337881222546, - -1.7668676563005585, - -1.7686853785246972, - -1.7704901689850518, - -1.7722851764818905, - -1.7740721924205345, - -1.7758528553611501, - -1.7776290894666529, - -1.7794030435959938, - -1.781176216850744, - -1.7829508950383703, - -1.7847289020025023, - -1.7865101821147018, - -1.7882945880882823, - -1.790083779713375, - -1.7918775737009185, - -1.793675034018761, - -1.7954767354501788, - -1.7972824818604662, - -1.7990911734212822, - -1.8009027914107965, - -1.8027175402015585, - -1.80453402773926, - -1.8063512867072795, - -1.8081700099159772, - -1.8099889317410829, - -1.8118066195789568, - -1.813623583760818, - -1.8154390571519385, - -1.8172510783257452, - -1.8190593104809039, - -1.8208655133408889, - -1.8226676246076412, - -1.8244639670923957, - -1.8262559633118103, - -1.8280423044415552, - -1.829820987687623, - -1.8315922164144811, - -1.833355735117175, - -1.835108896509949, - -1.8368503334496626, - -1.8385817909471733, - -1.8403007952388304, - -1.8420045719514626, - -1.8436916912741343, - -1.8453601049157264, - -1.8470074387048632, - -1.8486348816499976, - -1.850244364403378, - -1.8534021360666146, - -1.8549585869948253, - -1.8565014839528358, - -1.8580301237253902, - -1.85954720781428, - -1.861054408581786, - -1.8625509928007955, - -1.8640373905057268, - -1.8655177799569855, - -1.8669919416729193, - -1.8684591376139306, - -1.8699231626047272, - -1.871385445086761, - -1.8728447530458754, - -1.8743020777896975, - -1.87576060645936, - -1.8772188168105635, - -1.8786755015332934, - -1.8801343127422754, - -1.881594118343848, - -1.8830532865248504, - -1.8845137280130837, - -1.88597828707929, - -1.8874455046334113, - -1.8889161419201739, - -1.8903949299038638, - -1.8918815352278866, - -1.8933765195361956, - -1.8948835783219868, - -1.8964018236941131, - -1.8979296101585896, - -1.8994676326670794, - -1.9010182009109968, - -1.90257993650685, - -1.9041521984022522, - -1.9057375738513096, - -1.9073352301782385, - -1.9089440286408164, - -1.9105649531742868, - -1.9121980309719, - -1.9138419816528576, - -1.915496138990168, - -1.9171609442856339, - -1.9188351677747537, - -1.9205175972087403, - -1.9222076090885805, - -1.9239048712955615, - -1.925609406797868, - -1.9273213026432319, - -1.9290416087319802, - -1.9307705934152806, - -1.9325083872913662, - -1.934255518781207, - -1.9360135820876647, - -1.9377829021857087, - -1.93956268605261, - -1.9413528376199332, - -1.943153757141027, - -1.9449646930919213, - -1.9467844531166345, - -1.9486134407206275, - -1.950451391552854, - -1.9522962216626665, - -1.9541468277848661, - -1.956002697623824, - -1.9578622835191914, - -1.959722930657434, - -1.961584199302429, - -1.9634448230069217, - -1.9653015699151914, - -1.9671537270051807, - -1.9690012276174846, - -1.9708424190299931, - -1.9726752114676815, - -1.9745000105731385, - -1.9763171829482833, - -1.978125031705629, - -1.9799253939360613, - -1.981720000797475, - -1.983507943921677, - -1.9852895809197395, - -1.9870661910323437, - -1.9888381288254018, - -1.9906051149790576, - -1.9923700549897003, - -1.9941349034134823, - -1.9958989834562588, - -1.9976639077524434, - -1.9994315943985335, - -2.001202122841391, - -2.0029757576072362, - -2.0047546525567332, - -2.006539787791756, - -2.008330229345537, - -2.010127996620759, - -2.0119353806869857, - -2.01375163715176, - -2.015578008462156, - -2.0174169765584704, - -2.019269327245714, - -2.0211360336274717, - -2.023020244928658, - -2.0249225992635305, - -2.026842087945375, - -2.0287812911851697, - -2.0307405518337096, - -2.0327178997955793, - -2.0347128744164396, - -2.036726091452184, - -2.038756477531602, - -2.040800390252054, - -2.042857216508903, - -2.0449252598500185, - -2.046998487451838, - -2.049073107788744, - -2.0511477331434147, - -2.0532188316432984, - -2.0552821897071176, - -2.057338420232418, - -2.0593872571436616, - -2.061424352129625, - -2.0634494320926846, - -2.0654632171060077, - -2.0674649854181757, - -2.069454355655933, - -2.0714334626560014, - -2.0734035487118296, - -2.0753651730142617, - -2.077321292180757, - -2.079274170700691, - -2.0812245193082166, - -2.083175469295223, - -2.0851290316504687, - -2.087085708037815, - -2.0890466284103892, - -2.0910120404723784, - -2.0929802160005933, - -2.094945795110018, - -2.0969080631712274, - -2.098867383997885, - -2.1008227537439925, - -2.102773521562553, - -2.104721848674411, - -2.1066692121910378, - -2.108615878007384, - -2.110561842917464, - -2.112507084081599, - -2.114450916767006, - -2.1163921514223385, - -2.1183301011608267, - -2.1202647525933296, - -2.1221966073183074, - -2.124127765581033, - -2.12606160263058, - -2.1280015286078355, - -2.1299516487052603, - -2.1319147960290965, - -2.1338933274956022, - -2.1358899496361725, - -2.1379067372014275, - -2.1399459186858625, - -2.142009408895655, - -2.144100860861647, - -2.146223048361823, - -2.1483759599277694, - -2.150560751642706, - -2.1527778403274462, - -2.155027438031894, - -2.1573089800628207, - -2.1596238558031415, - -2.16676870241469, - -2.16921616868969, - -2.1716946652080487, - -2.174203307551161, - -2.1767412195502054, - -2.179306269030455, - -2.1818956576514643, - -2.184507425626476, - -2.1871392893009727, - -2.1897878188942257, - -2.192450166258272, - -2.195124283410035, - -2.1978073960715165, - -2.200494957112366, - -2.2031856447111844, - -2.2058777214465457, - -2.2085661425635403, - -2.2112489373234325, - -2.2139248951949932, - -2.2165898616577153, - -2.2192397053213835, - -2.2218735733634536, - -2.224489079694663, - -2.227080173188031, - -2.2296452443881156, - -2.2321828112487356, - -2.234687579140503, - -2.2371578117350035, - -2.239594258290794, - -2.241995955931886, - -2.2443610645689764, - -2.2466912199212485, - -2.248987229760586, - -2.2512465349697286, - -2.253471332017622, - -2.255663576651683, - -2.2578224669443507, - -2.259948054643772, - -2.2620425843426726, - -2.2641065829117895, - -2.2661371960301375, - -2.26813582077186, - -2.2701038788924652, - -2.2720431700370356, - -2.2739554573410476, - -2.275842023395032, - -2.277706224272061, - -2.2795532816395774, - -2.2813845675534963, - -2.283201200640327, - -2.2850066166028116, - -2.2868029097788183, - -2.288590796066253, - -2.2903713004688675, - -2.292145642163676, - -2.2939139034538196, - -2.295676320264656, - -2.297434532698188, - -2.2991883449379817, - -2.3009371194463273, - -2.302682200582984, - -2.3044235496778334, - -2.3061591833538637, - -2.3078884230908217, - -2.3096126489831783, - -2.3113302955848214, - -2.313042066465541, - -2.3147519246777906, - -2.316458386974337, - -2.3181596281131513, - -2.319856133290337, - -2.3215482868603137, - -2.3232333491375696, - -2.3249094839196025, - -2.3265770796543492, - -2.3282343963059757, - -2.3298799470203213, - -2.331515291129185, - -2.3331405360518134, - -2.3347544793984336, - -2.3363565332198397, - -2.337947634642297, - -2.3395261093721196, - -2.341091304381581, - -2.342646153756851, - -2.344190437920866, - -2.3457226799823796, - -2.347244178780765, - -2.3487571010584265, - -2.3502603247135356, - -2.3517535914987837, - -2.353238428177094, - -2.3547098355863585, - -2.356167114742112, - -2.357615808334861, - -2.3590571471240547, - -2.3604894282031776, - -2.3619187994586106, - -2.3633552365515054, - -2.3647981016860378, - -2.3662471655242325, - -2.367711440305379, - -2.3691912877620656, - -2.3706835860677646, - -2.3721932458594144, - -2.3737263654626726, - -2.375277960450794, - -2.37684471322185, - -2.378432541216986, - -2.380037621731158, - -2.3816538302688524, - -2.3832817651712013, - -2.384920893775934, - -2.3865656885549074, - -2.388211996817334, - -2.389861573532358, - -2.3915098014625893, - -2.3931507147839626, - -2.394782390206249, - -2.396401544852866, - -2.397999987280865, - -2.402640948072304, - -2.405562498111779, - -2.409654398169277, - -2.4109415012324567, - -2.412189381483, - -2.4133996752058793, - -2.4145778458563543, - -2.4157238986338814, - -2.4168392908177205, - -2.4179303000052808, - -2.4189999625341465, - -2.420049678373361, - -2.4210843811608886, - -2.422109394615367, - -2.4231266201733375, - -2.4241392895720084, - -2.425153452729068, - -2.4261717323163436, - -2.4271956107508315, - -2.42822967789339, - -2.429275884541187, - -2.430333804194382, - -2.4314039013903734, - -2.4324862933814115, - -2.433579860757061, - -2.434684409796394, - -2.435799598529729, - -2.436924071697715, - -2.4380561522483695, - -2.439194807392102, - -2.440338204812828, - -2.441483898739617, - -2.4426298747409256, - -2.443773843543274, - -2.444913251296103, - -2.4460460536741433, - -2.4471695079144675, - -2.4482809539025343, - -2.4493795371192206, - -2.4504642821472937, - -2.4515327311984487, - -2.4525848097787097, - -2.4536214261989127, - -2.4546410247044586, - -2.4556440613959865, - -2.4566328991306388, - -2.457608541158014, - -2.458571144698674, - -2.4595257850740566, - -2.4604755422648394, - -2.4614183505724516, - -2.4623591521361203, - -2.463303433884364, - -2.464250852684097, - -2.4652055083559437, - -2.466174856266425, - -2.467161836489156, - -2.468165965322779, - -2.4691917984338585, - -2.470243423604068, - -2.471318519052535, - -2.472421329328993, - -2.4735561490542497, - -2.474725693192692, - -2.4759316328867005, - -2.4771777341583543, - -2.4784646430001405, - -2.479792345529808, - -2.481164212760884, - -2.482581425574873, - -2.4840435229320095, - -2.4855503722616072, - -2.487100293606813, - -2.4886885982307936, - -2.4903092045322763, - -2.491956604252779, - -2.493624942289593, - -2.495306949900754, - -2.496998738325536, - -2.498696602360529, - -2.500396341259901, - -2.5020935978244965, - -2.503785211038567, - -2.5054689193434383, - -2.5071446625040528, - -2.5088080503040833, - -2.5104571897027355, - -2.5120966569653764, - -2.5137310458925235, - -2.5153625403159836, - -2.5169922458224754, - -2.518620217742465, - -2.5202465553999933, - -2.521871474531213, - -2.523494502680807, - -2.5251159667168293, - -2.5267348465540027, - -2.528348776267646, - -2.5299538955895087, - -2.531549041800493, - -2.5331341608423728, - -2.534710124031957, - -2.5362816477019, - -2.5378535130473128, - -2.539428924914814, - -2.541011284086587, - -2.5426044728600767, - -2.5442103303178705, - -2.545829318138772, - -2.5474641204260267, - -2.5491164584321946, - -2.550785760407423, - -2.5524732644388415, - -2.554179897182166, - -2.5559050785505564, - -2.5576483612047016, - -2.55941094077556, - -2.5611934179059173, - -2.5629943384530187, - -2.564814183983971, - -2.56665374647503, - -2.568512249898317, - -2.570388795222888, - -2.5722842959011856, - -2.5741984788577614, - -2.576129396691632, - -2.5780783606923885, - -2.5800456117647994, - -2.582029461234305, - -2.5840302744891206, - -2.586048284561362, - -2.588082529514687, - -2.5901316719139778, - -2.592195440627207, - -2.5942720013787914, - -2.5963599030976403, - -2.60267712822125, - -2.604795245534155, - -2.606915229977841, - -2.609034114503256, - -2.6111507977862782, - -2.6132645151698104, - -2.6153730842845846, - -2.617472744670809, - -2.6195620446339634, - -2.6216387180473277, - -2.623699073458233, - -2.6257407711262686, - -2.6277623399670524, - -2.629761843497696, - -2.631736841044227, - -2.633686231568636, - -2.635607774802164, - -2.6374996279344542, - -2.6393613483615477, - -2.6411923575747633, - -2.642991169747256, - -2.644756662334707, - -2.6464900233782993, - -2.6481931937116245, - -2.649868834411668, - -2.6515194533715416, - -2.653147369297222, - -2.65475464913852, - -2.656344172615879, - -2.6579192951598327, - -2.659482175399945, - -2.6610349315857404, - -2.6625793508140445, - -2.664116948225849, - -2.665649485877728, - -2.6671783706009515, - -2.6687045398253932, - -2.6702279356339775, - -2.671746686287558, - -2.673261053823709, - -2.674771735108875, - -2.676278927693773, - -2.6777833086417564, - -2.679285783993447, - -2.6807864474618035, - -2.6822852057738835, - -2.6837830113470575, - -2.685280584450006, - -2.6867782680252494, - -2.6882767801618996, - -2.68977677822165, - -2.691277626673751, - -2.6927793209373916, - -2.6942825331302407, - -2.6957877264338146, - -2.697295164013636, - -2.698805476276096, - -2.7003191725156848, - -2.701836217443728, - -2.7033571974459822, - -2.704883024281025, - -2.7064142394971267, - -2.7079513111395146, - -2.709494767829645, - -2.7110447181854784, - -2.7126007790384157, - -2.7141630835256962, - -2.7157317887891192, - -2.7173068500885824, - -2.718888991217516, - -2.7204785590398264, - -2.722075185568273, - -2.7236788202578217, - -2.725289882453204, - -2.726908642299576, - -2.728535278275664, - -2.7301696214546474, - -2.7318109169614866, - -2.7334587659332628, - -2.735113016874043, - -2.7367733947629653, - -2.7384396884663627, - -2.740112170054474, - -2.7417906696202032, - -2.7434748932964474, - -2.7451653384954198, - -2.7468619242517978, - -2.7485640577952597, - -2.750271729212352, - -2.7519853508139, - -2.753703305658311, - -2.755424376870515, - -2.757149882764593, - -2.7588788455613433, - -2.760610306212077, - -2.7623446278682984, - -2.7640813241030724, - -2.7658185789957868, - -2.7675558866543613, - -2.7692932657227822, - -2.7710283271696454, - -2.77276006424099, - -2.774489201724755, - -2.776213855893925, - -2.7779331529304296, - -2.779648355789966, - -2.781358911143993, - -2.7830644383463317, - -2.7847670379689, - -2.7864689740364863, - -2.788169772726785, - -2.789870466445663, - -2.7915730637575407, - -2.793277727828219, - -2.79498444624348, - -2.796693887898112, - -2.7984087454738327, - -2.8001280911011697, - -2.8018513984049775, - -2.8035807226949165, - -2.805316135782812, - -2.8070565010194515, - -2.808802227241087, - -2.8105553136292887, - -2.8123146409047073, - -2.814079075228905, - -2.815850181103161, - -2.8176269671266394, - -2.819407754622624, - -2.821193595295856, - -2.8229846196160064, - -2.8247783176334726, - -2.826573469228084, - -2.8283712549467164, - -2.8301686469241254, - -2.8319633023350166, - -2.8337561862065046, - -2.8355468111840003, - -2.8373330653283118, - -2.8391148533056416, - -2.840893856887136, - -2.84266850801883, - -2.844438423275526, - -2.8462070671155826, - -2.847974383223861, - -2.849739748666975, - -2.851504680113336, - -2.8532705206024964, - -2.855035697718812, - -2.856800096658367, - -2.8585665735815593, - -2.860334520706987, - -2.862102472247758, - -2.8638719879853007, - -2.86564226471182, - -2.867410961923713, - -2.869177440930637, - -2.870942543462231, - -2.872703953824481, - -2.8744600906004707, - -2.876212236953378, - -2.8779593420588667, - -2.8797001062166827, - -2.8814366425002027, - -2.883169871972381, - -2.8848980366370403, - -2.8866206015542857, - -2.888338592779076, - -2.8900522944694367, - -2.8917618608379607, - -2.893467972898984, - -2.895170337477162, - -2.8968681400266267, - -2.898561842149684, - -2.900251795308967, - -2.901936947667728, - -2.9036165876564155, - -2.905291687548642, - -2.906962495984141, - -2.9086282954306095, - -2.9102888362826977, - -2.9119442092482046, - -2.9135945046589815, - -2.9152404741491442, - -2.9168821740806266, - -2.9185201640533633, - -2.9201559957479866, - -2.9217910694666287, - -2.923426785223699, - -2.9250652687154606, - -2.926708747620342, - -2.928359933770498, - -2.930021296540069, - -2.931694743968842, - -2.9333819796599534, - -2.935086942329805, - -2.9368138867849494, - -2.9385640189481554, - -2.9403393409742336, - -2.942141840979577, - -2.943971593315761, - -2.945827325076193, - -2.9477094445251533, - -2.949616658064004, - -2.951544491227532, - -2.953490460732655, - -2.955453602140125, - -2.9574307502474366, - -2.9594175395594218, - -2.9614136177544497, - -2.9634199106296975, - -2.965433599614902, - -2.967456966020397, - -2.9694918664179175, - -2.9715365364741166, - -2.973590234547336, - -2.975653589687453, - -2.977724636404081, - -2.9797973441183268, - -2.9818697949267037, - -2.983940631288779, - -2.986005682478422, - -2.9880647809894896, - -2.9901201771500703, - -2.9921716872253965, - -2.994216749671437, - -2.9962575601442314, - -2.9982960802640215, - -3.0003297934685436, - -3.002360475674756, - -3.004390770996986, - -3.006419971813472, - -3.008447083768032, - -3.0104749760646006, - -3.012504855507156, - -3.0145338134134243, - -3.0165643487008458, - -3.0185991147786244, - -3.0206362712975974, - -3.0226765699136346, - -3.0247230167456167, - -3.0267761373592124, - -3.02883415141079, - -3.0309006500484643, - -3.032978862889711, - -3.035066904901564, - -3.03716757824197, - -3.039284317343048, - -3.041416703284325, - -3.0435626685792014, - -3.0457226720615345, - -3.0478979818537737, - -3.0500867095560933, - -3.052289693832335, - -3.0545080073738973, - -3.056740447553735, - -3.058986886130898, - -3.0612471052351085, - -3.0635202068301806, - -3.0658045289003626, - -3.0681017852837003, - -3.070413061089324, - -3.072738955238546, - -3.0750824580957117, - -3.0774444564712002, - -3.0798226944804115, - -3.0822168201670745, - -3.0846247025516584, - -3.08704409419899, - -3.0894750783454166, - -3.0919170936743794, - -3.094368259779318, - -3.09682597511342, - -3.099285701324409, - -3.1017419701031637, - -3.1041911410847574, - -3.106630863926593, - -3.109057007332221, - -3.111467659307643, - -3.1138646437551163, - -3.116246414098157, - -3.118610718764504, - -3.120959107645912, - -3.1232937424065907, - -3.1256137738585017, - -3.127919002962739, - -3.1302118384766784, - -3.132491199768154, - -3.1347561944573377, - -3.1370094927263654, - -3.139252258510648, - -3.1414842837821713, - -3.14370704888384, - -3.1459247086981192, - -3.148137889594966, - -3.150347462778254, - -3.1525571667836467, - -3.154767429690348, - -3.156977898447618, - -3.159190910050381, - -3.161408716328864, - -3.1636305364232458, - -3.165855774853597, - -3.168087464287623, - -3.1703240219196487, - -3.1725624724055157, - -3.174804381276969, - -3.1770490996117235, - -3.179292638406692, - -3.181533854704695, - -3.1837755565528414, - -3.1860145237365733, - -3.1882476913433284, - -3.1904776189228614, - -3.192702781808485, - -3.1949200471539094, - -3.1971290525056757, - -3.199332118359501, - -3.2015275286268836, - -3.203713359148911, - -3.205892917539199, - -3.208061949080525, - -3.2102146681416848, - -3.212349671573746, - -3.2144641818105457, - -3.2165505041620337, - -3.218606391598711, - -3.2206338568563813, - -3.2226291390427284, - -3.224591767488942, - -3.226528920833696, - -3.228446277716621, - -3.230347453068645, - -3.232237975205649, - -3.2341243113847984, - -3.2360048793570098, - -3.2378796472322695, - -3.239754482212332, - -3.241629637874255, - -3.243503525181475 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y2" }, { @@ -67892,1987 +3680,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.6597402650789633, - 0.6624106047127537, - 0.6651088212248131, - 0.6678082435226413, - 0.6704838075122469, - 0.6731553136650174, - 0.6758417802383867, - 0.6785187313313711, - 0.681203674675135, - 0.6839137274843525, - 0.6866253611049575, - 0.6893545211030311, - 0.6921166314680535, - 0.6948887689005168, - 0.6976498530258605, - 0.7004139637400412, - 0.7031947403049833, - 0.7059720755621666, - 0.7087586126101251, - 0.7115667649875805, - 0.7143778016146701, - 0.7171748821600671, - 0.7199697261961779, - 0.7227737933312492, - 0.7255715564052816, - 0.7283710367607654, - 0.7311800701873167, - 0.7339844241829088, - 0.7367882798652532, - 0.739596049609676, - 0.7423956234172022, - 0.7451767437702778, - 0.747941407591274, - 0.7506919842297852, - 0.7534211695338572, - 0.7561283374852995, - 0.7588129781703618, - 0.761470552252064, - 0.7640995005374, - 0.7667003320394591, - 0.7692760530462114, - 0.7718330403865373, - 0.7743731742557921, - 0.7769006804640384, - 0.7794286813579238, - 0.7819563219636753, - 0.7844841156216091, - 0.7870265969858898, - 0.7895944499820966, - 0.7921788044067237, - 0.7947704711206938, - 0.7973763355656222, - 0.7999775819301556, - 0.8025568369075105, - 0.8051211283159947, - 0.8076756854220785, - 0.8101982728981617, - 0.8126698033599832, - 0.815100152809607, - 0.81746494507607, - 0.8197419021133812, - 0.8219440029665347, - 0.8240436128856741, - 0.8260144393762414, - 0.8278725653640472, - 0.8296331774376771, - 0.8312666639150941, - 0.8327467835595536, - 0.8340943164182952, - 0.8352809421209249, - 0.8362804732598655, - 0.8371203038967675, - 0.83782818671064, - 0.838379987413935, - 0.8387562999778001, - 0.8389902728865427, - 0.8390623204564548, - 0.8389552309141395, - 0.8387065107414537, - 0.8383002772436079, - 0.8377208734555646, - 0.837009225188249, - 0.8362061297598551, - 0.8352979683238175, - 0.83427314765513, - 0.8331751348329649, - 0.8319919190451207, - 0.8307119887223747, - 0.8293803150013735, - 0.8280411151926331, - 0.8266825669690172, - 0.8252944151770064, - 0.8239216252816085, - 0.8225516599353571, - 0.8211723500550742, - 0.8198282314756928, - 0.8185052835524829, - 0.8171891583021164, - 0.8159236288072967, - 0.8147522092331371, - 0.813659808069053, - 0.7372025440085654, - 0.7359523565452247, - 0.7347959626350505, - 0.7337242915006865, - 0.7327884244982139, - 0.7320379024737077, - 0.7314633874406236, - 0.7310548043359404, - 0.730858542901511, - 0.7308611665883444, - 0.7310485072091846, - 0.7314620776725327, - 0.7320832193919877, - 0.732892960139339, - 0.7339282408386336, - 0.735221579891072, - 0.7367493888061273, - 0.7384873793888287, - 0.740461973560396, - 0.7426451070144258, - 0.7450080229710183, - 0.7475709651300753, - 0.750349876456728, - 0.753314874129823, - 0.7564361722716268, - 0.7597268340362396, - 0.7631575312681782, - 0.7667011490143092, - 0.7703712507211278, - 0.774141601392359, - 0.7779896692037022, - 0.7819295009503258, - 0.7859722573729696, - 0.7900985476133655, - 0.7942898448888742, - 0.7985583869248621, - 0.8028868333158775, - 0.8072608419985795, - 0.811692552738392, - 0.8161916476079565, - 0.8207477147900466, - 0.8253477832644868, - 0.8300008588999841, - 0.8346982063143022, - 0.83943166241472, - 0.8442089573864482, - 0.8490220062249086, - 0.8538683347926712, - 0.8587551958666604, - 0.863687809895098, - 0.8686653193101479, - 0.8736844991075963, - 0.8787492543122076, - 0.8838588954398486, - 0.8890159483736205, - 0.8942225134986956, - 0.8994785593880648, - 0.9047900496928267, - 0.9101566807639808, - 0.9155775803364545, - 0.9210568624393989, - 0.9265961353849338, - 0.9321900537062406, - 0.9378391600426694, - 0.9435471921463223, - 0.9493052882416906, - 0.9551044479265249, - 0.960947707425169, - 0.9668347737362113, - 0.9727546499706643, - 0.9787090242616393, - 0.9846978672872913, - 0.9907077927354017, - 0.996730373393788, - 1.0027705757021885, - 1.0088315605113094, - 1.0149068883545065, - 1.0210042287526404, - 1.0271313004698706, - 1.0332815441014196, - 1.0394690464872105, - 1.0457008906275453, - 1.0519682972107043, - 1.058266383438269, - 1.0646007255386127, - 1.070977800578072, - 1.0773888180340176, - 1.0838418382994692, - 1.090338444650439, - 1.0968684617148563, - 1.103423503669391, - 1.1100005811085287, - 1.1166074978267573, - 1.1232341582562442, - 1.1298819751665516, - 1.1365514384849091, - 1.1432313957218219, - 1.1499288272390693, - 1.1566352964101387, - 1.1633397345424255, - 0.9141863713933006, - 0.9201319836668547, - 0.9261254934086912, - 0.9321523584826372, - 0.9382153798258798, - 0.9443161888144589, - 0.9504393820578388, - 0.9565700206638295, - 0.9627076907808523, - 0.9688524195652375, - 0.974989224366461, - 0.9811165802750177, - 0.9872332017934684, - 0.993325623939797, - 0.9993933405574656, - 1.0054357331340416, - 1.0114416931832473, - 1.017401473733933, - 1.0233152905497513, - 1.0291866927675832, - 1.0408004650404228, - 1.0465420612429575, - 1.0522323337488748, - 1.0578641271834113, - 1.0634367446324235, - 1.0689500588252459, - 1.0744000032111305, - 1.0797848911598669, - 1.0851047447012951, - 1.0903583220721975, - 1.0955436311602387, - 1.1006621078208052, - 1.1057153635665184, - 1.110705136029635, - 1.1156336367408228, - 1.1205021844772396, - 1.125315250005553, - 1.1300741338974607, - 1.1347823434828501, - 1.1394465192629513, - 1.1440729397511396, - 1.1486650843274315, - 1.1532239674196998, - 1.1577568728766516, - 1.1622647837518953, - 1.1667489718284725, - 1.1712159409926075, - 1.1756618568160058, - 1.1800859663624168, - 1.1844933628055325, - 1.188888328051213, - 1.193267959319132, - 1.1976285710750818, - 1.2019766000596401, - 1.2063079089583215, - 1.2106191128748893, - 1.2149164228112073, - 1.2192078874036736, - 1.2234950990784044, - 1.2277764828272382, - 1.2320604007383889, - 1.2363462450102696, - 1.2406332323637055, - 1.2449285563200403, - 1.249229623017805, - 1.2535358222867907, - 1.257855064762495, - 1.2621933882087866, - 1.2665467838827402, - 1.270910195910569, - 1.2752864909936965, - 1.279669031469332, - 1.2840535879964565, - 1.2884455337510596, - 1.292847529191529, - 1.2972516995009715, - 1.3016536942776686, - 1.3060572293951693, - 1.3104531887766528, - 1.3148362952303425, - 1.3192126173763206, - 1.3235746410122824, - 1.3279143801092064, - 1.332240102499675, - 1.3365557990102181, - 1.3408529251731824, - 1.3451263286787563, - 1.349382183295631, - 1.3536131460988055, - 1.3578087885938563, - 1.361975401680863, - 1.3661183795651544, - 1.3702243800980074, - 1.374288680105198, - 1.3783171150276239, - 1.382298910244525, - 1.3862251414351623, - 1.390102906370733, - 1.393926559476923, - 1.3976826567732608, - 1.0547218013299158, - 1.057311177517823, - 1.059860474391725, - 1.0623650697464506, - 1.0648313904951097, - 1.067256258631275, - 1.0696363637977515, - 1.0719792862326833, - 1.0742925351667725, - 1.0765741596896692, - 1.0788241054816419, - 1.0810507426920992, - 1.0832554746155654, - 1.0854396769654624, - 1.0876118380814568, - 1.0897771078872966, - 1.0919382110131497, - 1.0941027592221058, - 1.096278389357662, - 1.0984692473577269, - 1.1006798490678644, - 1.102916670555433, - 1.1051867715638006, - 1.1074938754621155, - 1.1098412229856849, - 1.11223303364837, - 1.1146735170485378, - 1.1171663736760098, - 1.1197118528254522, - 1.1223178216011855, - 1.1249893678685232, - 1.1277227047487446, - 1.1305306310892744, - 1.133421026358971, - 1.136387437801654, - 1.139426099051941, - 1.1425474803706301, - 1.1457612340788863, - 1.1490605865432761, - 1.1524577558920028, - 1.1559616681164662, - 1.1595606098717477, - 1.1632435947505055, - 1.1670194506632325, - 1.1708959471657798, - 1.1748573955626183, - 1.1789135981508072, - 1.1830714792970667, - 1.18731067013011, - 1.1916447750835502, - 1.1960820916416697, - 1.2006013644774052, - 1.2051880146516365, - 1.2098556559028601, - 1.2146133800931158, - 1.2194394908817199, - 1.224351753857714, - 1.2293669445047526, - 1.23446762107368, - 1.2396399878155917, - 1.2449052124030566, - 1.2502812936151078, - 1.255749285513817, - 1.2613307042085375, - 1.2670436574577137, - 1.2728636132284434, - 1.2788104605762014, - 1.2849014997375612, - 1.2911061769667145, - 1.297395110786114, - 1.3037841849935943, - 1.3102856078483516, - 1.3168665439162777, - 1.3235450131964603, - 1.3303362038900628, - 1.337204216966301, - 1.34411825720691, - 1.351097515340299, - 1.3581570814745958, - 1.3652663256413826, - 1.372445517650732, - 1.3797120856429221, - 1.3870324607628188, - 1.3944259901776344, - 1.4019117734753757, - 1.4094538866739492, - 1.4170192148277174, - 1.4246251983238372, - 1.4322853636145345, - 1.4399637625808095, - 1.4629199768818604, - 1.4705548922082106, - 1.4781773945570296, - 1.4857984922025156, - 1.4933825211516345, - 1.5009429412193236, - 1.5084922571420358, - 1.5159956008237427, - 1.5234669820050917, - 1.5309203749441933, - 1.1580717784887267, - 1.1644394613319067, - 1.1707534923243275, - 1.1770279319846955, - 1.1832323600089574, - 1.189382676865723, - 1.195494239088575, - 1.201537984991509, - 1.2074873338724705, - 1.2133595451217303, - 1.2191714226066432, - 1.2248977573540534, - 1.2305583323277756, - 1.2361721924920641, - 1.2417155029846463, - 1.247209864088656, - 1.2526746806844424, - 1.2580848916945777, - 1.2634177111659908, - 1.268692109553881, - 1.2739258368132291, - 1.2790956377564706, - 1.2842209595072072, - 1.2893193297233807, - 1.294366828412283, - 1.2993422581357694, - 1.3042631736869867, - 1.3091473413824646, - 1.3139750519090085, - 1.318766055930848, - 1.3235389135902613, - 1.3282739512426347, - 1.332992488659719, - 1.3377168396590287, - 1.3424360172766565, - 1.3471428676097712, - 1.351866517870993, - 1.356635577221311, - 1.3614410888623156, - 1.366310892350182, - 1.3712694973752577, - 1.3763025508958884, - 1.3813958901577876, - 1.3865679268413262, - 1.3918356635664924, - 1.397180035229374, - 1.4026133738044992, - 1.408146067142147, - 1.4137553015066489, - 1.4194474511712838, - 1.425226113009602, - 1.4310655808490933, - 1.4369412318652217, - 1.442852093788284, - 1.4487964208406214, - 1.45474846369403, - 1.4607036097691362, - 1.46665614764088, - 1.4725804997721335, - 1.478452695505194, - 1.4842663291782279, - 1.4900164233658433, - 1.4956823517704347, - 1.5012589484657897, - 1.5067421154504943, - 1.5121153309261515, - 1.5173742525026217, - 1.522515319617805, - 1.5275260252917606, - 1.5323957652113673, - 1.537121342006224, - 1.5417016321878794, - 1.5461321837709636, - 1.5504130687699778, - 1.5545464066721413, - 1.5585337795888186, - 1.5623783562384106, - 1.5660796644454356, - 1.5696393657579413, - 1.5730667226539508, - 1.576361278085138, - 1.5795306497941706, - 1.5825986973283888, - 1.58555796954966, - 1.5884007191956473, - 1.5911509518633407, - 1.593832026495053, - 1.5964338144330832, - 1.5989444952943719, - 1.6013779285293757, - 1.603689278964252, - 1.6058375676877736, - 1.6078411695882984, - 1.6097185021479474, - 1.6114193116171391, - 1.61289562851173, - 1.6141749339301985, - 1.6152165919872377, - 1.6159829591107135, - 1.6165100899902833, - 1.283219589811622, - 1.282392101030631, - 1.281289510880477, - 1.2799564744198018, - 1.2783632114042087, - 1.2764813987238126, - 1.2743640659428312, - 1.2719811949719693, - 1.2693050648321524, - 1.2663984777894775, - 1.2633309959161956, - 1.2534802592165657, - 1.2462843557260233, - 1.2344414631252671, - 1.2302866153825935, - 1.2261168851139053, - 1.221908457978114, - 1.2176368784900682, - 1.213372469072435, - 1.2090890308144386, - 1.2047617869706022, - 1.2004574025002692, - 1.196236443644945, - 1.1920681007650051, - 1.187920318771329, - 1.1838513198080338, - 1.1798282512948273, - 1.1758188417937243, - 1.1718810032886227, - 1.167981274921699, - 1.1640875801553516, - 1.1602545338418055, - 1.156532647229013, - 1.1528827542763085, - 1.1492670579602382, - 1.145737453265259, - 1.142257084583894, - 1.138790288198906, - 1.135389897457173, - 1.1321068612437957, - 1.1289078817413232, - 1.125761707054982, - 1.122720335889738, - 1.1197528738182267, - 1.116829444287327, - 1.114000682026168, - 1.1112371710299112, - 1.1085092612936394, - 1.1058655908367672, - 1.1033516873327884, - 1.1009409713021927, - 1.0986083237297932, - 1.0963972268413396, - 1.094285182798577, - 1.0922489240547302, - 1.0903292318566384, - 1.0885633533914074, - 1.0869289906457422, - 1.0854063580233946, - 1.0840293890520964, - 1.082778415159982, - 1.081633829597228, - 1.0806260398169403, - 1.079739124973505, - 1.078954389483711, - 1.0782978663090526, - 1.0777919037410721, - 1.0774211165331617, - 1.0771715330407652, - 1.077062836116237, - 1.0770852338932502, - 1.0772267815319858, - 1.0775029465348436, - 1.0779271398942292, - 1.0784927734992589, - 1.0791941613965603, - 1.0800402506774647, - 1.0810311798014842, - 1.0821651783340596, - 1.0834463159339487, - 1.0848796393322784, - 1.0864655768412903, - 1.088201014850093, - 1.090081757591213, - 1.0921137157938752, - 1.0943005441377123, - 1.0966330008449832, - 1.099123189328135, - 1.1017810763550373, - 1.1045941134602737, - 1.1075488981793256, - 1.1106560042585758, - 1.1139225370242796, - 1.117326266771724, - 1.1208730648268341, - 1.1245508865788763, - 1.1283165191739912, - 1.1321877849887538, - 1.1361836107527599, - 1.1402811406092463, - 0.8369888053572547, - 0.8406748734395526, - 0.8444924716347805, - 0.8484221566259711, - 0.8524954303240925, - 0.8567397368965954, - 0.8611285208823712, - 0.8656360773777432, - 0.8702886597653424, - 0.875105469491017, - 0.8800470261249866, - 0.8851310169828157, - 0.8903735341319764, - 0.8957362311274033, - 0.9012495812891442, - 0.9069422235338265, - 0.9127779101187895, - 0.9187227140997432, - 0.92480602994923, - 0.9310542552969945, - 0.9374293710883788, - 0.9439591598745569, - 0.9506684405546866, - 0.9575144787709504, - 0.9644563500447805, - 0.9715160580189219, - 0.978712873182917, - 0.9860018988255772, - 0.9934022976718104, - 1.0009305973035065, - 1.0085370641896052, - 1.016234535972536, - 1.024032457457304, - 1.0318762200670042, - 1.0397137386769022, - 1.0475528598174382, - 1.055400650332472, - 1.0632067778957142, - 1.0709792626581027, - 1.0787245833096468, - 1.0863947059261252, - 1.0939447586592377, - 1.1013809272189232, - 1.1087103951843331, - 1.1158905843265035, - 1.1229293910704576, - 1.1298354510896558, - 1.1495592696293027, - 1.155786864781161, - 1.161802904785529, - 1.1676207889960635, - 1.1732544947784829, - 1.1786790445758373, - 1.1839107106134632, - 1.1889647856419012, - 1.1938192572033879, - 1.1984566113851134, - 1.2028950143396822, - 1.2071530488951523, - 1.2112164796083489, - 1.2151044159201008, - 1.2188364684263395, - 1.222402348302869, - 1.2258240296465779, - 1.2291231208998568, - 1.2322917531685034, - 1.2353246465400873, - 1.2382428697805978, - 1.2410667174487937, - 1.2437913470179653, - 1.246434906321256, - 1.2490148123257725, - 1.2515260305236418, - 1.2539653065983247, - 1.2563484756893457, - 1.2586899653888253, - 1.2609856988101644, - 1.2632482677473624, - 1.2654890448270952, - 1.2677028816993456, - 1.2698997276507031, - 1.2720885460167006, - 1.2742628356916188, - 1.2764173484992056, - 1.2785599534750614, - 1.2806985675271008, - 1.2828308693666253, - 1.284967917847293, - 1.2871210008634937, - 1.2892898935349586, - 1.2914744289907234, - 1.29368399898777, - 1.2959265144632153, - 1.298199499820318, - 1.3005093708901208, - 1.3028615000727766, - 1.3052515258181001, - 1.3076842052926012, - 1.3101638317508895, - 1.3126850614972725, - 1.0553443474099422, - 1.057522832498483, - 1.0597436278971832, - 1.062000506867426, - 1.0642944124568592, - 1.0666257637634833, - 1.0689874713138339, - 1.0713726842999014, - 1.0737812990775466, - 1.0762125336005106, - 1.0786584565212978, - 1.0811177747350218, - 1.0835894384780302, - 1.086066466127319, - 1.088548686775262, - 1.0910362262837061, - 1.093523212931422, - 1.096004166869645, - 1.0984791525967734, - 1.100948280119722, - 1.1034066624339418, - 1.1058547380022608, - 1.1082929116333797, - 1.1107170726772047, - 1.1131238740958547, - 1.115513852416631, - 1.117887433467761, - 1.1202414224598782, - 1.1225755699627944, - 1.1248893272416716, - 1.1271793481017067, - 1.1294448918538789, - 1.1316851838999915, - 1.1338976022606455, - 1.1360801397057638, - 1.1382317265601885, - 1.1403514373569372, - 1.142437969447011, - 1.144490581569248, - 1.1465090180151307, - 1.1484940751503099, - 1.1504473658618024, - 1.1523682453251627, - 1.1542568436741814, - 1.1561155704774224, - 1.1579432940815646, - 1.1597399899905474, - 1.1615096894407118, - 1.1632504609677223, - 1.164961988194068, - 1.1666510523438443, - 1.1683225725228454, - 1.169976065056162, - 1.171613105265339, - 1.1732393055009314, - 1.174850147488694, - 1.17644537572704, - 1.1780327495633307, - 1.1796147884182269, - 1.1811883594479924, - 1.1827524196794141, - 1.1843103166127167, - 1.185852951031813, - 1.1873745425839863, - 1.1888816316661057, - 1.1903628295819546, - 1.1918083351541888, - 1.193226404253892, - 1.1946229552748597, - 1.1959866454080237, - 1.197308246315527, - 1.1985964144208923, - 1.1998438535591747, - 1.201044980606428, - 1.2022119453350881, - 1.203355090390126, - 1.2044680559152159, - 1.2055462923539937, - 1.2066009796253827, - 1.2076277225275593, - 1.2086223434229777, - 1.2095959725351435, - 1.210545520044003, - 1.2114667217205315, - 1.212369196673156, - 1.2132622141881932, - 1.2141415394959312, - 1.2150033063540056, - 1.2158572546368653, - 1.2167004632419371, - 1.2175299931619166, - 1.2183561122683935, - 1.2191884438228962, - 1.220022808978005, - 1.220855360223388, - 1.221694873186975, - 1.2225374640148965, - 1.2233797598838096, - 1.2242311432716397, - 1.2250878769846296, - 1.0029530402586408, - 1.0034890905771234, - 1.004045022004717, - 1.004617344300048, - 1.0052029388647978, - 1.0058087576732104, - 1.0064252470571935, - 1.0070433151918945, - 1.0076676585325421, - 1.0083029661860252, - 1.0089414955686535, - 1.009576041697277, - 1.0102127419183808, - 1.010844710612567, - 1.0114660853814554, - 1.0120848694365945, - 1.0126957916404478, - 1.0132942752954275, - 1.0138887984922003, - 1.0144876799256466, - 1.0150879206327543, - 1.0156865385945202, - 1.0162920363256374, - 1.0169021204177477, - 1.017515774619053, - 1.0181423552907571, - 1.018789566571507, - 1.0194563474127687, - 1.0201419538096612, - 1.020854444155743, - 1.0215932196113244, - 1.0223570448235235, - 1.0231520882228924, - 1.023977675944832, - 1.0248333211539469, - 1.0257252240340202, - 1.026657831414488, - 1.0276294580042, - 1.0286389715292759, - 1.0296893740169963, - 1.0307808573576023, - 1.0319129218402554, - 1.0330864871522876, - 1.0343000188151894, - 1.0355505170791404, - 1.0368366381101848, - 1.0381548995077503, - 1.039500809654481, - 1.0408718384344313, - 1.0422658293602844, - 1.0436811363765348, - 1.0451151678146613, - 1.0465669371315445, - 1.0480355218662394, - 1.049521735524715, - 1.0510272030631869, - 1.0525503693310272, - 1.0540945334383856, - 1.0556624173319835, - 1.0572532728900002, - 1.0588657875263017, - 1.0605022198977685, - 1.0621663094681184, - 1.0638542830670672, - 1.065569723978384, - 1.0673161562070894, - 1.0690898217437486, - 1.070898886383897, - 1.072748191048781, - 1.0746341012168241, - 1.0765529140682535, - 1.0785104582276799, - 1.0805140426075115, - 1.0825589113041052, - 1.0846522377304166, - 1.086799054675942, - 1.0889921496147639, - 1.0912243111786843, - 1.0934994646556646, - 1.0958235873188573, - 1.0981883664696963, - 1.1005988588452367, - 1.1030597532384379, - 1.1055620944663733, - 1.1081117600644668, - 1.1107118909355016, - 1.113352169042761, - 1.1160220933673781, - 1.1187235882036486, - 1.121458821286495, - 1.1242159656006363, - 1.126995620242947, - 1.1297975553716797, - 1.1326091438858754, - 1.1354182713555392, - 1.1382235543900099, - 1.1410234939916934, - 1.1438059460862158, - 1.1465686245832076, - 1.1493093544255968, - 0.9574459903254549, - 0.9598219313785582, - 0.9621533103411197, - 0.9644317671676075, - 0.9666512054908134, - 0.9688117333730939, - 0.9709135709525474, - 0.9729524086692823, - 0.9749257609050119, - 0.9768318064721667, - 0.9786675917488189, - 0.9804305851550531, - 0.9821179827503019, - 0.9837282161350965, - 0.9852612600477585, - 0.9867127948369536, - 0.9880807240514474, - 0.9893708755954008, - 0.9905812241848128, - 0.9917115860681469, - 0.9927739694466676, - 0.9937803594594583, - 0.994729425443004, - 0.9956215172945311, - 0.9964700034481877, - 0.9972702536268216, - 0.9980192133695904, - 0.998733092450387, - 0.9994249708846624, - 1.000084636996218, - 1.0007037299591979, - 1.0012944352000002, - 1.001841099615796, - 1.0023298820128195, - 1.0027750941420523, - 1.0031562594236423, - 1.0034535876708088, - 1.0036825038861665, - 1.0038565357295317, - 1.0039571923529187, - 1.0039684884678395, - 1.0039061670955245, - 1.0037526945159791, - 1.003491261984665, - 1.0031395201544204, - 1.0027145863743643, - 1.0022014848414476, - 1.0015884510197828, - 1.000895308471968, - 1.000108352511893, - 0.9992159661128442, - 0.9982405215951607, - 0.9971705233468654, - 0.99599504778698, - 0.9947387878922271, - 0.9934245234733923, - 0.9920409403302626, - 0.9905790513417114, - 0.9890631129201154, - 0.9874833902972571, - 0.9858318621604556, - 0.9841373687770681, - 0.9824275960124995, - 0.9806970329326061, - 0.9789453317138108, - 0.9772045789404562, - 0.9754710376916539, - 0.9737424308556761, - 0.9720508065644083, - 0.970392123627157, - 0.9687633053413254, - 0.9671965204924379, - 0.9657215840688779, - 0.9643349887298085, - 0.9630329054926882, - 0.9618417428729827, - 0.9607530710252181, - 0.95975608256334, - 0.9588699829758315, - 0.9581142276697905, - 0.9574821510773176, - 0.9569666820448968, - 0.9565858627376874, - 0.9563299790037949, - 0.9561892320261539, - 0.9561778394228677, - 0.9562826877324865 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -69884,1987 +3700,15 @@ }, "showlegend": false, "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - -0.6051707989883884, - -0.6026269443379545, - -0.600181668607096, - -0.5978615856974216, - -0.5956916676849419, - -0.5936519903975136, - -0.5917233808058919, - -0.5899301235999267, - -0.588254491835437, - -0.586679117915889, - -0.5852272365597835, - -0.5838825827873967, - -0.5826293785797437, - -0.5814901401652421, - -0.5804854963458183, - -0.5796008896469621, - -0.5788221655868612, - -0.5781688555995044, - -0.5776277228964626, - -0.5771857223901391, - -0.5768608975557529, - -0.5766693704484064, - -0.5765986967558283, - -0.5766366786431465, - -0.5767980693632442, - -0.5770740934713832, - -0.5774561626004769, - -0.5779577400732545, - -0.5785739215299639, - -0.5792995725505886, - -0.5801460712281603, - -0.5811229569021937, - -0.5822275484267734, - -0.5834568087191141, - -0.5848173452299453, - -0.5863091266113988, - -0.5879319662734402, - -0.5896896571573391, - -0.5915829926473487, - -0.5936106614325415, - -0.595768941908461, - -0.5980506393442159, - -0.6004530778577185, - -0.6029712367417617, - -0.6055910906161531, - -0.6083127791477246, - -0.6111346577168542, - -0.614041136931462, - -0.6170204402568944, - -0.6200801303915446, - -0.6232282889879908, - -0.6264567908082047, - -0.6297833369253727, - -0.63322363883295, - -0.6367692839778893, - -0.6404136184746997, - -0.644176480939482, - -0.6480756508411848, - -0.6520996025013445, - -0.6562706347904133, - -0.6606085558412658, - -0.6650983897431973, - -0.6697662896776264, - -0.6746347817669347, - -0.6796856981734151, - -0.6849020125025029, - -0.6903101956174666, - -0.6959346768775646, - -0.7017533792566881, - -0.7077933192235428, - -0.7140779540716345, - -0.7205792473962519, - -0.7272691750634547, - -0.7341689700958927, - -0.7412987047814764, - -0.7486257047958561, - -0.7561689933688741, - -0.7639454544432176, - -0.771918591823092, - -0.7801057279604284, - -0.7885210589446894, - -0.7971248746206219, - -0.8058775532274443, - -0.8147921919161292, - -0.8238810895762477, - -0.8331017303059761, - -0.8424665371658971, - -0.851986360112205, - -0.8616166611891084, - -0.871313430282333, - -0.8810872289696448, - -0.8909483920565614, - -0.9008517266246096, - -0.910808934446554, - -0.9208312661176817, - -0.93087360634918, - -0.94094919885346, - -0.9510710599447568, - -0.9611945148814846, - -0.971275258424667, - -0.9813272880447076, - -0.9085985670895225, - -0.9181415575160171, - -0.9276398826497586, - -0.93710203978535, - -0.9464764434787567, - -0.9557131437205219, - -0.9648212040466952, - -0.9738105581682306, - -0.982634769440981, - -0.9913074899032939, - -0.9998433049927289, - -1.0082012341867492, - -1.016400657214012, - -1.0244617805097942, - -1.0323489084060629, - -1.0400308320348184, - -1.0475330259460527, - -1.0548816847447884, - -1.062052187226839, - -1.0690746336785386, - -1.0759805548820107, - -1.0827517379449194, - -1.0893741050033887, - -1.0958809816908677, - -1.1023039313149707, - -1.108631201580605, - -1.1148943395395932, - -1.1211226268110241, - -1.1273028077166165, - -1.133460839519118, - -1.1396224813568696, - -1.1457727377494258, - -1.1518986011043881, - -1.158020923912091, - -1.1641572869506862, - -1.170292154288611, - -1.1764404713934424, - -1.1826172537249837, - -1.1888056919481846, - -1.1949906094995164, - -1.201183985532793, - -1.2073933541495339, - -1.2136031182650036, - -1.2198195381495982, - -1.2260485242144001, - -1.2322750773606306, - -1.2385001588896465, - -1.2447294651498106, - -1.250948553784826, - -1.2571447801267859, - -1.2633210676725912, - -1.2694774115596792, - -1.2756032701155462, - -1.2816966455854277, - -1.2877593020396476, - -1.2937835733267682, - -1.2997636935364325, - -1.3057028511513395, - -1.311597997554522, - -1.3174462381770027, - -1.323247428355222, - -1.329002694799935, - -1.3347138233685176, - -1.340378175087592, - -1.346000236397846, - -1.351585495966763, - -1.3571401970330823, - -1.3626658505575326, - -1.3681635840095379, - -1.3736426475159036, - -1.3791013295783392, - -1.3845419903738805, - -1.38997502855478, - -1.3954066979198492, - -1.4008339015180669, - -1.4062543863165218, - -1.4116749743011419, - -1.4170878983413124, - -1.4224915349065075, - -1.4278945144671003, - -1.4332821634772341, - -1.4386412591355955, - -1.4439810015954315, - -1.4493053748789781, - -1.4545953256006903, - -1.4598384604870298, - -1.4650416028450717, - -1.4701879823086024, - -1.4752583496559357, - -1.4802611467892075, - -1.4852031326807298, - -1.4900596352368365, - -1.494820342294335, - -1.4994953984832105, - -1.5040682051278167, - -1.5085247858648785, - -1.5128796102621382, - -1.517127038478586, - -1.521249039882171, - -1.5252641502909496, - -1.2907159587675943, - -1.293852354394812, - -1.296946331358396, - -1.3000129997089296, - -1.3030495044443287, - -1.3060533699387795, - -1.3090409239096072, - -1.3120281054062732, - -1.315014517836511, - -1.3180014663112833, - -1.321005359541615, - -1.3240282601809248, - -1.3270722359614915, - -1.3301523414634067, - -1.333270403780492, - -1.336427413533572, - -1.3396360721542164, - -1.3429074183136858, - -1.3462422891112797, - -1.3496383011745074, - -1.3566165057242567, - -1.3602027452051288, - -1.3638617325396512, - -1.367600527600954, - -1.3714215455903194, - -1.3753247213975974, - -1.3793134896920496, - -1.3833904311221135, - -1.3875563151542778, - -1.391811187088626, - -1.3961561121445334, - -1.400592082578007, - -1.4051159829701934, - -1.4097240009120275, - -1.4144159743181712, - -1.4191898671319108, - -1.424038907394351, - -1.428961365266745, - -1.4339556734526284, - -1.439012785251618, - -1.4441242611769387, - -1.449290903560966, - -1.4545101201514912, - -1.459772810411916, - -1.4650799256349352, - -1.47043200551518, - -1.4758207252092466, - -1.4812494794891171, - -1.486724243652311, - -1.4922377235949384, - -1.4977838684582452, - -1.50336972292719, - -1.5089993341395003, - -1.514664397758381, - -1.520369498546694, - -1.5261213143890928, - -1.531911516715369, - -1.5377301925400855, - -1.5435801762168255, - -1.5494609970217894, - -1.5553620505970787, - -1.5612839285106546, - -1.5672270359001317, - -1.5731808877030453, - -1.5791450542695356, - -1.5851201000079371, - -1.5910952993517342, - -1.5970616345151238, - -1.6030226051157623, - -1.608982806626835, - -1.614938428222309, - -1.620895102694554, - -1.6268574873960806, - -1.6328209298228566, - -1.6387821696914293, - -1.6447462917857498, - -1.650719044862726, - -1.6566964849539871, - -1.6626839413335146, - -1.6686868641993762, - -1.6747001976206484, - -1.6807313915868167, - -1.686783088759012, - -1.692850100405586, - -1.6989288474947934, - -1.7050224659937148, - -1.7111358644258106, - -1.7172647008637831, - -1.7234140825158668, - -1.7295858307655365, - -1.7357753114811079, - -1.7419790524044176, - -1.748196682630655, - -1.7544349630230571, - -1.760690510642708, - -1.766966622064617, - -1.7732675882620699, - -1.7795909040342057, - -1.7859436728040072, - -1.79232384764462, - -1.4368279168794647, - -1.442120545488439, - -1.4474542153561512, - -1.4528334388637063, - -1.4582525451904635, - -1.4637144223704683, - -1.4692208872010069, - -1.474765256599684, - -1.480340904999121, - -1.485947445895247, - -1.4915857854499255, - -1.4972486279495412, - -1.5029336376399978, - -1.5086387579220073, - -1.5143568107210352, - -1.5200835306863247, - -1.5258135598879379, - -1.5315409145056915, - -1.5372594841469693, - -1.5429634021487626, - -1.548648989717336, - -1.5543115160447285, - -1.55994400155967, - -1.5655415199382774, - -1.5711030428078478, - -1.5766259178518671, - -1.5821035538549657, - -1.5875342515983522, - -1.592919762096341, - -1.5982513434667212, - -1.6035239164194979, - -1.6087432455871036, - -1.6138974153921741, - -1.6189757015203357, - -1.6239864835191735, - -1.6289346417478707, - -1.6338076170868574, - -1.638596068158375, - -1.6433080860578673, - -1.6479313264075448, - -1.652455558088192, - -1.656894103116941, - -1.6612592532793757, - -1.6655401825921865, - -1.6697308850785082, - -1.673848535177741, - -1.6778828092149531, - -1.6818272480551884, - -1.6857035229394655, - -1.6894983692388033, - -1.6932023982496476, - -1.696837838216217, - -1.700419581468342, - -1.7039326581718428, - -1.7073675929010872, - -1.7107460446562721, - -1.7140496749388578, - -1.7172609870917965, - -1.72039771478352, - -1.7234735789460849, - -1.7264671708567256, - -1.7293606524914555, - -1.7321728809618453, - -1.734882492267927, - -1.7374718040852373, - -1.739965312627507, - -1.7423430242848499, - -1.7445895740198316, - -1.7467359152843664, - -1.7488117551535725, - -1.750803941532545, - -1.7527021788011203, - -1.7545400569047207, - -1.7563011779500945, - -1.7579734830873648, - -1.7595926201593557, - -1.7611886410682454, - -1.7627458909066651, - -1.7642482663769226, - -1.7657242620484002, - -1.7671538715761623, - -1.7685195379109415, - -1.7698511811519777, - -1.7711260609344064, - -1.7723261212087353, - -1.7734825283235522, - -1.7746236008574987, - -1.7757308220164472, - -1.7767867662268764, - -1.7778220261443856, - -1.780850422060823, - -1.78188008901541, - -1.7829032827993931, - -1.7839053637796671, - -1.7849184431019245, - -1.7859272951844036, - -1.7869182671601116, - -1.7879243028598977, - -1.7889300940104278, - -1.7899224504270645, - -1.399772857396308, - -1.3998587313608684, - -1.3999965016657696, - -1.4001722823237217, - -1.4004167321551446, - -1.4007142087694804, - -1.4010495858545091, - -1.4014523609698937, - -1.401949609411227, - -1.4025242247554652, - -1.4031599183158776, - -1.4038824863557273, - -1.4046724929998995, - -1.4055112025369552, - -1.4064230996146045, - -1.4073871682519101, - -1.4083839291937443, - -1.409438960093521, - -1.4105755534419078, - -1.411774504530708, - -1.4130181505379928, - -1.414330106798427, - -1.415690930038595, - -1.4170824893758762, - -1.4185289203224918, - -1.4200516906997271, - -1.4216321247084243, - -1.423252651368143, - -1.4249334036483552, - -1.426654139875724, - -1.428395788940648, - -1.4301784777907738, - -1.4319811847864512, - -1.433780274550286, - -1.4355873788549058, - -1.4374102740284702, - -1.4392187331268818, - -1.4409839221358145, - -1.4427151525444442, - -1.4443841826067048, - -1.445965098764073, - -1.4474727681679203, - -1.4489218859125315, - -1.4502922158020755, - -1.4515672467422975, - -1.452766779828939, - -1.4538779023093695, - -1.4548897863868, - -1.4558261759515891, - -1.4566813834685455, - -1.4574504790367242, - -1.4581603048812835, - -1.4588365700326378, - -1.4594796295797106, - -1.4600917030370264, - -1.460699666836762, - -1.4613086325617277, - -1.4619241173773614, - -1.4625728956444373, - -1.4632799558143519, - -1.4640512087181607, - -1.4648924761193325, - -1.465825166651087, - -1.4668544468430322, - -1.4679844228213301, - -1.4692320664151568, - -1.4706019098335892, - -1.4720969150926195, - -1.473729799252963, - -1.4755112025961572, - -1.477443806057772, - -1.4795284810988047, - -1.481769488874616, - -1.4841663042072446, - -1.4867162491357682, - -1.489417510729691, - -1.49226663569, - -1.4952635694266674, - -1.4984064325275708, - -1.5016857316518037, - -1.5051016495410252, - -1.5086463762964213, - -1.5122958020138468, - -1.5160571053911418, - -1.5199380809190604, - -1.5239149018319111, - -1.527964297422561, - -1.5320968287498167, - -1.5363247977938264, - -1.5406347197873622, - -1.545072494249277, - -1.5496814609547973, - -1.5544443088404127, - -1.5593436657912936, - -1.564434313219312, - -1.569767049372648, - -1.5753169237887816, - -1.5811288107035666, - -1.5872460777119473, - -1.5936369598631, - -1.2254630636427515, - -1.23163299874089, - -1.2380934557354035, - -1.2448008971120468, - -1.2517870037966639, - -1.2590818202277112, - -1.2666332666537066, - -1.274472144978484, - -1.28262806042142, - -1.2910382916532575, - -1.299632111340519, - -1.3262012312082527, - -1.3446475989054687, - -1.3734628146413235, - -1.38330855602572, - -1.3931750042705924, - -1.4030858831046675, - -1.4130632520631836, - -1.4230324841751079, - -1.433017211245279, - -1.4430419803992953, - -1.4530362354497313, - -1.4629361335732218, - -1.4727730236521799, - -1.482576456868777, - -1.4922855228139753, - -1.50193227797513, - -1.5115485691690413, - -1.5210747648863063, - -1.5305430221183896, - -1.5399865805057562, - -1.549349742930747, - -1.5585804595334416, - -1.5677176073832224, - -1.5767987581937486, - -1.5857715219718536, - -1.5946727201631514, - -1.603538737122001, - -1.6123177509649302, - -1.620960099820219, - -1.6294998581737732, - -1.6379701806635927, - -1.6463212207075002, - -1.6545849477923893, - -1.6627923429001212, - -1.670895000526034, - -1.678923757533457, - -1.6869073682464073, - -1.6947991540471379, - -1.702555711694274, - -1.7102027420571655, - -1.7177663641448349, - -1.7252054021225605, - -1.7325429564699024, - -1.7398008999103234, - -1.7469408754471987, - -1.7539279817187081, - -1.7607816831447742, - -1.7675238398042856, - -1.7741230545072684, - -1.7805984566849016, - -1.7869693375160633, - -1.7932079490553712, - -1.7993320953297978, - -1.8053574668340184, - -1.8112610765192194, - -1.8170230760999684, - -1.822656871772603, - -1.8281771891971168, - -1.833566709172174, - -1.838835540223177, - -1.8439939763699127, - -1.8490290366327178, - -1.853929161678151, - -1.8586980251359815, - -1.863343003923466, - -1.8678571481068256, - -1.8722393522252663, - -1.8764911699050144, - -1.880610386294776, - -1.8845928775383676, - -1.8884367479569417, - -1.8921469328231204, - -1.8957286236165678, - -1.8991749642223126, - -1.9024827388891872, - -1.9056615070847134, - -1.9086984113809216, - -1.9115824912267616, - -1.9143263776080408, - -1.9169431559086547, - -1.9194215311024765, - -1.921754607881599, - -1.9239645771751288, - -1.926045256833116, - -1.928007558935494, - -1.9298937408817092, - -1.9316865240711458, - -1.93336870116315, - -1.9349639265526504, - -1.604883325182154, - -1.6056659204563486, - -1.6063238736984804, - -1.6068765752156455, - -1.6072925087352585, - -1.6075444463352135, - -1.607658722356597, - -1.607660724810012, - -1.6075244576491476, - -1.6072304657029008, - -1.6068178209866069, - -1.6062687351047005, - -1.6055670076306834, - -1.604750652177005, - -1.6037888151706818, - -1.6026529684168929, - -1.6013788569215985, - -1.5999998136492524, - -1.5984861082906185, - -1.596810740155293, - -1.5950108956026552, - -1.5930579516401713, - -1.5909262718112227, - -1.588657583745768, - -1.586291775014105, - -1.5838056683154473, - -1.5811789069938609, - -1.578455399088775, - -1.5756148244391688, - -1.5726395507169055, - -1.5695785914298388, - -1.5664185494933607, - -1.5631485343142333, - -1.559822981034464, - -1.5564940137797212, - -1.5531528558242713, - -1.549792351613632, - -1.5464634996083273, - -1.543158522079569, - -1.5398704165472845, - -1.5366483198400955, - -1.533538351570881, - -1.5305335059097867, - -1.5276279491392954, - -1.5248659701441998, - -1.522240131340051, - -1.5197423852768641, - -1.51321153291925, - -1.5113877567589722, - -1.509778145266687, - -1.508369525633702, - -1.5071491494604683, - -1.5061437803484157, - -1.5053382830261133, - -1.5047177372922964, - -1.504305611256656, - -1.5041207186208911, - -1.5041447150886906, - -1.504359888956801, - -1.5047812770172695, - -1.505389857626338, - -1.5061659860865428, - -1.5071203051228999, - -1.5082309414674095, - -1.5094757822821707, - -1.5108626626358335, - -1.5123966231620833, - -1.5140561557968395, - -1.515820572081679, - -1.5176942722759348, - -1.5196585891378702, - -1.5216956459666704, - -1.523809936844937, - -1.5260040665525276, - -1.5282618928329974, - -1.530568362031429, - -1.5329268395095619, - -1.5353243196196393, - -1.5377490761419847, - -1.54020555060884, - -1.5426831075975744, - -1.545172682008008, - -1.547680106231669, - -1.5502099448568794, - -1.5527542008327122, - -1.5553045970462962, - -1.557862885689796, - -1.5604176942306711, - -1.5629577325519426, - -1.565482714465039, - -1.5679923246743304, - -1.5704773614295613, - -1.5729295825893286, - -1.575351103616327, - -1.577735465660222, - -1.5800772895311277, - -1.582380698007295, - -1.584640780038498, - -1.5868534738509779, - -1.589023980104632, - -1.2969058157759215, - -1.298527812921759, - -1.3001093751597281, - -1.3016567082955008, - -1.303168869206952, - -1.3046454497329285, - -1.3060935458962344, - -1.3075200227307997, - -1.3089250047845855, - -1.3103093134883588, - -1.3116809344334224, - -1.313041225643719, - -1.3143913148235895, - -1.3157382677073233, - -1.3170823454765623, - -1.3184235211849844, - -1.319767769473633, - -1.3211206621452165, - -1.3224821858744893, - -1.3238522932705843, - -1.325235929565099, - -1.3266326926810479, - -1.3280421929710016, - -1.3294685616267297, - -1.3309151517098123, - -1.3323813611075255, - -1.3338667549649952, - -1.3353745329439732, - -1.336904875350424, - -1.3384582933751958, - -1.3400381662485665, - -1.341645232672356, - -1.3432801088298725, - -1.344945477025405, - -1.3466434026717435, - -1.3483747779187476, - -1.3501405441430725, - -1.3519420976350507, - -1.3537801212533012, - -1.3556546736072077, - -1.3575650829276587, - -1.3595097923584638, - -1.3614889570256408, - -1.3635025844863136, - -1.3655484504565698, - -1.3676274822621088, - -1.369739666764875, - -1.3718812762637111, - -1.3740543157463838, - -1.3762586883986387, - -1.3784880702764424, - -1.380737718114164, - -1.3830076124923032, - -1.385296492264997, - -1.3875989530313078, - -1.3899191960859703, - -1.3922572841331646, - -1.3946057558548028, - -1.396962084695401, - -1.399328829564035, - -1.4017075446777802, - -1.4040949251864332, - -1.4064994706586402, - -1.408926862934139, - -1.4113708776878144, - -1.4138428998097403, - -1.4163516427837042, - -1.418889271661959, - -1.4214502082286133, - -1.4240448579875788, - -1.4266823592587843, - -1.429354464138475, - -1.432068256375483, - -1.43482844751039, - -1.4376233871356052, - -1.4404432260394906, - -1.4432932737426678, - -1.4461786745617264, - -1.4490889085784915, - -1.4520281028362014, - -1.4550003996699998, - -1.4579955053388771, - -1.4610170580238189, - -1.4640687058406892, - -1.4671417226895394, - -1.4702276503598757, - -1.4733304632068847, - -1.4764545359216883, - -1.4795909449457543, - -1.4827429455642491, - -1.4859134588959604, - -1.489092960820581, - -1.4922724016723858, - -1.4954556645311572, - -1.4986470094032505, - -1.5018379637766137, - -1.5050323971743171, - -1.5082338239407447, - -1.5114331091037758, - -1.5146340503196938, - -1.2605428998381363, - -1.2633568144683884, - -1.266155147781738, - -1.2689414805943484, - -1.2717189866263159, - -1.2744806761032645, - -1.2772361207438951, - -1.2799945976326785, - -1.2827513682398892, - -1.2855016678445172, - -1.288253600188764, - -1.2910143530323694, - -1.2937776789592947, - -1.2965506221180583, - -1.2993392422653904, - -1.3021354913575962, - -1.3049445489871165, - -1.3077714327130572, - -1.310607533899099, - -1.313444424840388, - -1.3162854326611808, - -1.3191335376295625, - -1.3219799896434792, - -1.3248269756346933, - -1.327675773232387, - -1.3305167413109393, - -1.3333417875920763, - -1.3361518433259114, - -1.3389472794788913, - -1.3417196871459398, - -1.3444692952761712, - -1.3471968360685214, - -1.3498956960780755, - -1.3525661249331473, - -1.3552077022552422, - -1.357814089368203, - -1.3603806838522616, - -1.3629080537726552, - -1.3653969404153676, - -1.367844349496886, - -1.370249528172621, - -1.3726120759249696, - -1.3749317070511908, - -1.3772106168206686, - -1.3794498543558416, - -1.3816519287932483, - -1.3838212626590647, - -1.3859612535537296, - -1.3880743827828397, - -1.3901641998920047, - -1.3922329192465934, - -1.3942804204042094, - -1.3963092593693187, - -1.398321557823902, - -1.4003137125907903, - -1.402284399973419, - -1.4042367332601362, - -1.406166443959573, - -1.4080682098323924, - -1.4099448972499058, - -1.4117992939846287, - -1.4136247862702422, - -1.4154199938464964, - -1.4171907527358387, - -1.418931641820084, - -1.4206382576762397, - -1.4223163752476102, - -1.4239586078225783, - -1.425555250764197, - -1.427112190583774, - -1.4286349957431241, - -1.430114433939274, - -1.4315436625743312, - -1.4329297541405408, - -1.4342653778103063, - -1.4355429714221262, - -1.4367722421392992, - -1.437962499649273, - -1.43910594117155, - -1.440198750857102, - -1.441251710040269, - -1.4422590491290002, - -1.44321601214049, - -1.4441343125979786, - -1.4450100052740742, - -1.4458382784835617, - -1.4466324734768463, - -1.4474056602424141, - -1.4481558545989968, - -1.4488827253642598, - -1.4496005497351585, - -1.4503100315924409, - -1.4510120883248856, - -1.4517212270216506, - -1.4524507513666978, - -1.453202479896007, - -1.453978928014049, - -1.454792692358325, - -1.4556463078697517, - -1.4565422421417893, - -1.2288511915258207, - -1.2295172724601886, - -1.2302364520404283, - -1.2310167801770717, - -1.2318639675069312, - -1.2327777892275242, - -1.233757647791239, - -1.2348072670172154, - -1.2359286231284916, - -1.2371231175633373, - -1.2383928964766944, - -1.2397397777975079, - -1.2411661507921863, - -1.2426728488764567, - -1.2442590158761944, - -1.2459282510343612, - -1.2476821591835177, - -1.2495145820342537, - -1.2514271473884735, - -1.2534193421079225, - -1.2554792541482054, - -1.2575952486452469, - -1.2597681751792815, - -1.2619979697306625, - -1.2642718403650932, - -1.266594360579294, - -1.268967978848983, - -1.2713771867161814, - -1.2738093614197108, - -1.2762731536903396, - -1.2787773721069138, - -1.281310561340172, - -1.2838876765145997, - -1.2865219010874187, - -1.289199836153691, - -1.2919421944341374, - -1.29476702749623, - -1.297660000831319, - -1.3006086312137333, - -1.3036302263034831, - -1.306741152236576, - -1.309926744523059, - -1.3132044067112998, - -1.3165894542759924, - -1.3200651339796967, - -1.3236153531307568, - -1.327252757390087, - -1.330989858801943, - -1.3348079784362994, - -1.338720063632513, - -1.3427371784083062, - -1.346838145808912, - -1.3510352580915872, - -1.355337400529511, - -1.3597211140328846, - -1.364164705031127, - -1.3686776545219572, - -1.373268864219196, - -1.3779153488335742, - -1.38262697846087, - -1.3874103857584377, - -1.3922381747669443, - -1.397084049945818, - -1.4019517851094263, - -1.4068428785763516, - -1.4117266693560293, - -1.4166069058314308, - -1.4214860859557406, - -1.42633354210864, - -1.4311539311453814, - -1.4359493314321463, - -1.4406880746977007, - -1.4453402136611013, - -1.4499083074699628, - -1.4543956039601669, - -1.4587749833982089, - -1.463053786449882, - -1.467242022449048, - -1.4713193874347574, - -1.475265125437122, - -1.479085938992474, - -1.4827884760649581, - -1.4863541188127676, - -1.4897931020248365, - -1.4931163523016626, - -1.4963100018433464, - -1.4993877333037484 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -71874,1987 +3718,15 @@ }, "name": "pz est", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.027284733045287494, - 0.029891830187399594, - 0.03246357630885859, - 0.034973328912609805, - 0.03739606991365253, - 0.03975166163375183, - 0.042059199716247414, - 0.04429430386572221, - 0.04647459141984904, - 0.04861730478423172, - 0.050699062272586984, - 0.05273596915781715, - 0.05474362644415489, - 0.05669931436763733, - 0.058582178340021086, - 0.060406537046539546, - 0.06218628735906106, - 0.06390160998133114, - 0.06556544485683125, - 0.06719052129872077, - 0.06875845202945861, - 0.07025275585583038, - 0.07168551472017486, - 0.07306855734405136, - 0.0743867435210187, - 0.07564847164469111, - 0.0768619537934199, - 0.07801334205482717, - 0.0791071791676447, - 0.0801482385295437, - 0.081124776094521, - 0.08202689343404199, - 0.08285692958225029, - 0.08361758775533551, - 0.08430191215195593, - 0.08490960543695039, - 0.08544050594846073, - 0.08589044754736246, - 0.08625825394502565, - 0.08654483530345883, - 0.08675355556887523, - 0.08689120052116076, - 0.08696004819903679, - 0.08696472186113839, - 0.08691879537088536, - 0.08682177140797533, - 0.08667472895237747, - 0.0864927300272139, - 0.08628700486260114, - 0.08604933700758956, - 0.08577109106635154, - 0.08545977237870868, - 0.08509712250239139, - 0.08466659903728026, - 0.08417592216905273, - 0.08363103347368935, - 0.08301089597933983, - 0.08229707625939918, - 0.08150027515413123, - 0.08059715514282845, - 0.07956667313605771, - 0.07842280661166869, - 0.07713866160402388, - 0.07568982880465341, - 0.07409343359531603, - 0.07236558246758712, - 0.07047823414881366, - 0.06840605334099452, - 0.06617046858080354, - 0.06374381144869098, - 0.061101259594115456, - 0.05827052825025783, - 0.055279505823592624, - 0.05210550865902124, - 0.0487287975981618, - 0.04518228404534334, - 0.04144666354379036, - 0.03750488823546093, - 0.03339395945918088, - 0.02909727464158974, - 0.024599907255437564, - 0.019942175283813646, - 0.015164288266205438, - 0.010252888203844172, - 0.005196029039441207, - 3.6702263494371506e-05, - -0.0052373090603882524, - -0.010637185694915148, - -0.01611817309386748, - -0.021636157544849925, - -0.027202331000313787, - -0.03282698843977749, - -0.03846505067150055, - -0.0441286372555984, - -0.04982945803130374, - -0.05552268743674356, - -0.061221957650488566, - -0.06694095082132023, - -0.0726354430370939, - -0.07826152459576495, - -0.08383373998782724, - -0.08569801154047856, - -0.09109460048539622, - -0.09642196000735408, - -0.10168887414233173, - -0.10684400949027135, - -0.11183762062340707, - -0.11667890830303579, - -0.1213778769161451, - -0.125888113269735, - -0.13022316165747466, - -0.1343973988917722, - -0.13836957825710824, - -0.1421587189110122, - -0.1457844101852276, - -0.14921033378371465, - -0.15240462607187324, - -0.15539181856996268, - -0.1581971526779799, - -0.1607951068332215, - -0.16321476333205637, - -0.16548626595549618, - -0.1675903864074221, - -0.16951211427333038, - -0.1712830537805223, - -0.1729338795216719, - -0.17445218377218263, - -0.17586840413570748, - -0.17721073889835753, - -0.1784657784977443, - -0.1796596190633794, - -0.1808164060765837, - -0.18192161839954996, - -0.18296317186570932, - -0.1839611881493628, - -0.18493372103090602, - -0.18586688368187446, - -0.18677681903878252, - -0.18767820586320205, - -0.18855656960489633, - -0.18939948094577996, - -0.19021813537137328, - -0.19102278544252357, - -0.19180112968250979, - -0.19256066591764792, - -0.1933084308998401, - -0.19403305998709125, - -0.19473907633236895, - -0.19543056517856974, - -0.1960966789590828, - -0.19672848511584393, - -0.1973278741812216, - -0.19789645622604146, - -0.19842700790166934, - -0.19891887507278957, - -0.19937167683301352, - -0.19978052991403622, - -0.20014256707418385, - -0.2004564007292564, - -0.20072065839527065, - -0.20093432892027407, - -0.20109528295791154, - -0.2012032797075006, - -0.20126188483113855, - -0.2012695075224613, - -0.20122652212576186, - -0.20114010386253617, - -0.20101787455327866, - -0.20085907156618185, - -0.20066440513666328, - -0.20044399877261965, - -0.2001961526583499, - -0.19992206154329462, - -0.19963361790968925, - -0.1993381622630306, - -0.19903166290793917, - -0.1987114129026062, - -0.1983840429733177, - -0.19804183479433612, - -0.19768011721831844, - -0.19730648518284036, - -0.1969065584950117, - -0.19647018425402507, - -0.19600635219236365, - -0.19551949572035449, - -0.1949973000310387, - -0.1944303299544789, - -0.19382639240552707, - -0.19317307200456663, - -0.19245995250274842, - -0.1916963425371756, - -0.19088981450566947, - -0.190029527064154, - -0.18910642223378885, - -0.18813062011348322, - -0.1870931149806326, - -0.18598667368998476, - -0.1848241072701582, - -0.18359910561975845, - -0.1823068717360162, - -0.180962207874262, - -0.18826479368714677, - -0.18686018536397864, - -0.18541041897485236, - -0.18393032061314618, - -0.1824170623092244, - -0.1808685905621603, - -0.17930077092588417, - -0.17772904237122192, - -0.1761534135278293, - -0.17457452337302287, - -0.173008067587577, - -0.17145583995295355, - -0.1699195170840116, - -0.1684133587618049, - -0.1669385316115132, - -0.1654958401997653, - -0.16409718948548452, - -0.1627529722898764, - -0.16146349928076423, - -0.16022580420346208, - -0.15790802034191692, - -0.15683034198108578, - -0.15581469939538806, - -0.1548682002087713, - -0.1539924004789478, - -0.15318733128617587, - -0.1524567432404596, - -0.1518027699811234, - -0.15122578522649124, - -0.15072643250821424, - -0.1503062404921473, - -0.14996498737860084, - -0.14970030970183754, - -0.14950943244119627, - -0.14939116878867423, - -0.1493438413273355, - -0.1493618286943989, - -0.14944361568464218, - -0.14958666498488904, - -0.1497831329943334, - -0.15002566071289952, - -0.15031290961676733, - -0.15064307636589572, - -0.1510079687676322, - -0.15140757094152, - -0.15184151684335384, - -0.15230239210831956, - -0.15279381133655562, - -0.15331913864494717, - -0.15387218039470305, - -0.15444777020351602, - -0.15505088180402896, - -0.15568538153220923, - -0.1563438988493704, - -0.15703079479418625, - -0.15775110075710178, - -0.15849754695208082, - -0.15926115256820605, - -0.16004253856921066, - -0.16084225709727565, - -0.1616508249293448, - -0.16246884175019255, - -0.16329690176821304, - -0.1641261656915025, - -0.16495771562586536, - -0.16579213886057323, - -0.1666201172946196, - -0.16743412315316858, - -0.16823791061651103, - -0.169036305358133, - -0.1698259686143063, - -0.17061303561261107, - -0.17140194969981215, - -0.17218769803589845, - -0.17296732024995018, - -0.17374729614238918, - -0.1745326752925286, - -0.1753196277794089, - -0.17611537627843088, - -0.17692528448451678, - -0.17774379012216385, - -0.17857837528726708, - -0.1794343543249028, - -0.1803049989529555, - -0.18118652424228754, - -0.18208477041026605, - -0.18300476787352726, - -0.18394125878407608, - -0.18490046820853076, - -0.18588852108584014, - -0.18689995490012234, - -0.18793033641963172, - -0.18898615126632373, - -0.19007314145892965, - -0.19118669780754205, - -0.19233385591004612, - -0.1935212234134537, - -0.19474399883173624, - -0.19600855666354222, - -0.1973205954356795, - -0.1910530577747745, - -0.192404683985308, - -0.193796870482213, - -0.19523418455862776, - -0.1967105773476769, - -0.19822908186959676, - -0.1997922617016276, - -0.2013929851835003, - -0.20302418491617416, - -0.20468664310278892, - -0.20638083998414172, - -0.20809894262872097, - -0.20983908151221609, - -0.21159954047827242, - -0.21337248631978914, - -0.21515321139951415, - -0.21693767443739415, - -0.21871907764179288, - -0.22049054739465374, - -0.22224707739551783, - -0.2239845703247358, - -0.22569742274464777, - -0.22737861499793455, - -0.229023822238081, - -0.23063090991108148, - -0.23219644210174856, - -0.2337150184032139, - -0.23518393896117123, - -0.23660395463544445, - -0.2379667609327677, - -0.23926727427548725, - -0.2405102704191796, - -0.24168339215144993, - -0.24277733758068232, - -0.2437995228587598, - -0.24475427134796487, - -0.24563006835811355, - -0.24641741703974435, - -0.24712374975729562, - -0.24773678525777096, - -0.24824694498586278, - -0.2486667466225967, - -0.24900782926443507, - -0.249260365964477, - -0.2494174689563643, - -0.24949556980756132, - -0.24948460553207288, - -0.24937788437906086, - -0.24919642640467773, - -0.24892679707762663, - -0.2485601533039889, - -0.24811823686940587, - -0.24761578340835286, - -0.24703850113449136, - -0.2463771064039856, - -0.24565327688727615, - -0.244848960540572, - -0.2439470212935219, - -0.24296504685492007, - -0.24191679556524656, - -0.24078097922683442, - -0.2395396794381738, - -0.2382117977240141, - -0.2367758940296947, - -0.23521407331376173, - -0.23355084969953174, - -0.23176628185432416, - -0.2298440371411353, - -0.22781486915882593, - -0.22570832218372935, - -0.22350987826947527, - -0.2212082854763844, - -0.21883675649422157, - -0.21637808237681713, - -0.21381863959865094, - -0.21119420159652727, - -0.20853519193066766, - -0.205824187783183, - -0.2030455924511634, - -0.2002289682035087, - -0.19735417696271518, - -0.19440372613400966, - -0.19140936019457952, - -0.1883500353783861, - -0.1852071738666798, - -0.1820143208248015, - -0.17880219301489067, - -0.17555281184630497, - -0.17225070130617098, - -0.1689291317817881, - -0.1589652225894814, - -0.15566259840359983, - -0.15236294412118181, - -0.14905343578857588, - -0.14576796097514497, - -0.14249217698254013, - -0.13921300500903788, - -0.13596435101807747, - -0.1327315560026681, - -0.12950103774143562, - -0.12085053945379065, - -0.11770963501448074, - -0.11462150467072096, - -0.11157217516951311, - -0.10859218607309355, - -0.10566576595187872, - -0.10277767338296703, - -0.0999571879891922, - -0.09723113776937822, - -0.0945823398168674, - -0.09199424785461718, - -0.08949236450083704, - -0.08705708033606196, - -0.08466950502244557, - -0.08235379831497917, - -0.08008865208162706, - -0.07785462425465103, - -0.07567703419947165, - -0.0735789211379585, - -0.0715411974884134, - -0.06954615686238184, - -0.06761723452097824, - -0.06573498526569385, - -0.06388157982624781, - -0.0620810459551045, - -0.0603547162819788, - -0.05868447551071883, - -0.057052654992839194, - -0.055479175869673415, - -0.053944041972437955, - -0.05242843767519334, - -0.05095226327406944, - -0.04949434806336608, - -0.048031717445628515, - -0.0465756807891247, - -0.04513370320934955, - -0.04367610762794443, - -0.042174172457251816, - -0.04063703184106419, - -0.039036645128261216, - -0.037347800694407754, - -0.03558510863601604, - -0.03376299787737181, - -0.031862144480374555, - -0.029865791587902566, - -0.027793372299782522, - -0.025632264252435054, - -0.023371859622326553, - -0.021035437222470248, - -0.018616966148630815, - -0.016112183013561116, - -0.013547362016094999, - -0.01094766908370806, - -0.008313767895713186, - -0.005647641098202374, - -0.0029756015713659997, - -0.0003025113962958541, - 0.002366015131759315, - 0.005003802063848138, - 0.007586369845421062, - 0.010107560230033485, - 0.012561973623255434, - 0.01492859255967378, - 0.01720225081137865, - 0.019378846314582008, - 0.021441632255497358, - 0.023386171334516346, - 0.02520920226259282, - 0.026898113019398748, - 0.028442281307605004, - 0.029838767974226126, - 0.03108657554453727, - 0.03218134744817371, - 0.03312338228136658, - 0.0339150787681865, - 0.03455813442956384, - 0.03505586027420519, - 0.03540804750938399, - 0.03561646661518521, - 0.035690495501073484, - 0.03562981427205646, - 0.03544213674887474, - 0.035151447657270914, - 0.03475043207925908, - 0.03423131913829347, - 0.033618025015714696, - 0.032933864536245944, - 0.03216849284163318, - 0.03130984875027273, - 0.030371604371006732, - 0.029308392357487546, - 0.02807805336648819, - 0.02669843037394287, - 0.025187418178326818, - 0.023492499198913636, - 0.021564289569540835, - 0.01942900507070854, - 0.017043890641835622, - 0.014368440699383188, - 0.011436565063591734, - 0.02887826308443525, - 0.02537955114487042, - 0.021598027572536753, - 0.017577788653877505, - 0.013288103803772417, - 0.008699789248050612, - 0.003865399644562441, - -0.00124547500325729, - -0.00666149779463374, - -0.012319906931889932, - -0.01815055771216168, - -0.03636048599584347, - -0.04918162158972272, - -0.06951067575802823, - -0.07651097032156318, - -0.08352905957834364, - -0.09058871256327676, - -0.0977131867865578, - -0.10483000755133652, - -0.11196409021542016, - -0.11914009671434665, - -0.126289416474731, - -0.13334984496413838, - -0.14035246144358732, - -0.14732806904872395, - -0.15421710150297074, - -0.16105201334015132, - -0.16786486368765857, - -0.17459688079884178, - -0.18128087359834533, - -0.18794950017520218, - -0.19454760454447062, - -0.20102390615221422, - -0.20741742655345696, - -0.2137658501167551, - -0.22001703435329734, - -0.22620781778962867, - -0.2323742244615474, - -0.23846392675387854, - -0.24442661928821174, - -0.250295988216225, - -0.25610423680430533, - -0.2618004424088811, - -0.2674160369870814, - -0.2729814493063971, - -0.2784471592499329, - -0.28384329325177293, - -0.28919905347638386, - -0.29446678160518536, - -0.2996020121807428, - -0.30463088537748645, - -0.3095790202075209, - -0.3144040876406105, - -0.31912888683566265, - -0.32377598792779655, - -0.3283058217952801, - -0.33268231416365035, - -0.336926346249516, - -0.3410587408904456, - -0.3450468327275861, - -0.34891002076245975, - -0.3526677539594177, - -0.3562909546192154, - -0.3597964851781463, - -0.36320153867515376, - -0.3664816051050834, - -0.369615586179448, - -0.3726178776197206, - -0.3755028280781759, - -0.37825193652796846, - -0.38087515316496345, - -0.38338359741896344, - -0.38576304504893716, - -0.3880010108919609, - -0.3901026258183613, - -0.3920744212634528, - -0.3939084487146805, - -0.3956040862118911, - -0.39716299578547737, - -0.3985820351804138, - -0.3998566191030446, - -0.4009855855578256, - -0.40197295898651375, - -0.4028234330126773, - -0.40353062421421865, - -0.4040910973757375, - -0.4045142531198651, - -0.4047876110263932, - -0.40490070743586204, - -0.40486613207388344, - -0.40469712886466463, - -0.40438276342195023, - -0.4039160354286597, - -0.4033191552017024, - -0.40258609600314094, - -0.40172833617830894, - -0.4007886108538589, - -0.39974936954119594, - -0.39859254520519494, - -0.3973413929717019, - -0.3839472599124496, - -0.382495523508398, - -0.3809157010318499, - -0.37922720929483716, - -0.3773985392055831, - -0.37540235471930905, - -0.37326510073711294, - -0.37101232371613446, - -0.36861789894190256, - -0.3660624981059419, - -0.36338539743081005, - -0.36056885906094244, - -0.35759673674935344, - -0.3545072105248008, - -0.35126961694076886, - -0.34785537244153325, - -0.34430047340140446, - -0.3406385497747546, - -0.3368400391706942, - -0.3328782424291492, - -0.3287907622571382, - -0.3245493958828071, - -0.32012891562826806, - -0.3155715524874088, - -0.3109177124846622, - -0.30614480514826276, - -0.3012330169054719, - -0.2962267501315989, - -0.2911062633836792, - -0.2858544767066995, - -0.28052076362011674, - -0.2750920067604124, - -0.2695580384284647, - -0.26397338048372987, - -0.25839013755140955, - -0.2527999980034167, - -0.24719585064057997, - -0.24162836085630657, - -0.23608962971073308, - -0.23057291661881893, - -0.22512680695698517, - -0.21979679645582154, - -0.21457628934543183, - -0.20945877697748116, - -0.20448769290884822, - -0.19965537013479664, - -0.19495346709360414, - -0.18182613164497363, - -0.17780044598890551, - -0.1739876202405789, - -0.17037436831881927, - -0.16694732734099277, - -0.16373236788628917, - -0.16071378620632493, - -0.15787647582519754, - -0.15524317702663412, - -0.15283205361788882, - -0.15062485037450424, - -0.14860342003082447, - -0.14678239870446036, - -0.14514272085311872, - -0.14366475883010155, - -0.1423589784100155, - -0.14120345591041591, - -0.14017633069115704, - -0.13928545473366505, - -0.13853598831099795, - -0.13790664300812094, - -0.13737692731644263, - -0.13695146262898475, - -0.13661184140830718, - -0.13634041682044895, - -0.1361419531606476, - -0.1360193799771015, - -0.13595670857182576, - -0.13593919832130194, - -0.1359705703496988, - -0.13603802593613856, - -0.1361300156574448, - -0.13625133445474716, - -0.13639168997343562, - -0.1365420679956538, - -0.13670863527002503, - -0.13689629817883683, - -0.13709712367882537, - -0.13730301475959772, - -0.13751600816158532, - -0.13772488819168902, - -0.13791836584422448, - -0.1380964104650401, - -0.1382589478418035, - -0.13839668122089555, - -0.13850153406305668, - -0.13857580189800447, - -0.13861304738505073, - -0.13860789472917548, - -0.13856458609459743, - -0.13847828737294837, - -0.13834482105004414, - -0.13816945930367977, - -0.12078073418298967, - -0.12050249021163813, - -0.12018287363127246, - -0.11982810071403745, - -0.11943722837504656, - -0.11900984298472271, - -0.11855303729120022, - -0.11807366921544911, - -0.11757185285351948, - -0.11704838994392411, - -0.11651123895606234, - -0.11596172545434856, - -0.11540093817277972, - -0.11483590079000226, - -0.11426682935065009, - -0.11369364745063917, - -0.11312227827110534, - -0.11255824763778582, - -0.11200151663885802, - -0.11145200657543115, - -0.11091463356557855, - -0.11038897733939362, - -0.10987464066881085, - -0.10937574447476257, - -0.10889563880697878, - -0.10843375434544711, - -0.10798966074861714, - -0.10756655524204756, - -0.10716465269381477, - -0.10678448306676208, - -0.10642940907342985, - -0.10610017040923862, - -0.10579746246494055, - -0.10552393738237972, - -0.10528163148298994, - -0.1050715256792796, - -0.10489455339306757, - -0.10475206409401991, - -0.10464476984202657, - -0.10457282779603841, - -0.10453550388867437, - -0.10453121324833077, - -0.104560355850239, - -0.10462287040606608, - -0.10471643998957372, - -0.10484209409027209, - -0.10499983838716385, - -0.10518579341149961, - -0.1054019273893308, - -0.10564835010228532, - -0.10591850896629904, - -0.1062075727956594, - -0.10651577371807075, - -0.10684169349982915, - -0.10717982376518824, - -0.10753452429863798, - -0.10790595420306219, - -0.108286503145736, - -0.10867364813858704, - -0.10907023505802126, - -0.10947756249918306, - -0.10989230428685835, - -0.11032325981341369, - -0.1107761601750762, - -0.11124462301085443, - -0.11174003511389287, - -0.11227165381475772, - -0.11283143370403347, - -0.11341362647687672, - -0.11402910628977758, - -0.1146870564716286, - -0.11537902485879127, - -0.11611220140815413, - -0.116891733451981, - -0.11770572090025845, - -0.11854406782468228, - -0.11941260891372599, - -0.12031619110386635, - -0.12124396447655432, - -0.12220019015432111, - -0.12318902812351099, - -0.12419976640186685, - -0.12523576898990804, - -0.12630099206007886, - -0.12738626300819167, - -0.1284827180858411, - -0.12959446185547685, - -0.13072561478384143, - -0.13186684515444455, - -0.13302124116115588, - -0.134191732867022, - -0.13536842427609377, - -0.13654197892474482, - -0.13771642777657617, - -0.13889582458993124, - -0.14007154529481947, - -0.1412474665797103, - -0.1424270320284676, - -0.14360098291606807, - -0.14477308666753202, - -0.12879492978974777, - -0.1299338619456325, - -0.13105506288851057, - -0.1321620681471502, - -0.13325802388075908, - -0.13433595921502708, - -0.1354054368433507, - -0.13647564122039194, - -0.1375418548536735, - -0.13859935082924604, - -0.13965605231005515, - -0.14071915566754614, - -0.141782468520457, - -0.14285295575274562, - -0.14393657844196758, - -0.1450253109605009, - -0.14612437867333444, - -0.14723857870881493, - -0.14835936770344943, - -0.14947837245737064, - -0.15059875601421316, - -0.15172349951752118, - -0.15284397665892083, - -0.15396242760847267, - -0.15507999930666688, - -0.15618719301009107, - -0.15727611051028462, - -0.15834774795657125, - -0.15940266283461496, - -0.1604326214950985, - -0.16143803783242341, - -0.16241989562249898, - -0.16337180392759146, - -0.16429422449415765, - -0.1651871905506476, - -0.16604443266709146, - -0.16686142621888672, - -0.1676392978842276, - -0.16837898444304583, - -0.16907748773994485, - -0.16973433540750948, - -0.17034957704235698, - -0.17092260994945163, - -0.17145529900273968, - -0.17194966863835065, - -0.17240764534153186, - -0.17283318157565725, - -0.17323022194962412, - -0.17360127217420426, - -0.17394918526586, - -0.17427589143502942, - -0.17458262629477414, - -0.17487116111888704, - -0.17514301797883128, - -0.17539598853303753, - -0.17562859845511594, - -0.17584318196455448, - -0.1760359552605938, - -0.17620289625020444, - -0.17634581217995285, - -0.17646675322916347, - -0.1765612831862369, - -0.17662684218918906, - -0.17666823483438568, - -0.17668095892085006, - -0.17666105073457522, - -0.17661327675193073, - -0.17652986071934063, - -0.17640352985770805, - -0.17623904468347493, - -0.17604104083743544, - -0.1758019878557971, - -0.17551480998340988, - -0.17518542141821783, - -0.17480657003994488, - -0.17437195837309197, - -0.17389004626226778, - -0.17336909423529437, - -0.17280323825794264, - -0.17218758176912236, - -0.1715316717852864, - -0.1708300951418818, - -0.17007812945102604, - -0.16928610906580271, - -0.16844912260480369, - -0.16756319377403003, - -0.16664015221704273, - -0.16569178343751806, - -0.16471613319767403, - -0.16371195203888228, - -0.162692292067261, - -0.16165720567474692, - -0.160607266476603, - -0.15955604156788758, - -0.15851624000557932, - -0.15748946275299863, - -0.15647771701117766, - -0.15549337313605452, - -0.1545388416432721, - -0.15361644385809634, - -0.13570260060018297, - -0.13484767054081515, - -0.13404157084965432, - -0.1332925065047321, - -0.13260638100805888, - -0.1319830279272152, - -0.1314220384193459, - -0.1309274291739665, - -0.13050143111173984, - -0.13014565554558521, - -0.1298626523639378, - -0.12965459632122736, - -0.1295240840209422, - -0.12947231637068005, - -0.12949887791421796, - -0.12960772809870383, - -0.1298007175660351, - -0.13007185321942638, - -0.1304229616018303, - -0.13085387801988785, - -0.13135264235076885, - -0.13190744459289422, - -0.1325193748681387, - -0.13318822621806575, - -0.13390091845845276, - -0.13466205347623617, - -0.13547438273969623, - -0.1363220471328972, - -0.13719219526752421, - -0.13809425834706085, - -0.13903682107385804, - -0.14000806307008606, - -0.1410232884494019, - -0.14209600953729956, - -0.14321237100581938, - -0.14439296750524755, - -0.14565671991271056, - -0.14698874847257626, - -0.1483760477421009, - -0.14983651697528227, - -0.1513863318843683, - -0.15301028871376726, - -0.15472585609766037, - -0.15654909614566362, - -0.15846280691263825, - -0.16045038337819628, - -0.1625256362743197, - -0.1647007038910802, - -0.16695633498216564, - -0.16930585556031003, - -0.17176060614773095, - -0.17429881210687567, - -0.17693236737236095, - -0.1796711763712654, - -0.18249116307032873, - -0.1853700907788673, - -0.1883183570958473, - -0.19134490643874222, - -0.19442611795672937, - -0.1975717940818065, - -0.2007892617989911, - -0.20405040299493807, - -0.20732822696665915, - -0.21062737608841003, - -0.2139487734312704, - -0.21726104520778658, - -0.22056793406988842, - -0.22387182755003215, - -0.22714136777211583, - -0.23038090375911216, - -0.2335930130454104, - -0.23674577710263145, - -0.2398093147961117, - -0.24278665937007715, - -0.24568134923373938, - -0.24846662026261304, - -0.251150357712332, - -0.253742969942854, - -0.2562247022294629, - -0.2585754488836658, - -0.26080189395757813, - -0.2629108970100307, - -0.26488412803754013, - -0.26673156151052074, - -0.2684635601377544, - -0.27006608121023934, - -0.2715525227856309 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" }, { @@ -73865,1988 +3737,15 @@ }, "name": "pz true", "type": "scatter", - "x": [ - 0.01, - 0.02, - 0.03, - 0.04, - 0.05, - 0.06, - 0.07, - 0.08, - 0.09, - 0.1, - 0.11, - 0.12, - 0.13, - 0.14, - 0.15, - 0.16, - 0.17, - 0.18, - 0.19, - 0.2, - 0.21, - 0.22, - 0.23, - 0.24, - 0.25, - 0.26, - 0.27, - 0.28, - 0.29, - 0.3, - 0.31, - 0.32, - 0.33, - 0.34, - 0.35, - 0.36, - 0.37, - 0.38, - 0.39, - 0.4, - 0.41, - 0.42, - 0.43, - 0.44, - 0.45, - 0.46, - 0.47, - 0.48, - 0.49, - 0.5, - 0.51, - 0.52, - 0.53, - 0.54, - 0.55, - 0.56, - 0.57, - 0.58, - 0.59, - 0.6, - 0.61, - 0.62, - 0.63, - 0.64, - 0.65, - 0.66, - 0.67, - 0.68, - 0.69, - 0.7, - 0.71, - 0.72, - 0.73, - 0.74, - 0.75, - 0.76, - 0.77, - 0.78, - 0.79, - 0.8, - 0.81, - 0.82, - 0.83, - 0.84, - 0.85, - 0.86, - 0.87, - 0.88, - 0.89, - 0.9, - 0.91, - 0.92, - 0.93, - 0.94, - 0.95, - 0.96, - 0.97, - 0.98, - 0.99, - 1, - 1.01, - 1.02, - 1.03, - 1.04, - 1.05, - 1.06, - 1.07, - 1.08, - 1.09, - 1.1, - 1.11, - 1.12, - 1.13, - 1.14, - 1.15, - 1.16, - 1.17, - 1.18, - 1.19, - 1.2, - 1.21, - 1.22, - 1.23, - 1.24, - 1.25, - 1.26, - 1.27, - 1.28, - 1.29, - 1.3, - 1.31, - 1.32, - 1.33, - 1.34, - 1.35, - 1.36, - 1.37, - 1.38, - 1.39, - 1.4, - 1.41, - 1.42, - 1.43, - 1.44, - 1.45, - 1.46, - 1.47, - 1.48, - 1.49, - 1.5, - 1.51, - 1.52, - 1.53, - 1.54, - 1.55, - 1.56, - 1.57, - 1.58, - 1.59, - 1.6, - 1.61, - 1.62, - 1.63, - 1.64, - 1.65, - 1.66, - 1.67, - 1.68, - 1.69, - 1.7, - 1.71, - 1.72, - 1.73, - 1.74, - 1.75, - 1.76, - 1.77, - 1.78, - 1.79, - 1.8, - 1.81, - 1.82, - 1.83, - 1.84, - 1.85, - 1.86, - 1.87, - 1.88, - 1.89, - 1.9, - 1.91, - 1.92, - 1.93, - 1.94, - 1.95, - 1.96, - 1.97, - 1.98, - 1.99, - 2, - 2.01, - 2.02, - 2.03, - 2.04, - 2.05, - 2.06, - 2.07, - 2.08, - 2.09, - 2.1, - 2.11, - 2.12, - 2.13, - 2.14, - 2.15, - 2.16, - 2.17, - 2.18, - 2.19, - 2.2, - 2.21, - 2.23, - 2.24, - 2.25, - 2.26, - 2.27, - 2.28, - 2.29, - 2.3, - 2.31, - 2.32, - 2.33, - 2.34, - 2.35, - 2.36, - 2.37, - 2.38, - 2.39, - 2.4, - 2.41, - 2.42, - 2.43, - 2.44, - 2.45, - 2.46, - 2.47, - 2.48, - 2.49, - 2.5, - 2.51, - 2.52, - 2.53, - 2.54, - 2.55, - 2.56, - 2.57, - 2.58, - 2.59, - 2.6, - 2.61, - 2.62, - 2.63, - 2.64, - 2.65, - 2.66, - 2.67, - 2.68, - 2.69, - 2.7, - 2.71, - 2.72, - 2.73, - 2.74, - 2.75, - 2.76, - 2.77, - 2.78, - 2.79, - 2.8, - 2.81, - 2.82, - 2.83, - 2.84, - 2.85, - 2.86, - 2.87, - 2.88, - 2.89, - 2.9, - 2.91, - 2.92, - 2.93, - 2.94, - 2.95, - 2.96, - 2.97, - 2.98, - 2.99, - 3, - 3.01, - 3.02, - 3.03, - 3.04, - 3.05, - 3.06, - 3.07, - 3.08, - 3.09, - 3.1, - 3.11, - 3.12, - 3.13, - 3.14, - 3.15, - 3.16, - 3.17, - 3.18, - 3.19, - 3.2, - 3.21, - 3.22, - 3.23, - 3.24, - 3.25, - 3.26, - 3.27, - 3.28, - 3.29, - 3.3, - 3.31, - 3.32, - 3.33, - 3.34, - 3.35, - 3.36, - 3.37, - 3.38, - 3.39, - 3.4, - 3.41, - 3.42, - 3.43, - 3.44, - 3.45, - 3.46, - 3.47, - 3.48, - 3.49, - 3.5, - 3.51, - 3.52, - 3.53, - 3.54, - 3.55, - 3.56, - 3.57, - 3.58, - 3.59, - 3.6, - 3.61, - 3.62, - 3.63, - 3.64, - 3.65, - 3.66, - 3.67, - 3.68, - 3.69, - 3.7, - 3.71, - 3.72, - 3.73, - 3.74, - 3.75, - 3.76, - 3.77, - 3.78, - 3.79, - 3.8, - 3.81, - 3.82, - 3.83, - 3.84, - 3.85, - 3.86, - 3.87, - 3.88, - 3.89, - 3.9, - 3.91, - 3.92, - 3.95, - 3.96, - 3.97, - 3.98, - 3.99, - 4, - 4.01, - 4.02, - 4.03, - 4.04, - 4.05, - 4.06, - 4.07, - 4.08, - 4.09, - 4.1, - 4.11, - 4.12, - 4.13, - 4.14, - 4.15, - 4.16, - 4.17, - 4.18, - 4.19, - 4.2, - 4.21, - 4.22, - 4.23, - 4.24, - 4.25, - 4.26, - 4.27, - 4.28, - 4.29, - 4.3, - 4.31, - 4.32, - 4.33, - 4.34, - 4.35, - 4.36, - 4.37, - 4.38, - 4.39, - 4.4, - 4.41, - 4.42, - 4.43, - 4.44, - 4.45, - 4.46, - 4.47, - 4.48, - 4.49, - 4.5, - 4.51, - 4.52, - 4.53, - 4.54, - 4.55, - 4.56, - 4.57, - 4.58, - 4.59, - 4.6, - 4.61, - 4.62, - 4.63, - 4.64, - 4.65, - 4.66, - 4.67, - 4.68, - 4.69, - 4.7, - 4.71, - 4.72, - 4.73, - 4.74, - 4.75, - 4.76, - 4.77, - 4.78, - 4.79, - 4.8, - 4.81, - 4.82, - 4.83, - 4.84, - 4.85, - 4.86, - 4.87, - 4.88, - 4.89, - 4.9, - 4.91, - 4.92, - 4.93, - 4.94, - 4.95, - 4.96, - 4.97, - 4.98, - 4.99, - 5, - 5.01, - 5.02, - 5.03, - 5.04, - 5.05, - 5.06, - 5.07, - 5.08, - 5.09, - 5.1, - 5.11, - 5.12, - 5.13, - 5.14, - 5.15, - 5.18, - 5.2, - 5.23, - 5.24, - 5.25, - 5.26, - 5.27, - 5.28, - 5.29, - 5.3, - 5.31, - 5.32, - 5.33, - 5.34, - 5.35, - 5.36, - 5.37, - 5.38, - 5.39, - 5.4, - 5.41, - 5.42, - 5.43, - 5.44, - 5.45, - 5.46, - 5.47, - 5.48, - 5.49, - 5.5, - 5.51, - 5.52, - 5.53, - 5.54, - 5.55, - 5.56, - 5.57, - 5.58, - 5.59, - 5.6, - 5.61, - 5.62, - 5.63, - 5.64, - 5.65, - 5.66, - 5.67, - 5.68, - 5.69, - 5.7, - 5.71, - 5.72, - 5.73, - 5.74, - 5.75, - 5.76, - 5.77, - 5.78, - 5.79, - 5.8, - 5.81, - 5.82, - 5.83, - 5.84, - 5.85, - 5.86, - 5.87, - 5.88, - 5.89, - 5.9, - 5.91, - 5.92, - 5.93, - 5.94, - 5.95, - 5.96, - 5.97, - 5.98, - 5.99, - 6, - 6.01, - 6.02, - 6.03, - 6.04, - 6.05, - 6.06, - 6.07, - 6.08, - 6.09, - 6.1, - 6.11, - 6.12, - 6.13, - 6.14, - 6.15, - 6.16, - 6.17, - 6.18, - 6.19, - 6.2, - 6.21, - 6.22, - 6.23, - 6.24, - 6.25, - 6.26, - 6.27, - 6.28, - 6.29, - 6.3, - 6.31, - 6.32, - 6.33, - 6.34, - 6.35, - 6.36, - 6.37, - 6.38, - 6.39, - 6.4, - 6.41, - 6.42, - 6.43, - 6.44, - 6.45, - 6.46, - 6.47, - 6.48, - 6.49, - 6.5, - 6.51, - 6.52, - 6.53, - 6.54, - 6.55, - 6.56, - 6.59, - 6.6, - 6.61, - 6.62, - 6.63, - 6.64, - 6.65, - 6.66, - 6.67, - 6.68, - 6.69, - 6.7, - 6.71, - 6.72, - 6.73, - 6.74, - 6.75, - 6.76, - 6.77, - 6.78, - 6.79, - 6.8, - 6.81, - 6.82, - 6.83, - 6.84, - 6.85, - 6.86, - 6.87, - 6.88, - 6.89, - 6.9, - 6.91, - 6.92, - 6.93, - 6.94, - 6.95, - 6.96, - 6.97, - 6.98, - 6.99, - 7, - 7.01, - 7.02, - 7.03, - 7.04, - 7.05, - 7.06, - 7.07, - 7.08, - 7.09, - 7.1, - 7.11, - 7.12, - 7.13, - 7.14, - 7.15, - 7.16, - 7.17, - 7.18, - 7.19, - 7.2, - 7.21, - 7.22, - 7.23, - 7.24, - 7.25, - 7.26, - 7.27, - 7.28, - 7.29, - 7.3, - 7.31, - 7.32, - 7.33, - 7.34, - 7.35, - 7.36, - 7.37, - 7.38, - 7.39, - 7.4, - 7.41, - 7.42, - 7.43, - 7.44, - 7.45, - 7.46, - 7.47, - 7.48, - 7.49, - 7.5, - 7.51, - 7.52, - 7.53, - 7.54, - 7.55, - 7.56, - 7.57, - 7.58, - 7.59, - 7.6, - 7.61, - 7.62, - 7.63, - 7.64, - 7.65, - 7.66, - 7.67, - 7.68, - 7.69, - 7.7, - 7.71, - 7.72, - 7.73, - 7.74, - 7.75, - 7.76, - 7.77, - 7.78, - 7.79, - 7.8, - 7.81, - 7.82, - 7.83, - 7.84, - 7.85, - 7.86, - 7.87, - 7.88, - 7.89, - 7.9, - 7.91, - 7.92, - 7.93, - 7.94, - 7.95, - 7.96, - 7.97, - 7.98, - 7.99, - 8, - 8.01, - 8.02, - 8.03, - 8.04, - 8.05, - 8.06, - 8.07, - 8.08, - 8.09, - 8.1, - 8.11, - 8.12, - 8.13, - 8.14, - 8.15, - 8.16, - 8.17, - 8.18, - 8.19, - 8.2, - 8.21, - 8.22, - 8.23, - 8.24, - 8.25, - 8.26, - 8.27, - 8.28, - 8.29, - 8.3, - 8.31, - 8.32, - 8.33, - 8.34, - 8.35, - 8.36, - 8.37, - 8.38, - 8.39, - 8.4, - 8.41, - 8.42, - 8.43, - 8.44, - 8.45, - 8.46, - 8.47, - 8.48, - 8.49, - 8.5, - 8.51, - 8.52, - 8.53, - 8.54, - 8.55, - 8.56, - 8.57, - 8.58, - 8.59, - 8.6, - 8.61, - 8.62, - 8.63, - 8.64, - 8.65, - 8.66, - 8.67, - 8.68, - 8.69, - 8.7, - 8.71, - 8.72, - 8.73, - 8.74, - 8.75, - 8.76, - 8.77, - 8.78, - 8.79, - 8.8, - 8.81, - 8.82, - 8.83, - 8.84, - 8.85, - 8.86, - 8.87, - 8.88, - 8.89, - 8.9, - 8.91, - 8.92, - 8.93, - 8.94, - 8.95, - 8.96, - 8.97, - 8.98, - 8.99, - 9, - 9.01, - 9.02, - 9.03, - 9.04, - 9.05, - 9.06, - 9.07, - 9.08, - 9.09, - 9.1, - 9.11, - 9.12, - 9.13, - 9.14, - 9.15, - 9.16, - 9.17, - 9.18, - 9.19, - 9.2, - 9.21, - 9.22, - 9.23, - 9.24, - 9.25, - 9.26, - 9.27, - 9.28, - 9.29, - 9.3, - 9.31, - 9.32, - 9.33, - 9.34, - 9.35, - 9.36, - 9.37, - 9.38, - 9.39, - 9.4, - 9.41, - 9.42, - 9.43, - 9.44, - 9.45, - 9.46, - 9.47, - 9.48, - 9.49, - 9.5, - 9.51, - 9.52, - 9.53, - 9.54, - 9.55, - 9.56, - 9.57, - 9.58, - 9.59, - 9.6, - 9.61, - 9.62, - 9.63, - 9.64, - 9.65, - 9.66, - 9.67, - 9.68, - 9.69, - 9.7, - 9.71, - 9.72, - 9.73, - 9.74, - 9.75, - 9.76, - 9.77, - 9.78, - 9.79, - 9.8, - 9.81, - 9.82, - 9.83, - 9.84, - 9.85, - 9.86, - 9.87, - 9.88, - 9.89, - 9.9, - 9.91, - 9.92, - 9.93, - 9.94, - 9.95, - 9.96, - 9.97, - 9.98 - ], + "x": { + "bdata": "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", + "dtype": "f8" + }, "xaxis": "x3", - "y": [ - 0.024663009063467044, - 0.027284733045287494, - 0.029824974531452664, - 0.03233184371989148, - 0.03479923760064361, - 0.03720078045211978, - 0.039553538398757276, - 0.0418822918448931, - 0.04416099378773074, - 0.046378255836461865, - 0.04857384075245119, - 0.0507310667806313, - 0.05282696666801439, - 0.054888497343824165, - 0.056919774028287566, - 0.05889751799721122, - 0.060820318217371466, - 0.06271557164197163, - 0.0645629501582504, - 0.06634582751001145, - 0.06809168464536852, - 0.0697931450059671, - 0.07143077245006642, - 0.07301269799956805, - 0.0745528315066002, - 0.07603311911067023, - 0.0774439363045804, - 0.07880394005281122, - 0.08010090664413584, - 0.0813199472968881, - 0.08246925506305622, - 0.08354701858767227, - 0.08454043282403699, - 0.08544540158923891, - 0.0862674608239401, - 0.0869980249430194, - 0.08763053252480298, - 0.08816659681269623, - 0.08860255726980726, - 0.08893510065027162, - 0.08916396663809151, - 0.0892922266849578, - 0.08932591779060152, - 0.08927139928714316, - 0.08912975456211471, - 0.08891428049986495, - 0.08863967128711546, - 0.08830512097378254, - 0.08791896336298012, - 0.08749485140306379, - 0.08703396466097514, - 0.08652341492954069, - 0.08597247004006624, - 0.08538561848385698, - 0.08473591005540529, - 0.08402295496181496, - 0.08325397420471477, - 0.08241074120865603, - 0.08147301822976437, - 0.08045252521419623, - 0.0793499444799961, - 0.07812806025591212, - 0.07679540359946672, - 0.07536492870646118, - 0.07380255557999138, - 0.07209806310447851, - 0.07026823509879854, - 0.06830531716481578, - 0.0661684213934008, - 0.06387624465116935, - 0.06144433108626747, - 0.05882625317049683, - 0.05602836379100031, - 0.053077709938275104, - 0.04995649773151818, - 0.046639841603255745, - 0.043159071247793224, - 0.03952995998326231, - 0.03570908008483268, - 0.03172111827696692, - 0.027599977296457873, - 0.02331539895694977, - 0.018867543076787795, - 0.01429447726104849, - 0.009604321762391595, - 0.004762998462277684, - -0.0001920434409433396, - -0.0052268340098452085, - -0.010379972029229094, - -0.015631741491906954, - -0.020939837340079794, - -0.026312202491049024, - -0.03176653881889613, - -0.037259272443578066, - -0.04276478638867699, - -0.048325018032000004, - -0.0539076771078361, - -0.059471354248234506, - -0.06504628138626356, - -0.07063052195538139, - -0.07618092157255234, - -0.081687938939759, - -0.08718926927295353, - -0.09264536121818433, - -0.09801978888524125, - -0.10335159684489713, - -0.1086143033450889, - -0.11375795299202761, - -0.11878732487814253, - -0.1237186184062776, - -0.12850396936292888, - -0.13311610410726216, - -0.13759908305190952, - -0.14192125522434493, - -0.14604395604212025, - -0.15000213638989493, - -0.15379862901605593, - -0.15739778237021487, - -0.16079904947220963, - -0.1640471270138185, - -0.1671157361724082, - -0.1699858377847534, - -0.17271044230879126, - -0.17528827521028278, - -0.1776998570842682, - -0.17997173594708138, - -0.18213784370175373, - -0.18418093253643114, - -0.1861004364040751, - -0.18794616253735397, - -0.18970954795348047, - -0.19137655725192565, - -0.1929821227687708, - -0.1945369879058039, - -0.1960254501394265, - -0.19745288595911237, - -0.19885052810563367, - -0.20020330635627545, - -0.20150040066781777, - -0.2027711283413626, - -0.20401130018900557, - -0.20520576644304417, - -0.20636389922674134, - -0.20749879859599388, - -0.2085959607739275, - -0.20964890792516794, - -0.2106756595935767, - -0.21166712825032022, - -0.2126122592582116, - -0.21352067898363408, - -0.2143921154358101, - -0.2152159520269789, - -0.21599042311580618, - -0.21672277011767185, - -0.21740523135252804, - -0.21803197477204603, - -0.21860729461885098, - -0.2191283428147269, - -0.2195912666523249, - -0.21999603268737505, - -0.22034271696887678, - -0.22062969858787873, - -0.22085639739101845, - -0.22102285464131846, - -0.22113183084953225, - -0.2211871072331562, - -0.22118822982897948, - -0.22113832716341467, - -0.22104424241149098, - -0.22090927393521884, - -0.22073133230962957, - -0.22052026592683693, - -0.22028329629632842, - -0.22001589786041015, - -0.21972694897546816, - -0.21942540525902474, - -0.21910608364601913, - -0.21876645066232486, - -0.21841518919962116, - -0.21805278395559669, - -0.21766747134477357, - -0.21726718596677547, - -0.21685587587683866, - -0.21641707486636055, - -0.21594815699692563, - -0.21545433915135384, - -0.21492894699164927, - -0.21435501085565217, - -0.21374004953315862, - -0.21308787391953454, - -0.21237758840447396, - -0.21161050372785595, - -0.21079432944591361, - -0.20991817674764346, - -0.20896993168030933, - -0.2079597004133338, - -0.20689084124059678, - -0.20574455404380657, - -0.2045295471225587, - -0.20325748922280285, - -0.2019167154992573, - -0.20050789552048226, - -0.1990449935587674, - -0.19753127332429654, - -0.19595628208717009, - -0.19433408060871665, - -0.19267674737790846, - -0.19097279373251483, - -0.189230597113683, - -0.1874662232915882, - -0.1856806126615882, - -0.18387228424746602, - -0.18205797828912876, - -0.18024933573547708, - -0.17844087594051283, - -0.1766454498506672, - -0.17487734826389761, - -0.1731340185156058, - -0.17141980926058817, - -0.16974717742691534, - -0.16812226575871936, - -0.16654067803356892, - -0.16352485524735216, - -0.1620949357093283, - -0.16072213424328446, - -0.1594155633485438, - -0.1581789035504551, - -0.15701250263574248, - -0.1559215191519294, - -0.15491051536083517, - -0.15397989089605194, - -0.1531311918865078, - -0.15236633047905107, - -0.151685667507307, - -0.15108809205615972, - -0.15057196016636146, - -0.15013608583685212, - -0.14977909826866945, - -0.1494966975705371, - -0.14928367493096897, - -0.1491394979698723, - -0.14905825613378776, - -0.14903373560871497, - -0.1490637114801161, - -0.14914645069377008, - -0.1492740790168317, - -0.14944124045957316, - -0.14965035618036598, - -0.14989528815145925, - -0.1501696556994612, - -0.15047825151743516, - -0.15082077998084123, - -0.15119195918966738, - -0.15159198753711772, - -0.15202791808889682, - -0.15249284243458877, - -0.15298075856448454, - -0.1535006751399698, - -0.15405059791685344, - -0.15462211493626027, - -0.15521454373854307, - -0.1558288564884258, - -0.1564552587121393, - -0.15708760267655786, - -0.15773090929608535, - -0.15837813566244865, - -0.15902137469291552, - -0.15966378555406457, - -0.1603027275492851, - -0.1609297056514694, - -0.16154405699489405, - -0.1621534144107209, - -0.16275454715945098, - -0.16334552454504173, - -0.16393590828274, - -0.16452359756861676, - -0.16510484975886094, - -0.16568612033949676, - -0.16627341958605774, - -0.16686211663476463, - -0.1674531445463206, - -0.16805807579192686, - -0.16867272526503052, - -0.1692928288548607, - -0.16992844270924262, - -0.170579796563696, - -0.1712420493907418, - -0.17191734781855403, - -0.17261452818275314, - -0.17332878959002468, - -0.17405592687956054, - -0.1748075969582606, - -0.17558277576399076, - -0.17637604496040118, - -0.17719349745079374, - -0.17804211468103784, - -0.17891636972963873, - -0.1798154868516586, - -0.18075222560863177, - -0.18172365004025456, - -0.1827250772539589, - -0.183766177604896, - -0.18484917926210132, - -0.1859677984524409, - -0.18712247574729185, - -0.18832248469593493, - -0.18956217281335871, - -0.19083629614415662, - -0.1921532256092438, - -0.1935097977141961, - -0.19489864176108165, - -0.19632079798070112, - -0.19777867123519782, - -0.19926418776447843, - -0.2007715991992229, - -0.2023040681033602, - -0.20385512113763918, - -0.20541682235390893, - -0.20698771889715345, - -0.20856409961304606, - -0.21013870252493302, - -0.21170590992465685, - -0.21326409698888454, - -0.2148078735544667, - -0.21633070042333297, - -0.21782818252802574, - -0.21929792136134188, - -0.22073582237471046, - -0.2221360060979597, - -0.22349598071799484, - -0.22481601998015793, - -0.22609295221148182, - -0.22731844583638486, - -0.2284949414952535, - -0.22962384272477826, - -0.23069245179026976, - -0.23169808043657358, - -0.23264408987528806, - -0.2335251908611421, - -0.2343277113908418, - -0.23505642417655206, - -0.2357146926679261, - -0.23628495308785857, - -0.23677001777880602, - -0.2371797661583991, - -0.2375052083207554, - -0.23773778183544161, - -0.23789208327953698, - -0.23797406068919616, - -0.2379639261909366, - -0.23787662201764084, - -0.23772782988237665, - -0.23749875474513357, - -0.23719003235139113, - -0.23681528497430007, - -0.2363698095135777, - -0.23583169645519259, - -0.23522029645206008, - -0.2345475211540191, - -0.23377975798495776, - -0.23291955276335197, - -0.23197893185224494, - -0.23093773344479898, - -0.2297739538273422, - -0.22850498883350046, - -0.22713527269769596, - -0.2256262496274178, - -0.22399314683109275, - -0.2222571358208616, - -0.2203895098656338, - -0.21838908393849304, - -0.21628469513380374, - -0.2140800777000537, - -0.2117474520830568, - -0.20931734116814216, - -0.2068140325232098, - -0.2042014348666681, - -0.20149554626747693, - -0.1987278460859014, - -0.1958839668117143, - -0.19294493705855364, - -0.1899414281040611, - -0.18688696563735038, - -0.18374023739706224, - -0.18052458001150218, - -0.17726930152940581, - -0.17394272178202283, - -0.1705436800304272, - -0.16710445118266407, - -0.16362846048754645, - -0.16008257779089877, - -0.15649867314270116, - -0.14558520259317723, - -0.14191221944091797, - -0.1382319992496205, - -0.13452782154523196, - -0.13083495276872503, - -0.12717236752521086, - -0.12350369590899607, - -0.11985445144787424, - -0.11625650719347477, - -0.11268381303785799, - -0.10913681800066832, - -0.1056477364538692, - -0.1022216195889217, - -0.09882726727436979, - -0.09549299874608122, - -0.09224227218766536, - -0.08903905078730505, - -0.0858941667048231, - -0.08283495534610916, - -0.07984782170676565, - -0.07691201784444407, - -0.07405353332603025, - -0.07128293313722629, - -0.06855939415161556, - -0.065898813019656, - -0.063322526550337, - -0.060798763415220634, - -0.05832154087166061, - -0.05591427638789619, - -0.053575215775472446, - -0.05127054331817437, - -0.0490215192134636, - -0.0468447502043742, - -0.044702485891933784, - -0.042601730803576154, - -0.04056434468923053, - -0.03857492206380008, - -0.036612218965418615, - -0.034696845919098954, - -0.032835526534625174, - -0.030989512751213942, - -0.02917149946670255, - -0.027398948092390754, - -0.025640596435934804, - -0.023881676097722442, - -0.02212979623800693, - -0.020371105367019214, - -0.018562594274350995, - -0.016711368936566568, - -0.014821955844964367, - -0.012850593668788962, - -0.010795797617198013, - -0.008671965745647355, - -0.006461906109928399, - -0.004144614931622628, - -0.0017394635191747788, - 0.0007440119914652785, - 0.003333729921634504, - 0.006012986860261303, - 0.00875921768693087, - 0.011585417881244956, - 0.014486432823398008, - 0.017436510545398704, - 0.020424759326631244, - 0.023459038173993047, - 0.026513565078635212, - 0.029564871420748366, - 0.03261734472547203, - 0.035652774559088135, - 0.03864546736502623, - 0.04158741111238686, - 0.04447453991533064, - 0.04728431797770456, - 0.05000065096328927, - 0.05262623969016141, - 0.05514562603376428, - 0.057542686201265514, - 0.059816400770517676, - 0.061960667225232274, - 0.06396308539151609, - 0.06581718920367646, - 0.06752329104425311, - 0.06907559102861197, - 0.07047100230678968, - 0.07171238084822507, - 0.07280132537624807, - 0.07374002178291779, - 0.07452794204667859, - 0.07516546088722781, - 0.07566064811454043, - 0.07602039726374239, - 0.07624243123894295, - 0.07634851704410107, - 0.07635821460823723, - 0.07625722974133382, - 0.07605066493617503, - 0.07576536843848052, - 0.07540352264763413, - 0.074946749913709, - 0.07441073325034603, - 0.07380140816540032, - 0.07305589999540768, - 0.07216988717575745, - 0.07116105838578379, - 0.06998671741572177, - 0.06859452546955769, - 0.06700959517841931, - 0.0652390233041942, - 0.06320960890787361, - 0.06094115856030332, - 0.05846771048141742, - 0.05573908104705965, - 0.05274633281826297, - 0.04953238640952401, - 0.04610044977142639, - 0.0423938923704032, - 0.03845789760820659, - 0.034336337454233014, - 0.029960808548050763, - 0.02535388598468023, - 0.0205784276552452, - 0.0050804282752190365, - -0.00605780983749952, - -0.02380253131013559, - -0.029960126725159145, - -0.03617885005926758, - -0.04244550387610961, - -0.04882018922549056, - -0.055242944634598404, - -0.061660947727649504, - -0.06814299496577385, - -0.07466272453481869, - -0.08116068297953974, - -0.08766088840674104, - -0.09420379361035237, - -0.1007328186224821, - -0.10721899078908989, - -0.11373939224454511, - -0.12025432503315182, - -0.12670933512246588, - -0.13315975260410395, - -0.13961280306629556, - -0.14601686105803724, - -0.15237238420416652, - -0.15875038638766878, - -0.1651033807684842, - -0.1713905437494827, - -0.17768727242158236, - -0.18397581375099376, - -0.1902025882021365, - -0.1963917739380726, - -0.2025817629478847, - -0.20871728448033447, - -0.21476994825774287, - -0.2208099336010421, - -0.22679885360918067, - -0.23268729496481272, - -0.2385244227285976, - -0.24431470832540486, - -0.2500080894338819, - -0.2555980816240988, - -0.26113610824186456, - -0.2665783777247245, - -0.2718877094784184, - -0.2771164664932989, - -0.28224708511728824, - -0.28723747749735695, - -0.29210252965051814, - -0.2968675936957293, - -0.3014938244977032, - -0.30596230485445247, - -0.31031884014944955, - -0.31453939107849915, - -0.318593618558215, - -0.32251140521469573, - -0.3262970472727065, - -0.3299241311757605, - -0.3333907483115902, - -0.33672651346130705, - -0.3399104822434575, - -0.34292643587614247, - -0.345800629124046, - -0.34852816021459837, - -0.35109298980767717, - -0.3535009155684962, - -0.35576148170779137, - -0.3578636991946366, - -0.3598021817699126, - -0.3615859461017522, - -0.36321201783414914, - -0.36467681410173836, - -0.3659818478902715, - -0.3671298950704818, - -0.36812424167635854, - -0.36896480582975394, - -0.36964814040209193, - -0.3701817969212132, - -0.3705709022459041, - -0.37080031888041687, - -0.37087391583097384, - -0.37080344622635575, - -0.37058139095903575, - -0.3702002293768868, - -0.369680098761642, - -0.3690343618768962, - -0.3682524806263328, - -0.3673768994355236, - -0.36643374705696496, - -0.3653959689280439, - -0.36425934905418933, - -0.36304147973293416, - -0.3617332754072438, - -0.36029413028321544, - -0.3587393923515677, - -0.35707931918714775, - -0.35526236179973, - -0.35329171141819504, - -0.3511910239053537, - -0.3489362313301569, - -0.3465005026563382, - -0.3439201178754885, - -0.34121498156222363, - -0.338340373358642, - -0.3353249297817462, - -0.332198824558848, - -0.32891525876582645, - -0.3254645218631841, - -0.3218797575635398, - -0.31815711664342705, - -0.314244403762142, - -0.3101749185544795, - -0.3059768989293823, - -0.30159277646532756, - -0.29703692314638014, - -0.2923503788987579, - -0.2875145885895076, - -0.2825022255617939, - -0.2773580187910034, - -0.272106529962599, - -0.26669640607395045, - -0.26116396617764487, - -0.2555582567154788, - -0.2498507725960252, - -0.24405086851536353, - -0.23821302973778188, - -0.23235483564909526, - -0.2264456841223573, - -0.22053584410309726, - -0.21466820736268127, - -0.2088087074385896, - -0.20298477883595967, - -0.19724451540145801, - -0.19158601231839306, - -0.18599757854587318, - -0.1805256499565909, - -0.17519864554372958, - -0.16998268845839187, - -0.15528231425810918, - -0.15070728451591614, - -0.14632570714519774, - -0.14214317569639395, - -0.13812948924954963, - -0.13431180409873184, - -0.1307109601016484, - -0.12729166633190245, - -0.12406296655580698, - -0.1210472536563809, - -0.11822903323009476, - -0.11558604886451596, - -0.11313639749994839, - -0.11088502379067197, - -0.1087949113902567, - -0.1068733804852538, - -0.10513052680120853, - -0.10353522269736717, - -0.10207513267521233, - -0.10075900812946206, - -0.09957714727745859, - -0.09849778865394575, - -0.09752663641329579, - -0.0966668169426545, - -0.09588850236450076, - -0.09518851171268358, - -0.09457231051134936, - -0.09402489564664009, - -0.09352882202164398, - -0.09308997783222063, - -0.09270733718771798, - -0.0923591970502092, - -0.09204845912712384, - -0.09178012693432493, - -0.0915397479725487, - -0.09132322478579262, - -0.09113697375972207, - -0.09097837538841363, - -0.09083398024705906, - -0.090707376124556, - -0.09059795058741064, - -0.09048817582991335, - -0.09037359049731863, - -0.09025459028458488, - -0.09012178316793353, - -0.08996521953368888, - -0.08978749727997515, - -0.08958813041986369, - -0.08935609999284955, - -0.08909376348325736, - -0.08880499370887564, - -0.0884823674736603, - -0.08812429114272444, - -0.08773568996494131, - -0.08731688468353019, - -0.08686244896563958, - -0.08637789401201101, - -0.08586814497337965, - -0.08532913068260545, - -0.08476457404271287, - -0.08418092050669115, - -0.08357858833230648, - -0.08295720554437011, - -0.08232423401911626, - -0.08168515186448255, - -0.08103813901154593, - -0.0803886401034488, - -0.0797424743761616, - -0.07909796734972468, - -0.07845629380276131, - -0.07782230015455988, - -0.07719780462935136, - -0.07658074681396547, - -0.07597517357202034, - -0.07538431040256864, - -0.07480546509117189, - -0.07424037297365446, - -0.07369176193106297, - -0.07315887274189659, - -0.07264050433700567, - -0.07213934582758018, - -0.07165699598054869, - -0.07119240000701785, - -0.07074794656558782, - -0.07032580132646474, - -0.06992604111961, - -0.06954983301337828, - -0.06919886506597404, - -0.06887420986164765, - -0.0685765713537348, - -0.0683069140747674, - -0.06806578766974515, - -0.06785385054303526, - -0.067670680998923, - -0.0675145781823166, - -0.0673857070898804, - -0.06728474606758378, - -0.06720911496560038, - -0.067157791755224, - -0.06713318664212617, - -0.06713206229031503, - -0.06715077857450857, - -0.0671922138626962, - -0.06725393025353074, - -0.0673308942848195, - -0.06742298753343264, - -0.0675311128271392, - -0.067648727979585, - -0.0677738961495491, - -0.0679127893016813, - -0.06805972468116075, - -0.06821159954429808, - -0.06837398916941327, - -0.06854695526916976, - -0.06872560123534953, - -0.06891210435170124, - -0.06911884094756458, - -0.06934069927771716, - -0.06957351992397146, - -0.06983201399666991, - -0.0701190712294483, - -0.07042819559172216, - -0.070763995621967, - -0.0711422236139872, - -0.07155550330288224, - -0.07199703380839853, - -0.07248049997016925, - -0.07300051808966078, - -0.07354636426221199, - -0.07412263729378316, - -0.0747357732038159, - -0.07537450614207536, - -0.07603291033630201, - -0.076722290164121, - -0.07743472029907852, - -0.07815979510723794, - -0.07890496304643438, - -0.07967012537165874, - -0.08044616690175764, - -0.08123157661823144, - -0.08203503848917366, - -0.082847922756852, - -0.08366263811364366, - -0.08448785512471785, - -0.08531860763741632, - -0.08614522505957191, - -0.08697066799800698, - -0.08780087458362276, - -0.08862788565387186, - -0.08944768118296624, - -0.0902708358528443, - -0.09109109261257073, - -0.09190024342192442, - -0.09270596742742451, - -0.09350814003507973, - -0.09429777987562749, - -0.09507359377861421, - -0.09584420193551771, - -0.09660192736897567, - -0.09734440947315977, - -0.09808774918532062, - -0.09883305098564772, - -0.09957589529775955, - -0.10032355805874436, - -0.10108474265536457, - -0.10185310991888306, - -0.10262668959023119, - -0.10341861896555225, - -0.10422314168211134, - -0.1050325670130365, - -0.10585549951955842, - -0.1066923912167793, - -0.10753446476778439, - -0.10837951551114283, - -0.10923497344569717, - -0.11009238920818552, - -0.1109444595161446, - -0.11179764691862576, - -0.11264616598215363, - -0.11348137866527679, - -0.11430397438242802, - -0.11511568395263662, - -0.11590798315254337, - -0.11667522215297196, - -0.11742292236589529, - -0.1181456624263714, - -0.11883746991876588, - -0.11950117445641724, - -0.12013516940767455, - -0.12073332619544196, - -0.12129509889714785, - -0.12182433379044992, - -0.12231746654760901, - -0.12277182170322683, - -0.12318957297736588, - -0.12356975244893516, - -0.12391249561187037, - -0.12422127989354856, - -0.12449775452771901, - -0.12474304134510121, - -0.12496053829601628, - -0.1251540160119417, - -0.12532506897695792, - -0.12547549504538844, - -0.12560690440605343, - -0.1257201667129199, - -0.12581570971688377, - -0.12589299079728122, - -0.1259502505223613, - -0.12598886709948814, - -0.12600892299468155, - -0.12600645668402935, - -0.12598074338511622, - -0.12593274288447145, - -0.12585923342389624, - -0.1257580432440063, - -0.12563314773125545, - -0.1254858729493575, - -0.12530958129572395, - -0.12510718508108137, - -0.12488083046727921, - -0.12462105916604481, - -0.1243243481537312, - -0.1239937336230111, - -0.12362626986697461, - -0.12321071709025365, - -0.12275036195495015, - -0.12224833041925848, - -0.12169202352093716, - -0.12108277262023054, - -0.1204274273257244, - -0.11972076237761962, - -0.11895603991972308, - -0.11814133401448317, - -0.11728039777989434, - -0.11636098844049388, - -0.1153893624188344, - -0.1143739762357026, - -0.11330628976156815, - -0.11218650888072118, - -0.11102529628280021, - -0.10982591432314347, - -0.10858118740230135, - -0.10730254680742815, - -0.10600072591523739, - -0.10466966592684945, - -0.10331724061388788, - -0.10195625359401204, - -0.10058900711147327, - -0.09921618744174121, - -0.09785083105862578, - -0.09650210492907017, - -0.09516762984725094, - -0.09385775795140151, - -0.0925837042019641, - -0.09134626940592876, - -0.09014952791059333, - -0.08900156628868955, - -0.08790511280835317, - -0.08685829828745228, - -0.08586576893006885, - -0.08493254576163466, - -0.08405962967617825, - -0.08325046866397962, - -0.08250897473085064, - -0.08183891502372126, - -0.08124186591719419, - -0.0807190128505215, - -0.08027182957891485, - -0.07990587027289939, - -0.07961811934881406, - -0.07940276546850113, - -0.07926316729570453, - -0.07919559012074263, - -0.07918888467855137, - -0.07923886967353448, - -0.07935027364895794, - -0.07951160607509718, - -0.07971294996082504, - -0.07996462213831218, - -0.08025818916120886, - -0.08057971462044655, - -0.08093740591513178, - -0.08134091183122119, - -0.08177819898767293, - -0.08224611034180128, - -0.08277184002848179, - -0.08334579796138118, - -0.08395653796353578, - -0.08463157064613218, - -0.08537745785408365, - -0.08618077862355525, - -0.0870467565930292, - -0.08800226755843726, - -0.08903294934681265, - -0.09012825366198256, - -0.091319452968767, - -0.0926026351029623, - -0.09396125517968194, - -0.09540738883799034, - -0.096956381839536, - -0.09858878018509105, - -0.10029638381495161, - -0.1021079099006548, - -0.10400822625364343, - -0.10597792164580357, - -0.10803749899841107, - -0.1101870850780061, - -0.11240461812771295, - -0.11468854953720209, - -0.1170623675034226, - -0.11950497052142398, - -0.12199859958929549, - -0.12456951782565094, - -0.12720488359020407, - -0.12987773414194886, - -0.13259343586227917, - -0.1353586131778637, - -0.13814155731117572, - -0.14092386058907191, - -0.1437274371301792, - -0.14652772792283647, - -0.14929609190769172, - -0.15204714761743085, - -0.1547741263601779, - -0.15744714358106146, - -0.1600563578994462, - -0.16261905328036114, - -0.16510899628408576, - -0.16750559212838, - -0.16983247237318005, - -0.17208333525546998, - -0.1742374078491739, - -0.17629931221860412, - -0.1782774052411459, - -0.1801505969934497, - -0.18190867442103406, - -0.18357393674012412, - -0.18513398576652748, - -0.18657512608455173 - ], + "y": { + "bdata": "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", + "dtype": "f8" + }, "yaxis": "y3" } ], @@ -76073,57 +3972,6 @@ "type": "heatmap" } ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], "histogram": [ { "marker": { @@ -76324,6 +4172,17 @@ "type": "scattergl" } ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], "scattermapbox": [ { "marker": { @@ -76818,4 +4677,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/python/gtsam/examples/NavStateImuExample.ipynb b/python/gtsam/examples/NavStateImuExample.ipynb index c5618e22f5..9c794dff0d 100644 --- a/python/gtsam/examples/NavStateImuExample.ipynb +++ b/python/gtsam/examples/NavStateImuExample.ipynb @@ -24,7 +24,13 @@ ] }, "source": [ - "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\nAtlanta, Georgia 30332-0415\nAll Rights Reserved\n\nAuthors: Frank Dellaert, et al. (see THANKS for the full author list)\n\nSee LICENSE for the license information" + "GTSAM Copyright 2010-2022, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" ] }, { @@ -1770,7 +1776,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1788,7 +1794,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1804,7 +1810,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "AAAAAAAAAAAAAAAAAADwPwAAAAAAAABA////////B0AAAAAAAAAQQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAIkABAAAAAAAkQAAAAAAAACZAAQAAAAAAKEAAAAAAAAAqQAAAAAAAACxA////////LUABAAAAAAAwQAEAAAAAADFAAQAAAAAAMkAAAAAAAAAzQAEAAAAAADRAAAAAAAAANUAAAAAAAAA2QP///////zZAAAAAAAAAOED///////84QP///////zlA////////OkD///////87QP///////zxA////////PUD8//////8+QPv//////z9A/v////9/QED+//////9AQP//////f0FA////////QUD//////39CQP///////0JAAAAAAACAQ0D///////9DQP7/////f0RA/v//////RED//////39FQP///////0VA//////9/RkD+//////9GQP//////f0dA////////R0D+/////39IQP7//////0hA/v////9/SUD///////9JQP//////f0pA/v//////SkD+/////39LQP///////0tA/v////9/TED///////9MQP3/////f01A////////TUAAAAAAAIBOQAAAAAAAAE9A/v////9/T0D+//////9PQP//////P1BA//////9/UED//////79QQAAAAAAAAFFAAAAAAABAUUAAAAAAAIBRQAAAAAAAwFFA////////UUD//////z9SQP//////f1JA//////+/UkD///////9SQAAAAAAAQFNAAAAAAACAU0AAAAAAAMBTQP///////1NA//////8/VED//////39UQP//////v1RA////////VED//////z9VQAAAAAAAgFVAAAAAAADAVUAAAAAAAABWQP//////P1ZA//////9/VkD//////79WQP///////1ZA//////8/V0D//////39XQAAAAAAAwFdA////////V0D//////z9YQP//////f1hA//////+/WED///////9YQP//////P1lA/v////9/WUD//////79ZQP///////1lA//////8/WkD//////39aQP//////v1pA////////WkD//////z9bQP//////f1tA/v////+/W0D///////9bQP//////P1xA//////9/XED+/////79cQP///////1xA/v////8/XUD//////39dQP7/////v11A/v//////XUD//////z9eQAAAAAAAgF5A//////+/XkD+//////9eQP//////P19A/v////9/X0D//////79fQP7//////19A//////8fYED//////z9gQP//////X2BA//////9/YED//////59gQP//////v2BA///////fYEAAAAAAAABhQP//////H2FA//////8/YUD//////19hQP//////f2FA//////+fYUD//////79hQP//////32FA////////YUAAAAAAACBiQP//////P2JA//////9fYkD+/////39iQP//////n2JA/v////+/YkD+/////99iQP///////2JA//////8fY0D//////z9jQP7/////X2NA//////9/Y0D+/////59jQP//////v2NA/v/////fY0D///////9jQP//////H2RA//////8/ZED//////19kQP7/////f2RA//////+fZED+/////79kQP//////32RA/v//////ZED//////x9lQP//////P2VA//////9fZUD//////39lQP7/////n2VA//////+/ZUD+/////99lQP///////2VA/v////8fZkD+/////z9mQP//////X2ZA/v////9/ZkBQcBmuh2RmQE9wGa6HhGZAUHAZroekZkBQcBmuh8RmQFBwGa6H5GZAUHAZrocEZ0BQcBmuhyRnQFBwGa6HRGdAUHAZrodkZ0BQcBmuh4RnQE9wGa6HpGdAUHAZrofEZ0BQcBmuh+RnQFBwGa6HBGhAUHAZrockaEBQcBmuh0RoQFBwGa6HZGhAUHAZroeEaEBQcBmuh6RoQFBwGa6HxGhAUHAZrofkaEBQcBmuhwRpQFBwGa6HJGlAUHAZrodEaUBQcBmuh2RpQFBwGa6HhGlAUHAZroekaUBQcBmuh8RpQFBwGa6H5GlAUHAZrocEakBQcBmuhyRqQFBwGa6HRGpAUXAZrodkakBQcBmuh4RqQFFwGa6HpGpAUHAZrofEakBRcBmuh+RqQFBwGa6HBGtAUHAZrocka0BQcBmuh0RrQFBwGa6HZGtAUXAZroeEa0BQcBmuh6RrQFBwGa6HxGtAUHAZrofka0BQcBmuhwRsQFBwGa6HJGxAUHAZrodEbEBQcBmuh2RsQFBwGa6HhGxAUHAZroekbEBQcBmuh8RsQFBwGa6H5GxAUHAZrocEbUBQcBmuhyRtQFBwGa6HRG1AUHAZrodkbUBQcBmuh4RtQFBwGa6HpG1AUHAZrofEbUBQcBmuh+RtQFBwGa6HBG5AUHAZrockbkBQcBmuh0RuQFBwGa6HZG5AUHAZroeEbkBQcBmuh6RuQFBwGa6HxG5AUHAZrofkbkBQcBmuhwRvQFBwGa6HJG9AUHAZrodEb0BQcBmuh2RvQFBwGa6HhG9AUHAZroekb0BQcBmuh8RvQFBwGa6H5G9AKLgM10MCcEAouAzXQxJwQCi4DNdDInBAKLgM10MycEAouAzXQ0JwQCi4DNdDUnBAKLgM10NicEAouAzXQ3JwQCi4DNdDgnBAKLgM10OScEAouAzXQ6JwQCi4DNdDsnBAKLgM10PCcEAouAzXQ9JwQCi4DNdD4nBAKLgM10PycEAouAzXQwJxQCi4DNdDEnFAKLgM10MicUAouAzXQzJxQCi4DNdDQnFAKLgM10NScUAouAzXQ2JxQCi4DNdDcnFAKLgM10OCcUAouAzXQ5JxQCi4DNdDonFAKLgM10OycUAouAzXQ8JxQCi4DNdD0nFAKLgM10PicUAouAzXQ/JxQCi4DNdDAnJAKLgM10MSckAouAzXQyJyQCi4DNdDMnJAKLgM10NCckAouAzXQ1JyQCi4DNdDYnJAKLgM10NyckAouAzXQ4JyQCi4DNdDknJAKLgM10OickAouAzXQ7JyQCi4DNdDwnJAKLgM10PSckApuAzXQ+JyQCi4DNdD8nJAKLgM10MCc0AouAzXQxJzQCi4DNdDInNAKLgM10Myc0AouAzXQ0JzQCi4DNdDUnNAKLgM10Nic0AouAzXQ3JzQCi4DNdDgnNAKLgM10OSc0AouAzXQ6JzQCi4DNdDsnNAKLgM10PCc0AouAzXQ9JzQCm4DNdD4nNAKbgM10Pyc0ApuAzXQwJ0QCm4DNdDEnRAKbgM10MidEApuAzXQzJ0QCm4DNdDQnRAKbgM10NSdEApuAzXQ2J0QCm4DNdDcnRAKbgM10OCdEApuAzXQ5J0QCm4DNdDonRAKbgM10OydEApuAzXQ8J0QCm4DNdD0nRAKbgM10PidEApuAzXQ/J0QCm4DNdDAnVAKbgM10MSdUApuAzXQyJ1QCm4DNdDMnVAKbgM10NCdUApuAzXQ1J1QCm4DNdDYnVAKbgM10NydUApuAzXQ4J1QCm4DNdDknVAKbgM10OidUApuAzXQ7J1QCm4DNdDwnVAKbgM10PSdUApuAzXQ+J1QCm4DNdD8nVAKbgM10MCdkApuAzXQxJ2QCm4DNdDInZAKbgM10MydkApuAzXQ0J2QCm4DNdDUnZAKbgM10NidkApuAzXQ3J2QCm4DNdDgnZAKbgM10OSdkApuAzXQ6J2QCm4DNdDsnZAKbgM10PCdkApuAzXQ9J2QCm4DNdD4nZAKbgM10PydkApuAzXQwJ3QCm4DNdDEndAKbgM10Mid0ApuAzXQzJ3QCm4DNdDQndAKbgM10NSd0ApuAzXQ2J3QCm4DNdDcndAKbgM10OCd0ApuAzXQ5J3QCm4DNdDondAKbgM10Oyd0ApuAzXQ8J3QCm4DNdD0ndAKbgM10Pid0ApuAzXQ/J3QCm4DNdDAnhAKbgM10MSeEApuAzXQyJ4QCm4DNdDMnhAKbgM10NCeEApuAzXQ1J4QCm4DNdDYnhAKbgM10NyeEApuAzXQ4J4QCm4DNdDknhAKbgM10OieEApuAzXQ7J4QCm4DNdDwnhAKbgM10PSeEAouAzXQ+J4QCi4DNdD8nhAKLgM10MCeUAouAzXQxJ5QCm4DNdDInlAKbgM10MyeUApuAzXQ0J5QCm4DNdDUnlAKbgM10NieUApuAzXQ3J5QCm4DNdDgnlAKbgM10OSeUApuAzXQ6J5QCm4DNdDsnlAKbgM10PCeUApuAzXQ9J5QCm4DNdD4nlAKbgM10PyeUApuAzXQwJ6QCm4DNdDEnpAKbgM10MiekApuAzXQzJ6QCm4DNdDQnpAKbgM10NSekApuAzXQ2J6QCm4DNdDcnpAKbgM10OCekApuAzXQ5J6QCm4DNdDonpAKbgM10OyekApuAzXQ8J6QCm4DNdD0npAKbgM10PiekApuAzXQ/J6QCm4DNdDAntAKbgM10MSe0ApuAzXQyJ7QCm4DNdDMntAKbgM10NCe0ApuAzXQ1J7QCm4DNdDYntAKbgM10Nye0ApuAzXQ4J7QCm4DNdDkntAKbgM10Oie0ApuAzXQ7J7QCm4DNdDwntAKbgM10PSe0ApuAzXQ+J7QCm4DNdD8ntA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", "dtype": "f8" } }, @@ -1837,7 +1843,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1855,7 +1861,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1871,7 +1877,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1904,7 +1910,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1922,7 +1928,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -1938,7 +1944,7 @@ "dtype": "f8" }, "y": { - "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJg+tOZ6NtPwDI6qaG9G4/uAsxBZ4hcD+JQsivtsdwP2cvd1+AbHE/qiaZOu4Pcj/kMKmC87FyPzx0QJWDUnM/fmwS7ZHxcz8i3uYiEo90P/Fwke73KnU/zd7mJzfFdT+ko6/Hw112P38bmOiR9HY/F/wdyJWJdz9MF3vHwxx4P0JUjWwQrng/Cs27YnA9eT/s/th72Mp5P8/7AbE9Vno/J4t6I5Xfej9uKYYd1GZ7PyPVPRPw63s/o5hio95ufD97wCyYle98P/2tF+gKbn0/TTaqtjTqfT8afjtVCWR+P+JCtEN/234/coJMMY1Qfz9t1SPk/keFP+hBgBoJsYU/y94oSmIYhj9KkftjAn6GPy6XO3vh4YY/RrovxvdDhz/RyL2ePaSHP+JGA4OrAog/r0zrFTpfiD8zhsEf4rmIP6xIwo6cEok/qbKnd2JpiT+/yzMWLb6JPwaZt831EIo/5huXKbZhij/oMMrdZ7CKP3VEWscE/Yo/vtPc7IZHiz9EsOp+6I+LP5r8k9gj1os/ftnQfzMajD9euu4lElyMP8pY+qe6m4w/oD4mDyjZjD/e3i2RVRSNP2g1tZA+TY0/Xuaknd6DjT+p1YJ1MbiNPwMwxwMz6o0/yN4tYt8Zjj8maeXj8XqCP87xScARpII/7TdWfL3Lgj/IVxgA8vGCP7Hn4FCsFoM/aXF+kek5gz/EnnYCp1uDPxgVPQLie4M/OvtnDZiagz/VJeK+xreDP1bmGtBr04M/lXgzGYXtgz+/CyqREAaEPyBjAk4MHYQ/rwvshHYyhD9CI2aKTUaEP8euYNKPWIQ/z3xb8DtphD8GkoKXUHiEP2cdyJrMhYQ/J/L77K6RhD91heCg9puEP3tuPemipIQ/J2fvGLOrhD+AzPWiJrGEP3adfRr9tIQ/U/fpMja3hD8lD9q/0beEP6WnLLXPtoQ/YgMBJzC0hD8bd+1NKJFrP7qp1LXom2s/IBPF9YGkaz8WXxdi86prP7dILHo8r2s/IqJ26Fyxaz9PAIKCVLFrP5cK9kgjr2s/oW2WZ8mqaz+4cT81R6RrP8803zOdm2s/tohrEMyQaz9UdtSi1INrP+hm8+23dGs/qfR2H3djaz9NZMuPE1BrP2TJ/8GOOms/hdenY+oiaz+qYrpMKAlrP3uRbH9K7Wo/LcQJKFPPaj9LM8icRK9qP6dJml0hjWo/Kr38E+xoaj9hasGSp0JqP+H21tVWGmo/Bz8NAv3vaT+Jk9ZkncNpP/PLBXQ7lWk/AzOJzdpkaT+aV3cu4HFRP9SBa00TW1E/xqez8+tCUT+AZX0DbClRPzJQ1XmVDlE/IUR/bmryUD8uncwT7dRQP2FdcLYftlA/wkRRvQSWUD8e3lmpnnRQP4KERhXwUVA/OWVxtfstUD90gpxXxAhQP4d1c8WZxE8/gLNhrTB1Tz/dbEeYUyNPPwDIYOgIz04/k/NiMFd4Tj/S7vgyRR9OP2KUPOLZw00/Q/IrXxxmTT+s+Rr5EwZNP+WRIS3Io0w/khmGpUA/TD/8YSQ5hdhLP1Qw0eqdb0s/L1G66JIESz+iSsOLbJdKP8S53lYzKEo/jmhk9u+2ST+i8+LKsC44P6/9SOS03Dc/ZIYuotyINz9kZ1yOLjM3P5ZuPlex2zY/JP1dz2uCNj+X1dnsZCc2P4Aj28ijyjU/t8cHny9sNT8T9PHMDww1P+4hhdFLqjQ/9m5wTOtGND/na4799eEzPwxpSsRzezM/p0wDn2wTMz9w/2uq6KkyP6p76SDwPjI/YIvuWYvSMT+mQlXJwmQxP95Ctv6e9TA/E9S9pCiFMD/U4X6AaBMwPxDSh+HOQC8/r8i72lxYLj8LiuIMjW0tP1sMgsdxgCw/7dDvhx2RKz8dyd/3op8qP4HF7+sUrCk/aowvYoa2KD91X1si7pYhP7lh2b6HGiE/230t68ucID/6FVp1xB0gP0LTe4r2Oh8/2Kyct/Q3Hj/KR5+klzIdPyvUFrPzKhw/JUUKch0hGz+n51mcKRUaP8iNIRctBxk/DG8X8Dz3Fz8X3udbbuUWP6b0jbTW0RU/s1apd4u8FD8dLtFEoqUTPzKA5NswjRI/1f5XG01zET8Yd4H+DFgQP4r+wTcNdw4/Uw3QRqA7DD/n0ny5//0JP1VWC0tYvgc/AvU039Z8BT95Qql+qDkDP3cGi1P69AA/Mj7VS/Nd/T5ZG3ywp8/4PvrorcdsP/Q+aTFbVTtb7z4D66ETdvYBP3dHGu6naAA/W2KXbiSz/T6RRjQcqJL6PkkSD1EZcPc+RV2JorZL9D4MJ4HKviXxPqNK2UTh/Os+TTfnPBas5T72eBoiNbPePnKH0u3YC9I+KLDz31GMtT7nFiEhbhi9vvUmfFO67tO+hEm4muVK4L6NbX/MKJ3mviIH3Y2o7ey+Q1NnaPOd8b7XJy3assP0viKxL8fT5/e+V52xehcK+75HZCxlPyr+vtyVmJAGpAC/uzEjPKExAr/22+Cz0L0Dv0j9zhJ2SAW/sE+mknLRBr/DN0GOp1gIv4qI/4P23Qm/TYInGEFhC7+LFt/TAcP9vlOMwDbsLQC/PBzHhhR5Ab/8IyYH4MICv8zUMwA1CwS/MA171/lRBb/tdroRFZcGvyU24VRt2ge/2gEJaukbCb98fm0/cFsKvyGzYOromAu/d3I8qTrUDL+ikFDlTA0Ov3u/zTQHRA+/bnVWrig8EL+Ld0mpCdUQv9hBWJ+abBG/nBrPvs8CEr9kJBpRnZcSv1Myr7v3KhO/vWz1gNO8E7/vsypBJU0Uv1mvRrvh2xS/UHfbzf1oFb/vx/N3bvQVv7qr7tkofha/8oxYNiIGF7+anMHyT4wXv3d+kZinEBi/pinY1R6TGL+DQGnLeA8WvzxXb6bbkBa/3weeBnwQF78S8Cn4T44Xv0I9L6tNChi/O411dGuEGL/A8jDOn/wYvwMPwFjhchm/PzFn2ybnGb/MbQhFZ1kav1We2KyZyRq/Hz0RU7U3G79sDZ+hsaMbv3iDzSyGDRy/kd7usyp1HL9S6AAil9ocvwhMTo7DPR2/uXkMPaieHb+WCPafPf0dv46M4VZ8WR6/kdNUMF2zHr/AfhQq2Qofv4Dsr3HpXx+/gWgJZYeyH7+ES21JVgEgv6aIml0pKCC/VJT/57lNIL+WY7b6BHIgv/ExOsEHlSC/5ACggL+2IL/BmtPPWcohv+e7My4H7SG/83ZEsk4OIr+HjKvDLS4ivzFTKuahTCK/r1TPuahpIr9CtiX7P4Uiv05oYoNlnyK/yRmPSBe4Ir8b7LJdU88iv0Tk+PIX5SK/UhbUVWP5Ir88iCHxMwwjv5TJR02IHSO/oD1UEF8tI79rFRb+tjsjv+f3NviOSCO/A1ZR/uVTI78YaQQuu10jvxjaBcMNZiO/EBAxF91sI7/dJJSiKHIjvwN/evvvdSO/4A911jJ4I7+MNWAG8Xgjv/U/Z3wqeCO/7pgFSN91I78ijwWXD3Ijv/bDfLW7bCO/qTzGDeRlI79AWjdaggomv7u9G/Dh/yW/8RJKWYrzJb8c6iSMfOUlvxfQOqG51SW/nm0w00LEJb8b/qd+GbElv+4fJiI/nCW/QAD0XbWFJb+55P7zfW0lv64VtceaUyW/byvg3Q04Jb+xwXxc2Rolvz2Uj4r/+yS/Nwj4z4LbJL93JUC1Zbkkv9wDauOqlSS/X7C6I1VwJL8ljoJfZ0kkv+E345/kICS/COaSDdD2I7+QXp3wLMsjvzZzIrD+nSO/UBMS0khvI7+D9uX6Dj8jv9rlWO1UDSO/6qgbih7aIr/OnIfPb6UivyL7TtlMbyK/Fdcq4Lk3Ir+G+uyCvPYkv2Zra0V+uCS/8MPXYqJ4JL/sNwHWLTckvxcflbkl9CO/CRC5R4+vI7/vhqLZb2kjvysgLOfMISO/KW9oBqzYIr//eTLrEo4iv3viu2YHQiK/eMUYZ4/0Ib+pWcn2sKUhv+9WQTxyVSG/ty9tedkDIb/0JTUL7bAgv2NF/mizXCC/FE0pJDMHIL9zJB/P5WAfvwrN++3ysB6/uRhbXZv+Hb8th3YF7Ukdv3byOP31khy/hkolicTZG797wjkaZx4bv+WFz0zsYBq/lwx352KhGb+xI9HZ2d8Yv+rCZDtgHBi/XMVxSgVXF78GiJVhUJ4bv/j+VIOP1Rq/FLq59LYKGr/2ViiH1j0Zv/qUjzT+bhi/WGYpHj6eF7/F8DiLpssWv92WxedH9xW/dyNTwzIhFb+tMJfPd0kUvzbkK98ncBO/HxtA5FOVEr8UH0XvDLkRv53/mS1k2xC/m1Np0NX4D79yspEEZTgOvyH62e+YdQy/21h6uZSwCr8givi0e+kIv8yfZl9xIAe/vY2eXJlVBb9Gr3p0F4kDv/h9C5APuwG/y2KVbUvX/76b/5cX/DX8vpVv15V5kvi+edb2iwzt9L64x9nD/UXxvu5n7k8sO+u+nZhTez3o474ZjgOoF/b4vrNAVZq1gvW+2MPCIqYN8r45LVeLXC7tvjCPE0cmP+a+gu83zmec3r5/wub4H7jQvktfBP9SlKa+665NIocmxj7dwRZqNPjYPsYdCmaZbeM+xYyRv5Rd6j4eBfHhwKXwPviJIw9rG/Q+s2Lw1oOP9z7KpDRIxgH7PlO1epbtcf4+atqrj9rvAD/f0eI3bKUCP2TqvKSJWQQ/VKEb1BAMBj9oL47j37wHP7/39RLVawk/q0kox84YCz/jQI2Mq8MMP6SPuxlKbA4/an8IqUQJED8UuCMkJNsQP3YXgyCzqxE/Bq63WuF6Ej8wXnt2y2cOPwKVsvsN1A8//hAOj+qeED+zp8pTglIRP+9d3UrABBI//b8Ljpa1Ej+9DyhT92QTPzuNJO3UEhQ/3XkkzSG/FD/kwIqD0GkVPw8wBsHTEhY/jCubVx66Fj94yKo7o18XP10594RVAxg/d3ilbyilGD+IGzxdD0UZP4w9n9X94hk/a2oJiOd+Gj92eQFMwBgbP2hDTSJ8sBs/9yDhNQ9GHD9kH8zcbdkcP4fYIJmMah0/L9zaGWD5HT8LmcA73YUeP1yzQQr5Dx8/KrhRwKiXHz8Cjp/kcA4gPyk6w+DMTyA/eO3QO+OPID8dWtfK+QIfPyVlspJJYx8/SPnowibBHz+DZdcERQ4gP5IjUyO2OiA/Imu3ReNlID9PnRcOyY8gP4T+DThkuCA/Ye/8mLHfID8AI04grgUhP5DNr9dWKiE/oMZP46hNIT9YmhSCoW8hP1aF1A0+kCE/xVaK+3uvIT+gNIjbWM0hPyM+qFnS6SE/nwh7PeYEIj8d83Nqkh4iP0lNE+DUNiI/bE4OuqtNIj9E2XQwFWMiP+kJ1ZcPdyI/zIpcYZmJIj9ervcasZoiP95Kbm9VqiI/F1Z+JoW4Ij/rPvQkP8UiP+QCwWyC0CI/6v0NHU7aIj+a/OvWujoiP3pGwzHdMiI/JicqQJQpIj+bT3u74B4iP/16V3nDEiI/8cWUaz0FIj/j0iugT/YhP5q8IkH75SE/y9h1lEHUIT98TP77I8EhPy50VvWjrCE/9iG8GcOWIT/Ws/Adg38hP9YEF9LlZiE/iDuPIe1MIT+2eNASmzEhP1lpQMfxFCE/3b4Ie/P2ID8dkeqEotcgP4KtD1YBtyA/8tbZeRKVID9W+q+V2HEgP65byWhWTSA/3r/2y44nID9jl2mxhAAgP+dc8kh2sB8/Js7LkmpdHz/OAzW67AcfPzX11mkDsB4/6vmofLVVHj9qFfw6e94cP+CpV+IPZhw/wdcsnm3rGz/nO5z+nW4bP6rpPL+q7xo/dx9axp1uGj/6pi0kgesZPy7wFhJfZhk///bO8UHfGD9xA5lMNFYYP3ZUcNJAyxc/xcUyWXI+Fz9xgcjb068WPxLOSHlwHxY/iwocdFONFT/e6BoxiPkUP2r5qjYaZBQ/d5jYKxXNEz/oT27XhDQTP0K/CR91mhI/WhwuBvL+ET8tX1StB2IRP5gr+VDCwxA/1YuoSC4kED+GHQ8MsAYPP1G6tyeYwg0/2LIiKi58DD9CunuHizMLP2tQRuDJ6Ak/BSte/wKcCD8oalt3y6gEP1loedPZPwM/mw1l6WfVAT/7UpL8kWkAP2VmcNjo+P0+o480Ylcc+z680KC2qD34Pn3vGCAWXfU+whi9Dtl68j7+ft4nVi7vPqPHq7uLZOk+qTe5ZcaY4z6038q085bbPnDkQrJn9M8+gLemJNRwsT7dlSZGgwi9vvYjnMbl39K+Lvr98DF83r72l4DEDgvlvjxUNntg1uq+4duiOM1P8L6Guo2SJDPzvuyg9qP8FPa+3dtb4xv1+L69xZvpSNP7vv+zbnZKr/6+fu5uunPEAL+Obtt/8y8CvzLB/TIImgO/9sKml5UCBb92TbIcmqMIv0e21YmnAgq/cc3quK1fC78Mv2hykboMvwChY6k3Ew6/lXSofYVpD7+Q1eoesF4QvxECuLRWBxG/nc15WamuEb9QfvAAm1QSv6ELY7oe+RK/8nGhsSecE790zAQwqT0Uv3ghbZ2W3RS/UM08geN7Fb8peFGDgxgWv4OD+mxqsxa/+dvsKYxMF79oHDTJ3OMXv53vIH5QeRi/+J00odsMGb+dtAmxcp4Zvya0OVMKLhq/xbQ/VZe7Gr9W7letDkcbv9QSXHtl0Bu/BWqcCZFXHL+LnbXNhtwcv3wkY2k8Xx2/UT5Oq6ffHb/YonYmcQMfv9axXypLcx+/LXUcV7HgH78hOWCSzSUgvz6Afx4AWiC/C9zoPeyMIL+ieg34jb4gv5IxIm7h7iC/9sBs2+IdIb89Do+Vjkshv7FQ0AzhdyG/FCpkzNaiIb/Epa96bMwhvwMZjNme9CG/Nt+HxmobIr/67CQ7zUAiv0Q1FU3DZCK/y9t0LkqHIr8yMAIuX6giv5ZtU7f/xyK/VzoKUynmIr/94wSn2QIjv5hTjXYOHiO/pbaFosU3I79O2ZIp/U8jv3IuRCizZiO/hYI52eV7I79EVkaVk48jv3vektO6oSO/TKa6KVqyI78HnRvQ/vAjvxVwvN4J+SO/INpINob/I79BnUdVcwQkvwkXYdnQByS/uOtmf54JJL9WQ1kj3Akkv2WYacCJCCS/yhf7cKcFJL8TkqBuNQEkvxj+FxI0+yO/c41D06PzI79MUyBJheojvyF+uinZ3yO/niUfSqDTI798rUue28Ujv76+GjmMtiO/1NguTLOlI78/fNonUpMjv5PwBTtqfyO/+acSE/1pI79EQrxbDFMjvzIy996ZOiO/SAfNhKcgI780XzZTNwUjv5KB8m1L6CK/UKlcFubJIr/+/j6rCaoiv31Ho6i4iCK/2Eqhp/VlIr8=", + "bdata": "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", "dtype": "f8" } }, @@ -2808,7 +2814,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2826,7 +2832,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2842,7 +2848,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2875,7 +2881,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2893,7 +2899,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2909,7 +2915,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2942,7 +2948,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "D0lIYhM95D96V/tU5nrzP110E++WZQFAR8QoHSF5CUDrbuvmXNUQQKLCX2Yo9BRAbsx9F8EVGUBsxy0UtjgdQON0bmQhriBAtzauGfi/IkDXoqE0t9EkQJxkbnhB4yZAgaTK73/0KEDBvz6GXwUrQN42zqfPFS1AH3AfbcElL0Bag3OLk5owQByBB9z5oTFA6Wk9fg2pMkAWM/KAyK8zQEQtQB4ltjRA/jW/sR28NUDhcnOxrME2QBj6majMxjdA3TXIM3jLOEAbSf/9qc85QLDVcb5c0zpAi+/NNovWO0ASN+oxMNk8QJYuvoJG2z1Anj2UA8ncPkACxa3BPDo0QD3c9m354zRA0zjSFVWONUAsDd1NWDk2QCwsdVsL5TZAS4IOMXaRN0AhMslqoD44QPEYRkuR7DhAZPa3uE+bOUBmwy864ko6QKz4IvVO+zpA4qQqq5usO0C+Qvq3zV48QONDjQ/qET1APUKKPPXFPUB6wNpe83o+QIdVdiroMD9Azw9g5tbnP0BkZuo14U9AQGuY1JJWrEBAmO3qh0wJQUBOMZjbw2ZBQKvMpxy9xEFAS8VMojgjQkCdzDyMNoJCQDWP3sK24UJAO3CK97hBQ0CH2tykPKJDQK5PGQ9BA0RAw1ydRMVkREDsWLRP820wQI25Oqa1AzFAbcQaGI2dMUAuLLT4YzsyQL/lyVgk3TJAUSppHLiCM0A0qVkMCSw0QDZJyuMA2TRAy33ZWomJNUCAP4QujD02QM3ccybz9DZAJYIRGaivN0DCujbulG04QLVVxKCjLjlA7gFdP77yOUAUfnbszrk6QMBC692/gztA3e8uXHtQPECeWEHB6x89QCOldnf78T1AXIIm+JTGPkCmnVDKop0/QN/KoMCHO0BAlIGg3WKpQECSlCcQWBhBQMeYe7BciEFAFr2cGmb5QUDGMMitaWtCQN6QCMxc3kJA18rU2TRSQ0A2d3zkA4k0QJLYU/iGNjVAIEsqsublNUBOioaVD5c2QHxXJ37uSTdAz8YTlXD+N0BxMg9Hg7Q4QJjkRDwUbDlAijMFURElOkCqvHKPaN86QH+5AioImztAKia3dt5XPEDkrvzq2RU9QG0pGRjp1D1Ap84ZqPqUPkD5hDJb/VU/QA+wwALwC0BAo4iVxkhtQEBrMWN0AM9AQKIGB48OMUFAVZ5ooGqTQUAuAw45DPZBQOfryO/qWEJA+Et6Yf67QkAk5+kwPh9DQKvUrwaigkNA+BkukSHmQ0AQuJiEtElEQKu0CptSrURAhM+mlPMQRUANcAuW448yQLtsEzfu/TJAm0zSQztsM0AQ1PKfwNozQNUYJUR0STRA+FnQPEy4NEBQufaoPic1QAFXRblBljVAC/dLr0sFNkCq6tfcUnQ2QGl2bqNN4zZAwVzjczJSN0AWlgjO98A3QL6TdECULzhAObZcaP6dOEDw34HxLAw5QFBHLZYWejlAmN07H7LnOUAYzDZk9lQ6QCKxd0vawTpAd2hXylQuO0DWSWblXJo7QI3jrLDpBTxAEU/0T/JwPEAsUxX3bds8QHGaTepTRT1AqVWafpuuPUAnsRcaPBc+QIiRZDQtfz5AmRgKV2bmPkByrjCwiXIsQNdKPaEq5ixAhbecxUBZLUAkEugGwsstQPNzPmmkPS5AqXUWC96uLkAsrSAlZR8vQN97OQowjy9AzaxoJzX+L0Acw/aBNTYwQDMJqyDkbDBAUkDQzSGjMEC8zLL06dgwQBisBQ44DjFAmGj/nwdDMUCHT3o+VHcxQM+QF4sZqzFApvRkNVPeMUCJ2wT7/BAyQNFC2KcSQzJA640qFpB0MkA/2d4ucaUyQJCgnumx1TJAq4YJTU4FM0AyEOZuQjQzQLUmU3SKYjNAbjz6kSKQM0Ds60EMB70zQIPxgDc06TNAzV4xeKYUNEAggZ06UVAlQKOms6i7iCVAS8y2n2TAJUAhL2dVR/clQDBz3hRfLSZA8hSmPqdiJkDq7dBIG5cmQOZ0F7+2yiZAD2n2QnX9JkAxnc+LUi8nQD2eDGdKYCdATPVCuFiQJ0ANyll5eb8nQAWvsLqo7SdA72RHo+IaKEAxZuZwI0coQOUOSHhncihA2jhCJaucKED/JfD66sUoQD+W3JMj7ihAPegrolEVKUDEJsbvcTspQL3mgF6BYClAhNtI6HyEKUA5CUufYacpQHd+Ha4sySlASYDnV9vpKUDXFIn4agkqQJTawQTZJypAABtXCiNFKkB6PgLZy88fQFgPKaez/h9ApyDexx4WIEDnNcXyMiwgQFnyFo+UQSBA0JEX6UFWIEBX6pNeOWogQCY58155fSBA4iBJawCQIEAfyGcWzaEgQMUI8gTesiBAC6Jt7THDIEAkYFWYx9IgQNMtK+Cd4SBASgWKsbPvIEC7tjcLCP0gQAx8Nv6ZCSFAHVLWrWgVIUD9EMZPcyAhQD09JCy5KiFAoY2PnTk0IUADITcR9DwhQEBh6gboRCFAvJAoERVMIUDdADDVelIhQIrwDAsZWCFAjhKofe9cIUCAvNQK/mAhQGy/XqNEZCFAWOwXS8NmIUCEkU+RfpQXQMU6QETTnxdAUakuBymqF0CrQ8XTf7MXQGiojcDXuxdAZg4JATHDF0BN5Mjli8kXQBKsh9zozhdA7w9CcEjTF0AsL1BJq9YXQKkhfy0S2RdAxbEqAH7aF0C9TFfC79oXQC8qzJJo2hdAoqstrunYF0Bj9RdvdNYXQCbCOU4K0xdACXNv4qzOF0BsXd7gXckXQA9YEB0fwxdAsYgPifK7F0DbcoI12rMXQC9IyFHYqhdAsnkVLO+gF0DQiJAxIZYXQL0Vb+5wihdAhCcTDuF9F0DBqChbdHAXQCUSw78tYhdA+Tl7RRBTF0Ak2avUIoIRQGuP86j8fhFA1BHwwlp7EUDVIe+aP3cRQMZmV7+tchFA7hGI1KdtEUD4zbSUMGgRQMu2vc9KYhFAAxMDa/lbEUAThTRhP1URQDhmG8IfThFA/vlfsp1GEUBTJUlrvD4RQHxQdjp/NhFAzxeTgektEUBcawS2/iQRQIO6jmDCGxFAA8X0HDgSEUA1qI6ZYwgRQFG82JZI/hBAKNP55urzEEDJZ0BtTukQQNdMlh133hBAcGbq+2jTEEDr+48bKMgQQCMuk564vBBA7x8CtR6xEECFYCqcXqUQQCYqyp18mRBA2Qs1D32NEECJptjAp40LQM+pYL1xjgtAZttJAVyPC0C1Nx1ea5ALQBzktZOkkQtAaYRnTgyTC0BItyQlp5QLQNvwppd5lgtA4vaYDIiYC0DxTMXP1poLQIToSRBqnQtAs4zS3kWgC0BHM9srbqMLQPns+8XmpgtA2qQ/WLOqC0CzModo164LQMYl+lVWswtA5ayGVzO4C0Ci+XF6cb0LQC9z+qATwwtAkQENgRzJC0Dtqw6jjs8LQDK0u2Bs1gtA4Ucd5LfdC0AGyZYmc+ULQN6bC/Cf7QtAIE0e1j/2C0D4yok7VP8LQB5PlU/eCAxA4HujDd8SDEDS8QE/SH8JQD6uMWVZmwlAZQEp/tG3CUCJYJ2srtQJQOq6zvLr8QlAarYzNIYPCkCZ4im3eS0KQB2QqKbCSwpAlwn1E11qCkDl+1b4RIkKQLvsyzZ2qApAlbC4nezHCkBV45foo+cKQH55pMGXBwtAs5J/w8MnC0CryNB6I0gLQFVI4GeyaAtA2xQqAGyJC0DY5emvS6oLQDcjn9tMywtAkZGI4WrsC0CfURcboQ0MQGTkWN7qLgxAwfNXf0NQDECzrHNRpnEMQMWEragOkwxACVDt2ne0DECulztB3dUMQCQr8jg69wxA2u7iJIoYDUB8XHkoyFELQFzyJ5gqfQtAPn1CjWGoC0DTUfFVZ9MLQD7Ze1k2/gtA3EXkGMkoDEDlTHgvGlMMQB+ZV1MkfQxAxKHwVeKmDED4h3QkT9AMQE+UQshl+QxAMOVLZyEiDUBC1m9EfUoNQK2g0b90cg1A5asnVwOaDUC6/gSmJMENQLU4HWbU5w1AsnSDbw4ODkBCbuS4zjMOQOY8vFcRWQ5ApfGHgNJ9DkBSXfOGDqIOQClAA97BxQ5Aph08GOnoDkBt6sXngAsPQAnFjB6GLQ9AjeVervVOD0DG6wepzG8PQIavaUAIkA9AW7KSxqWvD0Ah2mejv3QNQDN9rBHXmg1AjutcT1LADUDDnRBeLuUNQKV4JWNoCQ5AX2Ksp/0sDkCdYFWY608OQCVFW8Uvcg5As+pu4seTDkAAAaLGsbQOQNZjUWzr1A5AavYO8XL0DkDs+YqVRhMPQP3TfL1kMQ9AjTeL78tOD0AHoTPVemsPQLQUsTpwhw9AywziDquiD0Abgy1jKr0PQLUAZ2vt1g9A/JyxffPvD0Dt6TAJHgQQQAQN72HjDxBAfgo/p0kbEECTLTTIUCYQQP5Pt8T4MBBALBd0rUE7EEB5ScWjK0UQQKsroNm2ThBAodZ+keNXEECBBaWQDqANQIXHPe13uQ1AW0kwo0fSDUBA6ZWzfeoNQKzTCD0aAg5AS3Rlex0ZDkCS64nHhy8OQH1pE5dZRQ5A1k0ZfJNaDkDX7eUkNm8OQNverFtCgw5AfaU+BrmWDkBfqLklm6kOQMRFONbpuw5A/ep7TqbNDkC2DJXf0d4OQFjfh/Rt7w5AqK7tEXz/DkAstJLV/Q4PQAVMEPb0HQ9Aa2hjQmMsD0BFJH+hSjoPQAFW2xGtRw9AWgT/qIxUD0CWnwaT62APQH3iJRLMbA9AVT8lfjB4D0BTvtpDG4MPQBc0nuSOjQ9AHri49Y2XD0CnDMTb8TgMQHlB/kknTQxAhsBcyBphDEDu7KGHzXQMQIHCOsJAiAxAzo2/u3WbDEC/BHPAba4MQJ/OvyQqwQxAC4y0RKzTDEDZcH6D9eUMQGOD4koH+AxAZJa1CuMJDUDrE1M4ihsNQLuxEk7+LA1AvCi9ykA+DUDXCgAxU08NQC7U4AY3YA1A8lUv1e1wDUDKmvcmeYENQDhm84jakQ1AonH7iBOiDUBKi3i1JbINQLS81JwSwg1AO5/szNvRDUDuBoHSguENQMwsqTgJ8Q1AqYJFiHAADkD6W3NHug8OQJmXAfnnHg5AbnfmG/stDkD24jZ8tisLQM6BcaoWRwtAINY4n31iC0AYTe5t6n0LQOVm4CFcmQtAN2RsvtG0C0DysCI/StALQHX27ZfE6wtAS788tT8HDECBlS18uiIMQKSEvcozPgxAsOf4d6pZDEBCay5UHXUMQNsrJCmLkAxA7ddOuvKrDEA1vQrFUscMQOKo1gCq4gxA6oGQH/f9DEDuhLPNOBkNQDwJmLJtNA1Aaba0cJRPDUBaEuGlq2oNQItPmeuxhQ1AyUND16WgDUC7b3T6hbsNQPr/OONQ1g1At7BbHAXxDUBVfa4toQsOQLgFVJwjJg5AhJMJ64pADkAkoAGMBqILQIwb9966xwtAvUpYbV3tC0ABOqGs6hIMQLqIZhhfOAxAFfLuMrddDEAzDciF74IMQDtaVqIEqAxApLJgIvPMDEAANJeot/EMQFK9FeFOFg1AWRfigbU6DUCK4GVL6F4NQL9V5Ajkgg1AjRDskKWmDUAh1MTFKcoNQFyB2ZVt7Q1AfUoe/G0QDkBvPnMAKDMOQB5DA7iYVQ5A65WfRb13DkB66BfakpkOQLYvj7QWuw5A9znNIkbcDkCdII2BHv0OQKaoyDydHQ9ABqUA0L89D0CobILGg10PQEh1qrvmfA9AYCMkW+abD0AVkfarc/AMQAf1fkrKGA1AnbqORMdADUCfrM4IZ2gNQL6SVhymjw1A8a3jGoG2DUDA3Au39NwNQAOTbbr9Ag5AL83cBZkoDkA2JI2Rw00OQLsjOW16cg5AhwFHwLqWDkBw0urJgboOQBRWRuHM3Q5AenCGdZkAD0AsZv4N5SIPQBztQEqtRA9AmCI34u9lD0CQdDWmqoYPQGaKDn/bpg9A6TckboDGD0BSg3aNl+UPQLhi2IcPAhBA5HQaoAoREECMaZJBvB8QQIHztKojLhBAYGFdJkA8EEC0jM8LEUoQQHzduL6VVxBAW2Ewr81kEEDUCDTF1bkNQL+GQMv83A1Ayh3aBqP/DUD4RSNbxiEOQIMdyMRkQw5AWLb7WXxkDkD06XNKC4UOQBG2Y98PpQ5AIyN0e4jEDkDus7uac+MOQGZctNLPAQ9AaPwv0psfD0AcWkth1jwPQDSWX2F+WQ9ArRPyzJJ1D0B+y6K3EpEPQMoDGU79qw9AcmHu1VHGD0AUSpitD+APQLiLT0w2+Q9Afx/7oOIIEEDp630b3hQQQBSsH3aNIBBA9Mt3nfArEEA6yjSKBzcQQAFdCkHSQRBAOoye0lBMEECMunVbg1YQQCiV3QNqYBBA+eLW/wRqEEAtkmRY3HMNQPEKyZLNkA1Ab3e38UytDUBGS8CnWckNQCwQmvvy5A1AuukCSBgADkDLfaD7yBoOQIg73pgENQ5AjvrJtcpODkB66+77GmgOQMbSLij1gA5AqIaZClmZDkBlqEKGRrEOQGWRFZG9yA5ASWynM77fDkAXcgeJSPYOQJlDjb5cDA9ACVelE/shD0A3cpvZIzcPQGcpY3PXSw9APlteVRZgD0BaoiEF4XMPQFO1Nhk4hw9AGK7cOByaD0AEMsYbjqwPQEZ01YmOvg9AjAzWWh7QD0BinDR2PuEPQBQ+tNLv8Q9AN9wQuxkBEEAT7TuoBK0MQIsX5DpwyAxAliAFhZPjDEDepF7hbf4MQDaMmLX+GA1AxnUrckUzDUDTG0iSQU0NQDqxvZvyZg1AazrfHliADUDr42e2cZkNQCpYXgc/sg1AmBb3wL/KDUDuzXWc8+INQIe7DV3a+g1A7RHBz3MSDkCbaD/LvykOQC43wy++QA5AUF7u5m5XDkDTwKXj0W0OQH3v6yHngw5AQuq6pq6ZDkDV+dx/KK8OQJqkxMNUxA5ANcJjkTPZDkA1sQEQxe0OQHiyEG8JAg9ANG4C5gAWD0DGphu0qykPQJcdRyAKPQ9Aw67neBxQD0BtEsNhCD8MQGLJJhukXQxAmm7oSQ58DEAKmLZWRZoMQJXrlbFHuAxA/TEE0hPWDEDqORo3qPMMQNyMrGcDEQ1A4fdq8iMuDUCc6f5tCEsNQEenKHmvZw1AFlrbuheEDUBg9lfiP6ANQNT9RqcmvA1A5R3RycrXDUCLq7YSK/MNQEH9ZVNGDg5AOqQQZhspDkCjhb8tqUMOQIjUZZbuXQ5ANu3ylOp3DkB1EmMnnJEOQFQNz1QCqw5Ava96LRzEDkBXOuLK6NwOQO2lxk9n9Q5ArNA46JYND0BWj6PJdiUPQKGi1DIGPQ9A25AEbERUD0DsTAucQnIMQJoSSD9JlAxATe0g9hC2DEAxXxdel9cMQJiNRyHa+AxAujah9tYZDUBFNB6iizoNQCSZ9vT1Wg1ARnjSzRN7DUBkYfkY45oNQACgf9Bhug1AQUhx/I3ZDUB4HPuyZfgNQHNVkRjnFg5AL1cUYBA1DkCWWvPK31IOQJYUTalTcA5AAGIOWmqNDkAZ/w5LIqoOQERRLPl5xg5AYEhi8G/iDkArXeLLAv4OQDCxKDYxGQ9AbFQP6fkzD0BStN+tW04PQD43Yl1VaA9ACwfs3+WBD0AhDWstDJsPQKMhcE3Hsw9AUm83VxbMD0A=", "dtype": "f8" } }, @@ -2960,7 +2966,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -2976,7 +2982,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3849,7 +3855,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3867,7 +3873,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3883,7 +3889,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3916,7 +3922,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "D0lIYhM95D9X51PnumLkP0O1NiZl0+Q/GAWw6gqP5T/CNENyopXmP5StG8gi5+c/v7NDc4iD6T8VPsRw22rrPxZ5jG82ne0/gczNnmcN8D8gdHolAHLxP2l5doqp/PI/Fr1BmMWt9D8zQwPB2IX2P1JDz3yPhfg/m5uK9MKt+j/HVxJffP/8Pzzqm1b2e/8/m6YHr00SAUDGpQlxgH0CQIns8SNvAARArJkaDgCcBUArUUoRHFEHQOoEZd6lIAlADJN/VHELC0D1T8UaPBINQHn+RVSoNQ9AxOWW8xy7EEBkS/YqK+oRQDD2EF8jKBNAbouzqB11FECbks7EJnYUQA5+IMivtxVA4NJSqtoFF0A4dIQfsmAYQGrYsiQ5yBlAAG9cGGw8G0BbcO3dQb0cQHUS2vKsSh5AsGs9ZZzkH0C3Pe1RfsUgQKFAxRLcniFAoI4j9Vt+IkBXYivt8WMjQFUNj4SRTyRAVgOW8C1BJUDy3VAfujgmQDohMb4oNidAIIXWO2w5KECC8IPGdkIpQPb8WUg6USpAjz0uYqhlK0DOjp1lsn8sQB8Ry05Jny1ALD0bvl3ELkAU0iDy3+4vQHk17+BfjzBAOOa4S/YpMUAtGpq1KscxQBoSql/0ZjJAkj/0TUoJM0CvNEiBo9AwQEJwFtVWVDFAn3j5qKPZMUB2h8C+f2AyQEfeCbbg6DJAmYNwDrxyM0DMjk8pB/4zQDgQLku3ijRAfGnknMEYNUBlroksG6g1QIeFNe64ODZAQwmhvI/KNkDmZq9ZlF03QDVt5W678TdAfeTVjfmGOEC6ZYcwQx05QG9v17mMtDlAxajddcpMOkDhmFGa8OU6QLKM9EbzfztAVPMAhsYaPEBYHaBMXrY8QGkBZ3uuUj1AQ27a3qrvPUCi4/ovR40+QOQn2BR3Kz9ARpQsIS7KP0A8/n/rrzRAQEADqdN/hEBAQt5leYDUQEDqZdue9hNAQCNTP/FtXEBAXnZRC/GkQEDvvsUUeu1AQKnM6TMDNkFAsiEWjoZ+QUDRdR1I/sZBQFyYuoZkD0JAeD39brNXQkC3BLYm5Z9CQD364dTz50JAEcgVotkvQ0Bpw+i4kHdDQOn4X0YTv0NAaVNZelsGREBT8vaHY01EQPi+CqYllERAvkuCD5zaRECnA9MDwSBFQJWtZseOZkVAiEMIpP+rRUDfG1HpDfFFQHBgFu2zNUZAx83WC+x5RkBlsyipsL1GQMUsKDD8AEdAA4rlE8lDR0BT3tPPEYZHQOKpN+jQx0dAT5SV6gAJSEBzV2PPuZFHQKk/Fm+EzkdASeIqGrMKSEAToqLmQEZIQNxBkvYogUhAxfCEeGa7SEC4dd6n9PRIQAh9PM3OLUlAAgrXPvBlSUDhDOBgVJ1JQO0c4qX200lAaFUej9IJSkBuU+ms4z5KQCVSB58lc0pALGIHFZSmSkC8uJ3OKtlKQIoS/ZvlCktANCYvXsA7S0DZIWwHt2tLQCQvcZvFmktAIPnVL+jIS0D8LmHsGvZLQPL+WwtaIkxAYITk2aFNTEBuJD+47ndMQHLUJho9oUxAcEUch4nJTEBe8LOa0PBMQLz+4gQPF01AegtLikE8TUA5n/yxG+dMQKk4U84VCU1APGIeGgIqTUC+kiTe3UlNQO6hunimaE1A2Cf/XVmGTUBZahQY9KJNQIPXWEd0vk1A0AueotfYTUAFY173G/JNQM8S8Sk/Ck5ATs68NT8hTkDc8WgtGjdOQIc2DTvOS05A6OxfoFlfTkA7v+K2unFOQMT6DfDvgk5A02B61feSTkDxfwkJ0aFOQBCWDEV6r05Aw/xpXPK7TkDjIME6OMdOQFYHjeRK0U5A0WBFdynaTkD5Ln4p0+FOQGr9BUtH6E5Al7ECRYXtTkDH9AyajPFOQMU7SuZc9E5AMHCF3/X1TkC3pQ/boKtOQCxIMh+7qk5A/DZ2cqSoTkCW0fX/XKVOQKIZ0QvloE5ARA8z8zybTkClUlUsZZROQIYJgkZejE5AkAcU6iiDTkDLN3XYxXhOQFVFG+w1bU5ATIGCGHpgTkBbAydqk1JOQAwCfAaDQ05All/hK0ozTkBcZ5cx6iFOQLi3sIdkD05AQ1MCt7r7TUDl0xFh7uZNQHi5AUAB0U1A5sx7JvW5TUDHj5n/y6FNQMavys6HiE1A3nO5rypuTUCXGC3WtlJNQE0P6o0uNk1ARROQOpQYTUAdBnZX6vlMQNiDg3cz2kxAZB0IRXK5TEAwgMVImW1MQFrVKXoZS0xAGqaPT5snTECu6u23IQNMQHV32Lav3UtARMI8ZEi3S0AxUxzs7o9LQFTiRI6mZ0tAqCQGnnI+S0BcS+WBVhRLQMs5TrNV6UpAV3dCvnO9SkDB4wVBtJBKQJo1yesaY0pA5EtSgKs0SkA4XaLRaQVKQEgQmsNZ1UlA8oqbSn+kSUDChipr3nJJQAd7ijl7QElAbe5a2VkNSUBzAzJ9ftlIQIlUNWbtpEhASjax46pvSECPd65SuzlIQIe4hh0jA0hAUXN3u+bLR0Ch0TOwCpRHQEJsdYuTW0dA9RGM6IUiR0CPWrRg3s1GQDkv45nNk0ZAFEp60jNZRkCb9Ci3FR5GQGZ2If534kVANiq1Zl+mRUAucPC40GlFQN+HNsXQLEVAFFzdY2TvRECWScl0kLFEQDXpCN9Zc0RAyeRwkMU0REDr3Td92PVDQLtskp+XtkNA+jtP9wd3Q0BwR3OJLjdDQMJA1l8Q90JAXx6/iLK2QkCm14AWGnZCQPdQFx9MNUJA73nEu030QUCvn60IJLNBQNz0eCTUcUFAoVDrL2MwQUD1JYZN1u5AQB+0JaEyrUBAc3GfT31rQEAzsWB+uylAQBALG6bkzz9A7rw/5k1MP0CDaPPsG5I+QMI4cCZODj5A2HnZDJqKPUACXIfqCQc9QKm9RwaogzxAxCCbon4APED8/fH8l307QB1/6kz++jpADKuOw7t4OkDGDZOK2vY5QEXnlcNkdTlArexeh2T0OEB0px/l43M4QI5+tOHs8zdABnbmdol0N0DFsa2Sw/U2QHvIdBaldzZABvRc1jf6NUDQLIOYhX01QPY9RhSYATVAKOCN8XiGNEBb6RLIMQw0QKmfqB7MkjNAuT2HalEaM0A2t5cOy6IyQOzLwFpCLDJAL3g1i8C2MUA20cTHTkIxQBZcKyP2zjBADu5lmr9cMEBhxe3HuVwvQEc0Nj9VfC5AsCKElG2eLUDwoUEoFMMsQFtYQSha6itAsJVvjlAUK0A8TYcfCEEqQFkRy2mRcClAxivCw/yiKED87flKWtgnQC5Uy+K5ECdAhhUlMytMJkB0O1qnvYolQNBZ9WyAzCRA+oCQcoIRJEC3ArJm0lkjQC4irrZ+pSJAzsaNjZX0IUCaSfrSJEchQKhzLio6nSBAvIjZ4cXtH0BbKvZ8WKgeQKZgR8VFah1Aud53yaYzHECi62AFlAQbQHY3LmAl3RlAnzaNKnK9GECiKOgckaUXQIHurFWYlRZAxtOfV52NFUBThrW8UpUTQOAb7Pm1nBJA7nAs4F+sEUBs8QedY8QQQFY4WnCnyQ9ApLLhI4QbDkAX4MnDf34MQAF292q78gpAtHNy3VZ4CUAIOuOFcA8IQCLPKnMluAZAPoQWVpFyBUBmMC9/zj4EQPYwpNz1HANAKl5S+B4NAkCGH+f1Xw8BQHLJH5HNIwBA/9VKOPaU/j8yYAr89Ab9P0L0imK4nfs/eJwvhV5Z+j9jbE+fAjr5PzhcDQy9P/g/a21qRKNq9z/IQpLdx7r2P2FRYoc6MPY/aMorCwjL9T/vWLBKOov1P27JWT/YcPU/tKus+eV79T/b/4w1dvjxPzzA6HRFTPI/Ax9ADq3F8j86bJqgpWTzP2F+mNYkKfQ/9HUhZx0T9T/RiU4WfyL2PznQlbY2V/c/4PAzKi6x+D/RpNRkTDD6P6LheW111Ps/LoahYIqd/T+7V6lyaYv/P7KLOPn2zgBASzgdJnjqAUA8PWMGIxgDQME/WPLgVwRAxdsC1pmpBUBCzQwzNA0HQLI1yyKVgghASMpkWKAJCkC0tBUjOKILQA7tkHA9TA1A3dB+z48HD0AYXAy5BmoQQJijcJjJWBFA8pu8Rv5PEkCbKsjakU8TQP4u+cJwVxRAGcLXxoZnFUB2Wac3v5cVQMJvPO1itxZAkP2cWQffF0B9K6bClQ4ZQHOhac32RRpAFvYQgBKFG0CTls5D0MscQEDv2+YWGh5AYJyEnsxvH0DMNJ+Ea2YgQNPyZpiNGCFAo6c7xj7OIUCuz50BcYciQBG6EPcVRCNALtBEDR8EJECRkEdmfcckQEgeueAhjiVAmkUHGf1XJkDn1q1q/yQnQEo4fPEY9SdAqg7gijnIKECG3jTXUJ4pQA6FGDtOdypAm2nE4CBTK0AJSGu5tzEsQPFzm34BEy1ADnWls+z2LUDh3AanZ90uQKc12XNgxi9AXnWigeJYMEDkr1TWEpQwQNLLHB7hCzFARiPoQcyEMUD+u0beyv4xQA6N8HnTeTJA/1OJhtz1MkCMDWZh3HIzQAIAVFTJ8DNAbkVhlplvNEC4w6ZMQ+80QCaBE4u8bzVAhEM5VfvwNUCWaBqf9XI2QGXm+E2h9TZABWImOfR4N0C+S9Uq5Pw3QFHv6uBmgThAbWfSDXIGOUAvY1BZ+4s5QOysV2H4ETpAT2Heul6YOkALxrPyIx87QHCvVo49pjtAGWTMDKEtPEA57nfnQ7U8QNHJ8ZIbPT1AWN/ffx3FPUBDus0bP00+QAjrBNJ11T5AIYRlDLddP0Dk0FieDKg/QASLvlwHGEBAwDM4TP9bQEC3e1jW6J9AQDfg9LS+40BAy6pko3snQUDSNexeGmtBQFEFKKeVrkFAf6t3PujxQUDmcGjqDDVCQKO3H3T+d0JAyhHFqLe6QkCKAuxZM/1CQCli/V1sP0NAnlygkF2BQ0DvAiPTAcNDQDxn4gxUBERAozuyK09FREAb7EMk7oVEQH8rjfIrxkRA9+stmgMGRUAXu9UmcEVFQAd6qKxshEVAGWqiSPTCRUA5hvsgAgFGQMIhimWRPkZALMUkUJ17RkBLQQMlIbhGQKPxHjMY9EZAoiaS1H0vR0C8N9ZW/UpHQFOFsUgchUdA/5FctJ2+R0AWWMElffdHQLryYzW2L0hA4Mi7iERnSEA5uovSI55IQBBHOdNP1EhAUawiWcQJSUDc7PNAfT5JQJrB+nV2cklAqGl58qulSUAdVPi/GdhJQBKdlve7CUpAi1dZwo46SkAVnnlZjmpKQP5jsQa3mUpAEAGHJAXISkD4cZcedfVKQHJH33EDIktAjz4CraxNS0BmfJFwbXhLQLdnUG9CoktADBt4bijLS0AEavlFHPNLQJx0veAaGkxASsPkPCFATEAB5wRsLGVMQCKYZJM5iUxAmk827EWsTECfdQ5HUK9MQCWbO/4/0ExAGHAxkCjwTEALyfaIBw9NQE8TN4naLE1A6vRyRp9JTUDtVS+LU2VNQC/PIjf1f01AcXphP4KZTUAyIIeu+LFNQGq/36RWyU1A0muOWJrfTUApf7IVwvRNQFIaiz7MCE5AL/OYS7cbTkAtbL7LgS1OQMDyXWQqPk5AE6J20a9NTkBuJ7/lEFxOQNXlvopMaU5AulblwGF1TkCRpZ+fT4BOQEuEbFUVik5A/zbuJ7KSTkDs1PpzJZpOQG69qq1uoE5AbT9lYI2lTkAQcusugalOQJA9YdNJrE5AP5NUH+etTkAEdjt0vo9OQO59SBfyjk5A22zV1PuMTkAzLDjd24lOQEs76XeShU5ARYV/AyCATkB4cKr1hHlOQEYnKtvBcU5AlBrGV9doTkAcvkEmxl5OQBR/TxiPU05AvvWBFjNHTkCsUjsgszlOQIcIm0sQK05Ak7NpxUsbTkD+PwPRZgpOQH9QP8hi+E1AquZXG0HlTUDOTs5QA9FNQAtRTgWru01AwKmP6zmlTUBWyzXMsY1NQMfrrYUUdU1APmALDGRbTUBpSeJookBNQDaTILvRJE1A1UrlNvQHTUD1TVYlDOpMQHBWdOQby0xAmWXt5iWrTEA2xbqxtmtMQGmjyMyoSUxAKU63Z54mTEB3AWBHmgJMQDAz/0Of3UtAMv78SLC3S0DiFLRU0JBLQE8/N3gCaUtAGGkV10lAS0B8QxynqRZLQBqAGTAl7EpA/6iay7/ASkDAmqvkfJRKQImlk/dfZ0pAFVqRkWw5SkC9B5VQpgpKQMnw+eIQ20lAZjo+B7CqSUC/nbmLh3lJQLXfUk6bR0lA/RQ0PO8USUBfuH1Rh+FIQPqY+JhnrUhAkqbGK5R4SEDwoRIxEUNIQJS3vt3iDEhA9AoSdA3WR0CcOGVDlZ5HQLzVzad+ZkdAjvPICc4tR0BcMG51+NVGQLtfwa0LnEZA5Q250ZNhRkCR/Mx5lSZGQN/m00gV60VAzg2o6xevRUDpBssYonJFQCjUCJC4NUVA2EsaGmD4RECd10aInbpEQKGRBbR1fERA9cadfu09REBo5sbQCf9DQAzjR5rPv0NAoBGW0UOAQ0BKiHNza0BDQPoHjYJLAENA4nYXB+m/QkB582wOSX9CQJyHqapwPkJASYNH8mT9QUCMhrv/KrxBQFJCEPHHekFApveB50A5QUAmvRkHm/dAQFOSSHbbtUBAdEiCXQd0QEDVSNjmIzJAQDKAKHts4D9A1mylG4dcP0Dkq5GKDps+QEhwA1AHFz5AKypHBBiTPUByA1QCSw89QN6nLKKqizxAKqETOEEIPEDvF8ATGYU7QBQIk388AjtAhPfMv7V/OkD6PcQRj/05QJXsG6vSezlA6WP7uIr6OEBPp0ZfwXk4QBB817eA+TdAD2O30dJ5N0Cae1qwwfo2QOld20pXfDZA0/s3i53+NUA1lo9NnoE1QH/VYV9jBTVArhPPfvaJNEAo5tlZYQ80QIr1qY2tlTNAszHQpeQcM0AecIwbEKUyQG6CFFU5LjJAN9PcpGm4MUDGluJIqkMxQJKd92kE0DBA/dUPG4FdMECZhyPUQVwvQFTa+juiey5AaI44OYOdLUAcWU099sEsQNGX1oUM6StAKHFNG9cSK0BgRLrPZj8qQB1+bD3MbilAu+m2xRehKEDnlbCPWdYnQB5j+oahDidAUFKJWv9JJkCoqXV7goglQEkFzxs6yiRAbWl1LTUPJEAWa/dgglcjQDiEdSQwoyJA6aeKokzyIUDhKjrB5UQhQDIU4yAJmyBArtNxNojpH0CuGISER6QeQMNot75pZh1A3EmH5AcwHED6R09gOgEbQJiXdQUZ2hlAiIuhDru6GEBRAP4bN6MXQALehzGjkxZAxNBotRSMFUA8Wl3zcZMTQL5uV1aBmxJAyGSTCd+rEUDdALD6ncQQQNx1fd6gyw9Af6TLBhAfDkD4kh9Rq4MMQKLBUEiT+QpAAEbOHOeACUASM0+ixBkIQIR2nk1IxAZAlE+CMo2ABUDxgr8BrU4EQPRsOAfALgNAABIoKN0gAkDxSnnhGSUBQJgpOkaKOwBAcl9X/IHI/j+O4duInj79PwhqkcyJ2fs/AGUhhGCZ+j9m3VKMPH75P5qyR+A0iPg/5l3zl1239z8BYcvmxwv3P+VysRqChfY/13sXm5ck9j98bV3oEOn1P43/aJvz0vU/RVV3ZULi9T8=", "dtype": "f8" } }, @@ -3934,7 +3940,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3950,7 +3956,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -3983,7 +3989,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -4001,7 +4007,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -4017,7 +4023,7 @@ "dtype": "f8" }, "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -4870,4 +4876,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/python/gtsam/examples/README.md b/python/gtsam/examples/README.md index be160f8475..73ad0bbf02 100644 --- a/python/gtsam/examples/README.md +++ b/python/gtsam/examples/README.md @@ -2,15 +2,15 @@ | C++ Example Name | Ported | |-------------------------------------------------------|--------| -| CameraResectioning | :heavy_check_mark: | +| [CameraResectioning](CameraResectioning.ipynb) | :heavy_check_mark: | | CombinedImuFactorsExample | :heavy_check_mark: | -| CreateSFMExampleData | :heavy_check_mark: | -| DiscreteBayesNetExample | :heavy_check_mark: | +| [CreateSFMExampleData](CreateSFMExampleData.ipynb) | :heavy_check_mark: | +| [DiscreteBayesNetExample](DiscreteBayesNetExample.ipynb) | :heavy_check_mark: | | DiscreteBayesNet_FG | none of the required discrete functionality is exposed through Python | -| easyPoint2KalmanFilter | ExtendedKalmanFilter not yet exposed through Python | -| elaboratePoint2KalmanFilter | GaussianSequentialSolver not yet exposed through Python | -| FisheyeExample | :heavy_check_mark: | -| HMMExample | :heavy_check_mark: | +| [easyPoint2KalmanFilter](easyPoint2KalmanFilter.ipynb) | ExtendedKalmanFilter not yet exposed through Python | +| [elaboratePoint2KalmanFilter](elaboratePoint2KalmanFilter.ipynb) | GaussianSequentialSolver not yet exposed through Python | +| [FisheyeExample](FisheyeExample.ipynb) | :heavy_check_mark: | +| [HMMExample](HMMExample.ipynb) | :heavy_check_mark: | | ImuFactorsExample2 | :heavy_check_mark: | | ImuFactorsExample | | | IMUKittiExampleGPS | :heavy_check_mark: | @@ -20,22 +20,22 @@ | LocalizationExample | :heavy_check_mark: | | METISOrderingExample | | | OdometryExample | :heavy_check_mark: | -| PlanarSLAMExample | :heavy_check_mark: | -| Pose2SLAMExample | :heavy_check_mark: | +| [PlanarSLAMExample](PlanarSLAMExample.ipynb) | :heavy_check_mark: | +| [Pose2SLAMExample](Pose2SLAMExample.ipynb) | :heavy_check_mark: | | Pose2SLAMExampleExpressions | ExpressionFactorGraph not yet exposed through Python | | Pose2SLAMExample_g2o | :heavy_check_mark: | | Pose2SLAMExample_graph | :heavy_check_mark: | | Pose2SLAMExample_graphviz | :heavy_check_mark: | | Pose2SLAMExample_lago | lago not yet exposed through Python | -| Pose2SLAMStressTest | :heavy_check_mark: | -| Pose2SLAMwSPCG | :heavy_check_mark: | +| [Pose2SLAMStressTest](Pose2SLAMStressTest.ipynb) | :heavy_check_mark: | +| [Pose2SLAMwSPCG](Pose2SLAMwSPCG.ipynb) | :heavy_check_mark: | | Pose3Localization | | | Pose3SLAMExample_changeKeys | | | Pose3SLAMExampleExpressions_BearingRangeWithTransform | | | Pose3SLAMExample_g2o | :heavy_check_mark: | | Pose3SLAMExample_initializePose3Chordal | :heavy_check_mark: | | Pose3SLAMExample_initializePose3Gradient | | -| RangeISAMExample_plaza2 | :heavy_check_mark: | +| [RangeISAMExample_plaza2](RangeISAMExample_plaza2.ipynb) | :heavy_check_mark: | | SelfCalibrationExample | :heavy_check_mark: | | SFMdata | :heavy_check_mark: | | SFMExample_bal_COLAMD_METIS | | @@ -48,8 +48,8 @@ | ShonanAveragingCLI | :heavy_check_mark: | | SimpleRotation | :heavy_check_mark: | | SolverComparer | | -| StereoVOExample | :heavy_check_mark: | -| StereoVOExample_large | :heavy_check_mark: | +| [StereoVOExample](StereoVOExample.ipynb) | :heavy_check_mark: | +| [StereoVOExample_large](StereoVOExample_large.ipynb) | :heavy_check_mark: | | TimeTBB | | | UGM_chain | discrete functionality not yet exposed | | UGM_small | discrete functionality not yet exposed | @@ -57,8 +57,29 @@ | VisualISAMExample | :heavy_check_mark: | Extra Examples (with no C++ equivalent) +- [FitBasisExample](FitBasisExample.ipynb) - DogLegOptimizerExample - GPSFactorExample - PlanarManipulatorExample - PreintegrationExample - SFMData + +Additional Notebook Examples + +- [BearingRange3DExample](BearingRange3DExample.ipynb) +- [DiscreteBayesTree](DiscreteBayesTree.ipynb) +- [DiscreteMotionModel](DiscreteMotionModel.ipynb) +- [DiscreteSwitching](DiscreteSwitching.ipynb) +- [EKF_SLAM](EKF_SLAM.ipynb) +- [EqF](EqF.ipynb) +- [Gal3ImuASVExample](Gal3ImuASVExample.ipynb) +- [Gal3ImuExample](Gal3ImuExample.ipynb) +- [Gal3ImuNEESReset](Gal3ImuNEESReset.ipynb) +- [LQRExample](LQRExample.ipynb) +- [NavStateImuASVExample](NavStateImuASVExample.ipynb) +- [NavStateImuExample](NavStateImuExample.ipynb) +- [NonlinearEqualityExample](NonlinearEqualityExample.ipynb) +- [RangeSLAMExample_plaza2](RangeSLAMExample_plaza2.ipynb) +- [SL4SLAMExample](SL4SLAMExample.ipynb) +- [SinglePointPositioningExample](SinglePointPositioningExample.ipynb) +- [iLQRExample](iLQRExample.ipynb) diff --git a/python/gtsam/examples/SinglePointPositioningExample.ipynb b/python/gtsam/examples/SinglePointPositioningExample.ipynb new file mode 100644 index 0000000000..a216f9e749 --- /dev/null +++ b/python/gtsam/examples/SinglePointPositioningExample.ipynb @@ -0,0 +1,270 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# GNSS Single Point Positioning with Factor Graphs\n", + "\n", + "\"Open\n", + "\n", + "## Overview\n", + "Global Navigation Satellite Systems (GNSS) are space-based systems that provide precise positioning, navigation, and timing (PNT) information to users anywhere on or near the Earth. GPS (Global Positioning System), developed and operated by the United States, is the most widely used GNSS, but it is part of a broader family that also includes Russia’s GLONASS, Europe’s Galileo, and China’s BeiDou.\n", + "\n", + "GNSS works by measuring the travel time of radio signals transmitted from multiple satellites to a receiver on the ground. By combining these measurements with accurate satellite orbit and clock information, a receiver can determine its position, velocity, and time with high accuracy. Modern GNSS applications range from everyday uses such as smartphone navigation and time synchronization to advanced scientific, aviation, maritime, and geodetic applications requiring centimeter-level precision.\n", + "\n", + "GNSS positioning problems can be encoded as factor graphs in GTSAM; this notebook shows an example of identifying a GNSS receiver's position using pseudoranges from a [RINEX file](https://en.wikipedia.org/wiki/RINEX)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "source": [ + "GTSAM Copyright 2010-2026, Georgia Tech Research Corporation,\n", + "Atlanta, Georgia 30332-0415\n", + "All Rights Reserved\n", + "\n", + "Authors: Frank Dellaert, et al. (see THANKS for the full author list)\n", + "\n", + "See LICENSE for the license information" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "We'll need to install a couple python packages to help with today's example. We'll be using [python bindings](https://github.com/IPNL-POLYU/pyrtklib) for the [RTKLIB library](https://github.com/tomojitakasu/RTKLIB) to parse RINEX files from an example receiver source. Numpy is also installed here for easy array manipulation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + " %pip install --quiet pyrtklib numpy gtsam-develop pyproj\n", + "except ImportError:\n", + " pass\n", + "\n", + "\n", + "import gnss_utils\n", + "import tempfile\n", + "import urllib.request\n", + "import gzip\n", + "from pathlib import Path\n", + "import shutil\n", + "\n", + "import numpy as np\n", + "from pyproj import Transformer\n", + "import pyrtklib as rtklib\n", + "\n", + "import gtsam\n", + "from gtsam.symbol_shorthand import B, X\n", + "\n", + "# Create a transformer from ECEF (EPSG:4978) to WGS84 LLA (EPSG:4326)\n", + "ecef2lla = Transformer.from_crs(\"epsg:4978\", \"epsg:4326\", always_xy=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Premise\n", + "Single-point positioning (SPP) is the most basic GNSS positioning technique, in which a receiver determines its position using pseudorange measurements from multiple satellites and broadcast satellite orbit and clock information. It requires only a single receiver and does not rely on external corrections or reference stations, making it simple and widely accessible. While SPP typically provides meter-level accuracy, its performance is limited by errors such as satellite clock and orbit uncertainties, ionospheric and tropospheric delays, and measurement noise.\n", + "\n", + "We'll be looking at a receiver mounted on top of an FAA air traffic control center; [ZOA1 in Fremont, California](https://geodesy.noaa.gov/CORS/ncn_station_pages/index.html?stationID=ZOA1). It records pseudorange measurements 24/7 as part of a nationwide NOAA Continuously Operating Reference Stations (CORS) network that provides high-accuracy positioning data for geodesy, surveying, and navigation applications. Data from the CORS network can be accessed through the [NOAA CORS Network (NCN) data portal](https://geodesy.noaa.gov/CORS/data.shtml), where we'll download ZOA1's observation and navigation files for January 18th, 2026." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "zoa1_data = gnss_utils.loadCORSRINEX([\n", + " \"https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/018/brdc0180.26n.gz\",\n", + " \"https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/018/zoa1/zoa10180.26o.gz\"\n", + "])\n", + "print(zoa1_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compute Satellite Positions\n", + "Satellite positions must be computed first before receiver position can be solved. GNSS broadcast ephemerides are orbit and clock parameters transmitted directly by navigation satellites as part of their navigation message. They allow receivers to compute satellite positions and clock corrections in real time using a simplified orbital model. While readily available and sufficient for standard navigation, broadcast ephemerides are less accurate than precise ephemerides due to prediction errors and limited modeling of perturbations.\n", + "\n", + "The `brdc0180.26n` RINEX file contains orbital parameters we need to compute satellite positions. We won't cover how orbits are stored and modeled in the RINEX files, but you can check out the [RTCM website](https://www.rtcm.org/rtcm-standards) for more information. For now, we'll simply have [RTKLIB's `satposs()` function](https://github.com/tomojitakasu/RTKLIB/blob/71db0ffa0d9735697c6adfd06fdf766d0e5ce807/src/ephemeris.c#L718) do it for us." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "zoa1_sat_pos = zoa1_data.computeSatelliteOrbits(zoa1_data.obs.data[0].time)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solve Receiver Position and Time\n", + "Finally! We're ready for factor graphs. Using the `PseudorangeFactor`, we can build a simple system that estimates receiver clock bias and [3D ECEF](https://en.wikipedia.org/wiki/Earth-centered,_Earth-fixed_coordinate_system) position. The graph topology is fairly straight-forward: One node for clock bias, another node for 3D position, all connected to a series of psuedorange factors that encapsulates satellite positions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prepare factor graph:\n", + "cb_key = B(0) # Receiver clock bias variable key.\n", + "pos_key = X(0) # Receiver position variable key.\n", + "nm = gtsam.noiseModel.Diagonal.Sigmas(np.array([1.0]))\n", + "graph = gtsam.NonlinearFactorGraph()\n", + "\n", + "# Add a PseudorangeFactor for each observation:\n", + "for obsd, sat_bias, sat_pos, pseudorange in gnss_utils.iterateObservations(zoa1_data, zoa1_sat_pos, n=4):\n", + " graph.add(\n", + " gtsam.PseudorangeFactor(pos_key, cb_key, pseudorange, sat_pos, sat_bias, nm)\n", + " )\n", + " \n", + " print(f\"=== Satellite {obsd.sat} ===\")\n", + " print(f\"Receiver pseudorange: {pseudorange} meters\")\n", + " print(f\"Observation time (unixtime): {rtklib.time_str(obsd.time, 3)} ({obsd.time.time})\")\n", + " print(f\"Satellite position (ECEF): {1e-3*sat_pos} km\")\n", + " print(f\"Satellite clock drift: bias {sat_bias} seconds\")\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We initialize receiver position at origin, and then use a LM solver to optimize the system." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Solve the system:\n", + "initial_values = gtsam.Values()\n", + "initial_values.insert(cb_key, 0.0)\n", + "initial_values.insert(pos_key, np.zeros(3))\n", + "result = gtsam.LevenbergMarquardtOptimizer(graph, initial_values).optimize()\n", + "\n", + "# Process the results:\n", + "clock_bias = result.atDouble(cb_key)\n", + "receiver_position = result.atVector(pos_key)\n", + "print(f\"Final clock bias {clock_bias} seconds and receiver position {receiver_position} (ECEF meters)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nice! We see that the solver converged at a reasonable solution. ECEF is difficult to visualize, however. So we'll convert the result to geodetic coordinates and plot it on a map:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert coordinates coordinates (latitude, longitude)\n", + "lon, lat, alt = ecef2lla.transform(receiver_position[0], receiver_position[1], receiver_position[2])\n", + "print(f\"Latitude: {lat} degrees\")\n", + "print(f\"Longitude: {lon} degrees\")\n", + "print(f\"Altitude: {alt} meters\")\n", + "\n", + "gnss_utils.plotMap(lat, lon)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Validate Results\n", + "Our results appear to be roughly in the right place, but CORS stations actually provide ground-truth coordinates we can use as a measure of accuracy in our solutions. ZOA1's full precision-surveyed coordinates are [published in their data portal](https://noaa-cors-pds.s3.amazonaws.com/coord/coord_20/zoa1_20.coord.txt), but we'll examine a just a snippet copied here:\n", + "```\n", + "| ITRF2020 POSITION (EPOCH 2020.0) |\n", + "| Computed in Apr 2025 using data through gpswk 2237. |\n", + "| X = -2684436.824 m latitude = 37 32 34.99617 N |\n", + "| Y = -4293336.957 m longitude = 122 00 57.42005 W |\n", + "| Z = 3865351.638 m ellipsoid height = -3.960 m |\n", + "```\n", + "\n", + "We can compute a simple error metric by subtracting the two coordinates as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ground_truth = np.array([-2684436.824, -4293336.957, 3865351.638])\n", + "error = ground_truth - receiver_position\n", + "print(f\"Total positioning error: {np.linalg.norm(error)} meters\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusions\n", + "29 meters of error puts us in the same building as the receiver, which is a good starting point for simple positioning. As mentioned above, however, decades of advancements have vastly improved GNSS positioning accuracy down to sub-meter or even centimeter-scale precision and error. The simple `PseudorangeFactor` does not account for atmospheric effects, carrier-phase measurements, nor differential GNSS corrections. So there's a lot more potential for improvement, but this introductory example provides a foundation for expanding GNSS measurements into the broader GTSAM ecosystem." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sources\n", + "- [PseudorangeFactor.h](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/PseudorangeFactor.h)\n", + "- [PseudorangeFactor.cpp](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/PseudorangeFactor.cpp)\n", + "- [PseudorangeFactor.ipynb](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/doc/PseudorangeFactor.ipynb)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/python/gtsam/examples/gnss_utils.py b/python/gtsam/examples/gnss_utils.py new file mode 100644 index 0000000000..b81ffedb2b --- /dev/null +++ b/python/gtsam/examples/gnss_utils.py @@ -0,0 +1,139 @@ +""" +Utility functions for processing and manipulating GNSS data. + +This module wraps RTKLIB functionality to load and manipulate +GNSS observation and navigation files from RINEX-compatible +receivers. + +Author: Sammy Guo +Date: 2026-01-28 +""" + +from dataclasses import dataclass +import gzip +from pathlib import Path +import shutil +import tempfile +import urllib.request + +from IPython.display import IFrame +import numpy as np +import pyrtklib as rtklib + + +@dataclass +class SatellitePositions: + n: int # Number of observations. + rs: rtklib.Arr1Ddouble # Satellite positions and velocities: + # rs [(0:2)+i*6] = obs[i] sat position {x,y,z} (m) + # rs [(3:5)+i*6] = obs[i] sat velocity {vx,vy,vz} (m/s) + dts: rtklib.Arr1Ddouble # Satellite clock drift: + # dts[(0:1)+i*2] = obs[i] sat clock {bias,drift} (s|s/s) + var: rtklib.Arr1Ddouble # Satellite position and clock variances: + # var[i] = obs[i] sat position and clock error variance (m^2) + svh: rtklib.Arr1Dint # Satellite health flag (-1:correction not available): + # svh[i] = obs[i] sat health flag + + def __init__(self, n: int): + self.n = n + self.rs = rtklib.Arr1Ddouble(6*n) + self.dts = rtklib.Arr1Ddouble(2*n) + self.var = rtklib.Arr1Ddouble(1*n) + self.svh = rtklib.Arr1Dint(1*n) + + def satPosition(self, i: int) -> np.ndarray: + return np.array([ + self.rs[6*i+0], + self.rs[6*i+1], + self.rs[6*i+2] + ]) + + def satClockBias(self, i: int) -> float: + return self.dts[2*i+0] + + def satClockDrift(self, i: int) -> float: + return self.dts[2*i+1] + + +@dataclass +class RINEXData: + obs: rtklib.obs_t + nav: rtklib.nav_t + sta: rtklib.sta_t + + def __init__(self): + self.obs = rtklib.obs_t() + self.nav = rtklib.nav_t() + self.sta = rtklib.sta_t() + + def __str__(self): + return f"Found {self.obs.n} observations\nFound {self.nav.n} navigation messages" + + def loadRINEX(self, path: str) -> int: + return rtklib.readrnx(path, 1, "", self.obs, self.nav, self.sta) + + def computeSatelliteOrbits(self, teph: rtklib.gtime_t) -> SatellitePositions: + result = SatellitePositions(self.obs.n) + rtklib.satposs( + teph, # gtime_t teph I time to select ephemeris (gpst) + self.obs.data.ptr, # obsd_t *obs I observation data + self.obs.n, # int n I number of observation data + self.nav, # nav_t *nav I navigation data + 0, # int ephopt I ephemeris option (EPHOPT_???) (EPHOPT_BRDC == 0) + result.rs, # double *rs O satellite positions and velocities (ecef) + result.dts, # double *dts O satellite clocks + result.var, # double *var O sat position and clock error variances (m^2) + result.svh # int *svh O sat health flag (-1:correction not available) + ) + return result + + +def loadCORSRINEX(url_paths: list[str]) -> RINEXData: + """Downloads and parses a list of URLs from CORS online dataset. + """ + # Create a temporary directory (auto-deleted when closed): + result = RINEXData() + for p in url_paths: + with tempfile.TemporaryDirectory() as tmpdir: + tmpdir = Path(tmpdir) + + compressed_file = tmpdir / Path(p).name + uncompressed_file = tmpdir / Path(p).stem + + # Download files using built-in HTTP library: + with urllib.request.urlopen(p) as response, open(compressed_file, "wb") as f: + f.write(response.read()) + + # Extract files: + with gzip.open(compressed_file, "rb") as gz, open(uncompressed_file, "wb") as out: + shutil.copyfileobj(gz, out) + + # Parse and load data: + load_status: int = result.loadRINEX(str(uncompressed_file)) + assert load_status == 1, f"Unable to load file {p}" + return result + +def plotMap(lat, lon): + osm_url = f"https://www.openstreetmap.org/export/embed.html?bbox={lon-0.01}%2C{lat-0.01}%2C{lon+0.01}%2C{lat+0.01}&layer=map&marker={lat}%2C{lon}" + return IFrame(osm_url, width=700, height=500) + +def iterateObservations(recv_data: RINEXData, sat_positions: SatellitePositions, pr_code: int = rtklib.CODE_L1C, n: int = -1): + for i in range(n): + obsd = recv_data.obs.data[i] + sat_bias = sat_positions.satClockBias(i) + sat_pos = sat_positions.satPosition(i) + + # Skip this observation if sat positioning failed: + if np.linalg.norm(sat_pos) < 1.0: + continue + + # Identify pseudorange code CODE_L1C: + for j, code in enumerate(obsd.code): + if code == pr_code: + pseudorange = obsd.P[j] + break + else: + # If no CODE_L1C pseudorange found, skip this observation: + continue + + yield obsd, sat_bias, sat_pos, pseudorange \ No newline at end of file diff --git a/python/gtsam/examples/images/dpr_fg.jpg b/python/gtsam/examples/images/dpr_fg.jpg new file mode 100644 index 0000000000..8b3bf32670 Binary files /dev/null and b/python/gtsam/examples/images/dpr_fg.jpg differ diff --git a/python/gtsam/gtsam.tpl b/python/gtsam/gtsam.tpl index 6876b4ab45..902b676893 100644 --- a/python/gtsam/gtsam.tpl +++ b/python/gtsam/gtsam.tpl @@ -22,7 +22,9 @@ // These are the included headers listed in `gtsam.i` {includes} +#if GTSAM_ENABLE_BOOST_SERIALIZATION #include +#endif // Export classes for serialization {boost_class_export} @@ -47,4 +49,3 @@ namespace py = pybind11; {wrapped_namespace} }} - diff --git a/python/gtsam/tests/test_ExtendedPose3.py b/python/gtsam/tests/test_ExtendedPose3.py new file mode 100644 index 0000000000..a1f8523a44 --- /dev/null +++ b/python/gtsam/tests/test_ExtendedPose3.py @@ -0,0 +1,110 @@ +""" +GTSAM Copyright 2010-2019, Georgia Tech Research Corporation, +Atlanta, Georgia 30332-0415 +All Rights Reserved + +See LICENSE for the license information + +ExtendedPose3 wrapper unit tests. +""" + +import unittest + +import numpy as np + +import gtsam +from gtsam import Rot3 +from gtsam.utils.test_case import GtsamTestCase + + +class TestExtendedPose3(GtsamTestCase): + """Test wrapped ExtendedPose3 static instantiations.""" + + @staticmethod + def class_for_k(k: int): + return getattr(gtsam, f"ExtendedPose3{k}") + + def test_constructors_static_k(self): + """All requested static-K classes are wrapped and default-constructible.""" + for k in (2, 3, 4, 6): + cls = self.class_for_k(k) + pose = cls() + self.assertEqual(pose.k(), k) + self.gtsamAssertEquals(pose, cls.Identity(), 1e-12) + + def test_k6_lie_group_and_matrix_lie_group(self): + """Test selected MatrixLieGroup operations on K=6.""" + cls = self.class_for_k(6) + + xi = np.array([ + 0.11, -0.07, 0.05, + 0.30, -0.40, 0.10, + -0.20, 0.60, -0.50, + 0.70, -0.10, 0.20, + -0.40, 0.30, 0.80, + 0.50, -0.20, -0.30, + 0.10, 0.20, -0.60, + ]) + yi = np.array([ + -0.06, 0.04, 0.02, + 0.10, -0.15, 0.05, + -0.12, 0.18, 0.07, + 0.22, -0.09, 0.03, + -0.14, 0.11, 0.08, + 0.06, 0.13, -0.17, + -0.05, 0.09, 0.04, + ]) + + hat = cls.Hat(xi) + np.testing.assert_allclose(cls.Vee(hat), xi, atol=1e-9) + + p = cls.Expmap(xi) + q = cls.Expmap(yi) + np.testing.assert_allclose(cls.Logmap(p), xi, atol=1e-9) + + composed = p * q + np.testing.assert_allclose(composed.matrix(), p.matrix() @ q.matrix(), atol=1e-9) + self.gtsamAssertEquals(composed, p.compose(q), 1e-9) + self.gtsamAssertEquals(p.between(q), p.inverse().compose(q), 1e-9) + self.gtsamAssertEquals(p.inverse() * p, cls.Identity(), 1e-9) + + self.assertEqual(cls.Dim(), 21) + self.assertEqual(p.dim(), 21) + self.assertEqual(p.k(), 6) + self.assertEqual(p.vec().shape[0], 81) + + def test_k6_constructor_with_components(self): + """Construct K=6 from (Rot3, x) and access x(i)/xMatrix().""" + cls = self.class_for_k(6) + x = np.array([ + [1.0, 4.0, -1.0, 0.5, 2.1, -0.3], + [2.0, 5.0, 0.5, -1.2, 3.3, 0.8], + [3.0, 6.0, 2.0, 1.4, -2.7, 0.6], + ]) + pose = cls(Rot3(), x) + + np.testing.assert_allclose(pose.xMatrix(), x, atol=1e-12) + for i in range(6): + np.testing.assert_allclose(pose.x(i), x[:, i], atol=1e-12) + + @unittest.skipUnless(hasattr(gtsam.ExtendedPose36, "serialize"), "Serialization not enabled") + def test_serialization_k6(self): + """Serialization works when boost serialization is enabled.""" + cls = self.class_for_k(6) + expected = cls.Expmap(np.array([ + 0.01, -0.02, 0.03, + 0.04, -0.05, 0.06, + 0.07, -0.08, 0.09, + -0.10, 0.11, -0.12, + 0.13, -0.14, 0.15, + -0.16, 0.17, -0.18, + 0.19, -0.20, 0.21, + ])) + actual = cls() + serialized = expected.serialize() + actual.deserialize(serialized) + self.gtsamAssertEquals(expected, actual, 1e-10) + + +if __name__ == "__main__": + unittest.main() diff --git a/python/gtsam/tests/test_Gal3.py b/python/gtsam/tests/test_Gal3.py new file mode 100644 index 0000000000..8b93de6ea4 --- /dev/null +++ b/python/gtsam/tests/test_Gal3.py @@ -0,0 +1,67 @@ +""" +GTSAM Copyright 2010-2019, Georgia Tech Research Corporation, +Atlanta, Georgia 30332-0415 +All Rights Reserved + +See LICENSE for the license information + +Gal3 unit tests. +""" + +import unittest + +import numpy as np +from gtsam.utils.test_case import GtsamTestCase +from gtsam.utils.numerical_derivative import ( + numericalDerivative21, + numericalDerivative22, +) + +import gtsam +from gtsam import Gal3, Point3, Rot3, Unit3 + + +class TestGal3(GtsamTestCase): + """Test selected Gal3 methods.""" + + def test_range_point_derivatives(self): + """Test Gal3 range to Point3 Jacobians.""" + state = Gal3( + Rot3.Rz(0.1), np.array([0.2, 0.3, 0.4]), np.array([0.5, 0.6, 0.7]), 0.8 + ) + point = Point3(1, 4, -4) + + jacobian_state = np.zeros((1, 10), order="F") + jacobian_point = np.zeros((1, 3), order="F") + state.range(point, jacobian_state, jacobian_point) + + jacobian_numerical_state = numericalDerivative21(Gal3.range, state, point) + jacobian_numerical_point = numericalDerivative22(Gal3.range, state, point) + self.gtsamAssertEquals(jacobian_state, jacobian_numerical_state) + self.gtsamAssertEquals(jacobian_point, jacobian_numerical_point) + + def test_bearing_point_derivatives(self): + """Test Gal3 bearing to Point3 Jacobians.""" + state = Gal3( + Rot3.Rz(0.1), np.array([0.2, 0.3, 0.4]), np.array([0.5, 0.6, 0.7]), 0.8 + ) + point = Point3(1, 4, -4) + + expected = Unit3( + gtsam.Pose3(state.rotation(), state.translation()).transformTo(point) + ) + actual = state.bearing(point) + self.gtsamAssertEquals(actual, expected, 1e-6) + + jacobian_state = np.zeros((2, 10), order="F") + jacobian_point = np.zeros((2, 3), order="F") + state.bearing(point, jacobian_state, jacobian_point) + + jacobian_numerical_state = numericalDerivative21(Gal3.bearing, state, point) + jacobian_numerical_point = numericalDerivative22(Gal3.bearing, state, point) + self.gtsamAssertEquals(jacobian_state, jacobian_numerical_state) + self.gtsamAssertEquals(jacobian_point, jacobian_numerical_point) + + +if __name__ == "__main__": + unittest.main() diff --git a/python/gtsam/tests/test_NavState.py b/python/gtsam/tests/test_NavState.py new file mode 100644 index 0000000000..cd5cdde940 --- /dev/null +++ b/python/gtsam/tests/test_NavState.py @@ -0,0 +1,68 @@ +""" +GTSAM Copyright 2010-2019, Georgia Tech Research Corporation, +Atlanta, Georgia 30332-0415 +All Rights Reserved + +See LICENSE for the license information + +NavState unit tests. +""" + +import unittest + +import numpy as np +from gtsam.utils.test_case import GtsamTestCase +from gtsam.utils.numerical_derivative import ( + numericalDerivative21, + numericalDerivative22, +) + +from gtsam import NavState, Point3, Rot3, Unit3 + + +class TestNavState(GtsamTestCase): + """Test selected NavState methods.""" + + def test_range_point_derivatives(self): + """Test NavState range to Point3 Jacobians.""" + state = NavState( + Rot3.Rodrigues(0.3, 0.2, 0.1), + Point3(3.5, -8.2, 4.2), + np.array([0.4, 0.5, 0.6]), + ) + point = Point3(1, 4, -4) + + jacobian_state = np.zeros((1, 9), order="F") + jacobian_point = np.zeros((1, 3), order="F") + state.range(point, jacobian_state, jacobian_point) + + jacobian_numerical_state = numericalDerivative21(NavState.range, state, point) + jacobian_numerical_point = numericalDerivative22(NavState.range, state, point) + self.gtsamAssertEquals(jacobian_state, jacobian_numerical_state) + self.gtsamAssertEquals(jacobian_point, jacobian_numerical_point) + + def test_bearing_point_derivatives(self): + """Test NavState bearing to Point3 Jacobians.""" + state = NavState( + Rot3.Rodrigues(0.3, 0.2, 0.1), + Point3(3.5, -8.2, 4.2), + np.array([0.4, 0.5, 0.6]), + ) + point = Point3(1, 4, -4) + + expected = Unit3(state.pose().transformTo(point)) + actual = state.bearing(point) + self.gtsamAssertEquals(actual, expected, 1e-6) + + jacobian_state = np.zeros((2, 9), order="F") + jacobian_point = np.zeros((2, 3), order="F") + state.bearing(point, jacobian_state, jacobian_point) + + jacobian_numerical_state = numericalDerivative21(NavState.bearing, state, point) + jacobian_numerical_point = numericalDerivative22(NavState.bearing, state, point) + self.gtsamAssertEquals(jacobian_state, jacobian_numerical_state) + self.gtsamAssertEquals(jacobian_point, jacobian_numerical_point) + + +if __name__ == "__main__": + unittest.main() diff --git a/python/gtsam/tests/test_Pose3.py b/python/gtsam/tests/test_Pose3.py index 5e34ba35bb..fc1b9ec9a8 100644 --- a/python/gtsam/tests/test_Pose3.py +++ b/python/gtsam/tests/test_Pose3.py @@ -16,7 +16,7 @@ from gtsam.utils.test_case import GtsamTestCase import gtsam -from gtsam import Point3, Pose3, Rot3 +from gtsam import Point3, Pose3, Rot3, Unit3 from gtsam.utils.numerical_derivative import numericalDerivative11, numericalDerivative21, numericalDerivative22 class TestPose3(GtsamTestCase): @@ -142,6 +142,59 @@ def test_range(self): # establish range is indeed sqrt2 self.assertEqual(math.sqrt(2.0), x1.range(pose=xl2)) + # test jacobians: pose to point + pose = Pose3(Rot3.Rodrigues(0.3, 0.2, 0.1), Point3(3.5, -8.2, 4.2)) + point = Point3(1, 4, -4) + jacobian_pose = np.zeros((1, 6), order='F') + jacobian_point = np.zeros((1, 3), order='F') + pose.range(point, jacobian_pose, jacobian_point) + jacobian_numerical_pose = numericalDerivative21(Pose3.range, pose, point) + jacobian_numerical_point = numericalDerivative22(Pose3.range, pose, point) + self.gtsamAssertEquals(jacobian_pose, jacobian_numerical_pose) + self.gtsamAssertEquals(jacobian_point, jacobian_numerical_point) + + # test jacobians: pose to pose + other = Pose3(Rot3.Rodrigues(-0.2, 0.3, 0.1), Point3(1, 2, 3)) + jacobian_self = np.zeros((1, 6), order='F') + jacobian_other = np.zeros((1, 6), order='F') + pose.range(other, jacobian_self, jacobian_other) + jacobian_numerical_self = numericalDerivative21(Pose3.range, pose, other) + jacobian_numerical_other = numericalDerivative22(Pose3.range, pose, other) + self.gtsamAssertEquals(jacobian_self, jacobian_numerical_self) + self.gtsamAssertEquals(jacobian_other, jacobian_numerical_other) + + def test_bearing(self): + """Test bearing method.""" + pose = Pose3(Rot3.Rodrigues(0.3, 0.2, 0.1), Point3(3.5, -8.2, 4.2)) + point = Point3(1, 4, -4) + + expected = Unit3(pose.transformTo(point)) + actual = pose.bearing(point) + self.gtsamAssertEquals(actual, expected, 1e-6) + + # test jacobians: pose to point + jacobian_pose = np.zeros((2, 6), order='F') + jacobian_point = np.zeros((2, 3), order='F') + pose.bearing(point, jacobian_pose, jacobian_point) + jacobian_numerical_pose = numericalDerivative21(Pose3.bearing, pose, point) + jacobian_numerical_point = numericalDerivative22(Pose3.bearing, pose, point) + self.gtsamAssertEquals(jacobian_pose, jacobian_numerical_pose) + self.gtsamAssertEquals(jacobian_point, jacobian_numerical_point) + + # test jacobians: pose to pose (orientation of other is ignored) + other = Pose3(Rot3.Rodrigues(-0.2, 0.3, 0.1), Point3(1, 2, 3)) + expected_pose = Unit3(pose.transformTo(other.translation())) + actual_pose = pose.bearing(other) + self.gtsamAssertEquals(actual_pose, expected_pose, 1e-6) + + jacobian_self = np.zeros((2, 6), order='F') + jacobian_other = np.zeros((2, 6), order='F') + pose.bearing(other, jacobian_self, jacobian_other) + jacobian_numerical_self = numericalDerivative21(Pose3.bearing, pose, other) + jacobian_numerical_other = numericalDerivative22(Pose3.bearing, pose, other) + self.gtsamAssertEquals(jacobian_self, jacobian_numerical_self) + self.gtsamAssertEquals(jacobian_other, jacobian_numerical_other) + def test_adjoint(self): """Test adjoint methods.""" T = Pose3() diff --git a/python/gtsam/tests/test_PseudorangeFactor.py b/python/gtsam/tests/test_PseudorangeFactor.py new file mode 100644 index 0000000000..6ad7778957 --- /dev/null +++ b/python/gtsam/tests/test_PseudorangeFactor.py @@ -0,0 +1,58 @@ +""" +GTSAM Copyright 2010-2026, Georgia Tech Research Corporation, +Atlanta, Georgia 30332-0415 +All Rights Reserved + +See LICENSE for the license information + +PseudorangeFactor python binding unit tests. +Author: Sammy Guo +""" +import unittest + +import numpy as np + +import gtsam +from gtsam.utils.test_case import GtsamTestCase + + +class TestPseudorangeFactor(GtsamTestCase): + def test_singularity(self): + pos = np.zeros(3) + values = gtsam.Values() + values.insert(0, pos) + values.insert(1, 0.0) + + model = gtsam.noiseModel.Unit.Create(1) + factor = gtsam.PseudorangeFactor(0, 1, 0.0, pos, 0.0, model) + self.assertEqual(factor.error(values), 0) + # test print: + factor.print("factor") + + def test_errors(self): + sat_pos = np.array([0.0, 0.0, 3.0]) + model = gtsam.noiseModel.Unit.Create(1) + factor = gtsam.PseudorangeFactor(0, 1, 4.0, sat_pos, 0.0, model) + error = factor.evaluateError(np.zeros(3), 0.0) + self.assertEqual(error[0], -1.0) + + def test_equality(self): + sat_pos = np.array([0.0, 0.0, 3.0]) + model = gtsam.noiseModel.Unit.Create(1) + factor1 = gtsam.PseudorangeFactor(0, 1, 4.0, sat_pos, 0.0, model) + factor2 = gtsam.PseudorangeFactor(2, 1, 4.0, sat_pos, 0.0, model) + factor3 = gtsam.PseudorangeFactor(0, 1, 40.0, sat_pos, 10.0, model) + self.assertTrue(factor1.equals(factor1, 1e-6)) + self.assertFalse(factor1.equals(factor2, 1e-6)) + self.assertTrue(factor1.equals(factor3, 1e99)) + + @unittest.skipUnless(hasattr(gtsam.PseudorangeFactor, "serialize"), "Serialization not enabled") + def test_serialization(self): + sat_pos = np.array([0.0, 0.0, 3.0]) + model = gtsam.noiseModel.Unit.Create(1) + factor = gtsam.PseudorangeFactor(0, 1, 4.0, sat_pos, 0.0, model) + factor.serialize() + + +if __name__ == "__main__": + unittest.main() diff --git a/python/gtsam/tests/test_ShonanAveraging.py b/python/gtsam/tests/test_ShonanAveraging.py index 5c36ad361b..82be2851a6 100644 --- a/python/gtsam/tests/test_ShonanAveraging.py +++ b/python/gtsam/tests/test_ShonanAveraging.py @@ -172,8 +172,8 @@ def test_constructorBetweenFactorPose2s(self) -> None: for (i1, i2) in edges } - lm_params = LevenbergMarquardtParams.CeresDefaults() - shonan_params = ShonanAveragingParameters2(lm_params) + lmParams = LevenbergMarquardtParams.CeresDefaults() + shonan_params = ShonanAveragingParameters2(lmParams) shonan_params.setUseHuber(False) shonan_params.setCertifyOptimality(True) diff --git a/python/gtsam/tests/test_TrajectoryAlignerSim3.py b/python/gtsam/tests/test_TrajectoryAlignerSim3.py new file mode 100644 index 0000000000..49c221bd8b --- /dev/null +++ b/python/gtsam/tests/test_TrajectoryAlignerSim3.py @@ -0,0 +1,90 @@ +""" +GTSAM Copyright 2010-2019, Georgia Tech Research Corporation, +Atlanta, Georgia 30332-0415 +All Rights Reserved + +See LICENSE for the license information + +Unit tests for TrajectoryAlignerSim3. +Author: Akshay Krishnan +""" +import unittest + +import gtsam +from gtsam.utils.test_case import GtsamTestCase + + +def make_parent_poses(): + return [ + gtsam.Pose3(), + gtsam.Pose3( + gtsam.Rot3.RzRyRx(0.15, -0.2, 0.1), gtsam.Point3(1.0, 0.1, 0.0) + ), + gtsam.Pose3( + gtsam.Rot3.RzRyRx(0.1, 0.05, -0.03), gtsam.Point3(2.0, 0.4, 0.1) + ), + ] + + +def make_measurements(poses, sigma=1e-3): + noise = gtsam.noiseModel.Isotropic.Sigma(6, sigma) + return [ + gtsam.UnaryMeasurementPose3(i, pose, noise) + for i, pose in enumerate(poses) + ] + + +def transform_poses(sim, poses): + return [sim.transformFrom(p) for p in poses] + + +class TestTrajectoryAlignerSim3(GtsamTestCase): + """Tests for TrajectoryAlignerSim3.""" + + def test_perfect_alignment_without_initial_sim(self): + parent = make_parent_poses() + gt_bSa = gtsam.Similarity3( + gtsam.Rot3.RzRyRx(0.2, -0.1, 0.05), + gtsam.Point3(0.3, -0.2, 0.1), + 1.4, + ) + child = transform_poses(gt_bSa, parent) + + aTi = make_measurements(parent) + bTi_all = [make_measurements(child)] + + aligner = gtsam.TrajectoryAlignerSim3(aTi, bTi_all) + result = aligner.solve() + + recovered = result.atSimilarity3(gtsam.Symbol("S", 0).key()) + self.assertTrue(gt_bSa.equals(recovered, 1e-6)) + + def test_noisy_alignment_with_initial_guess(self): + parent = make_parent_poses() + gt_bSa = gtsam.Similarity3( + gtsam.Rot3.RzRyRx(-0.15, 0.05, 0.08), + gtsam.Point3(-0.2, 0.15, 0.25), + 1.3, + ) + child = transform_poses(gt_bSa, parent) + + aTi = make_measurements(parent, sigma=1e-2) + bTi_all = [make_measurements(child, sigma=1e-2)] + + init_guess = gtsam.Similarity3( + gtsam.Rot3.RzRyRx(0.05, -0.04, 0.02), + gtsam.Point3(0.5, -0.3, 0.1), + 0.8, + ) + aligner = gtsam.TrajectoryAlignerSim3(aTi, bTi_all, [init_guess]) + result = aligner.solve() + + recovered = result.atSimilarity3(gtsam.Symbol("S", 0).key()) + self.assertTrue(gt_bSa.equals(recovered, 1e-2)) + + marginals = aligner.marginalize(result) + self.assertTrue(marginals.marginalInformation(gtsam.Symbol("S", 0).key()).size > 0) + + +if __name__ == "__main__": + unittest.main() diff --git a/python/gtsam/tests/test_TranslationRecovery.py b/python/gtsam/tests/test_TranslationRecovery.py index d8e061435d..fe9e531711 100644 --- a/python/gtsam/tests/test_TranslationRecovery.py +++ b/python/gtsam/tests/test_TranslationRecovery.py @@ -25,7 +25,7 @@ def SimulateMeasurements(gt_poses, graph_edges): Tb = gt_poses.atPose3(edge[1]).translation() measurements.append(gtsam.BinaryMeasurementUnit3( \ edge[0], edge[1], gtsam.Unit3(Tb - Ta), \ - gtsam.noiseModel.Isotropic.Sigma(3, 0.01))) + gtsam.noiseModel.Isotropic.Sigma(2, 0.01))) return measurements diff --git a/python/gtsam/tests/test_Utilities.py b/python/gtsam/tests/test_Utilities.py index 3dd472c75e..33d51ba120 100644 --- a/python/gtsam/tests/test_Utilities.py +++ b/python/gtsam/tests/test_Utilities.py @@ -17,7 +17,7 @@ import gtsam -class TestUtilites(GtsamTestCase): +class TestUtilities(GtsamTestCase): """Test various GTSAM utilities.""" def test_createKeyList(self): @@ -142,7 +142,7 @@ def test_perturbPoint2(self): values = gtsam.Values() values.insert(0, gtsam.Pose3()) values.insert(1, gtsam.Point2(1, 1)) - gtsam.utilities.perturbPoint2(values, 1.0) + gtsam.utilities.perturbPoint2(values, 1.0, 42) self.assertTrue( not np.allclose(values.atPoint2(1), gtsam.Point2(1, 1))) @@ -151,7 +151,7 @@ def test_perturbPose2(self): values = gtsam.Values() values.insert(0, gtsam.Pose2()) values.insert(1, gtsam.Point2(1, 1)) - gtsam.utilities.perturbPose2(values, 1, 1) + gtsam.utilities.perturbPose2(values, 1, 1, 42) self.assertTrue(values.atPose2(0) != gtsam.Pose2()) def test_perturbPoint3(self): @@ -160,9 +160,18 @@ def test_perturbPoint3(self): point3 = gtsam.Point3(0, 0, 0) values.insert(0, gtsam.Pose2()) values.insert(1, point3) - gtsam.utilities.perturbPoint3(values, 1) + gtsam.utilities.perturbPoint3(values, 1, 42) self.assertTrue(not np.allclose(values.atPoint3(1), point3)) + def test_perturbPose3(self): + """Test perturbPose3.""" + values = gtsam.Values() + pose3 = gtsam.Pose3() + values.insert(0, pose3) + values.insert(1, gtsam.Point2(1, 1)) + gtsam.utilities.perturbPose3(values, 1, 1, 42) + self.assertTrue(not values.atPose3(0).equals(pose3, 1e-9)) + def test_insertBackprojections(self): """Test insertBackprojections.""" values = gtsam.Values() diff --git a/python/gtsam/tests/test_backwards_compatibility.py b/python/gtsam/tests/test_backwards_compatibility.py index c6c7eadca0..a3d2cb2774 100644 --- a/python/gtsam/tests/test_backwards_compatibility.py +++ b/python/gtsam/tests/test_backwards_compatibility.py @@ -453,8 +453,8 @@ def test_constructorBetweenFactorPose2s(self) -> None: wTi_list[i2].inverse().compose(wTi_list[i1]).rotation() for (i1, i2) in edges} - lm_params = LevenbergMarquardtParams.CeresDefaults() - shonan_params = ShonanAveragingParameters2(lm_params) + lmParams = LevenbergMarquardtParams.CeresDefaults() + shonan_params = ShonanAveragingParameters2(lmParams) shonan_params.setUseHuber(False) shonan_params.setCertifyOptimality(True) diff --git a/python/gtsam/utils/numerical_derivative.py b/python/gtsam/utils/numerical_derivative.py index 3b52f5a5f8..68859d1ff3 100644 --- a/python/gtsam/utils/numerical_derivative.py +++ b/python/gtsam/utils/numerical_derivative.py @@ -35,8 +35,9 @@ def local(a: Y, b: Y) -> np.ndarray: raise TypeError(f"a {type(a)} b {type(b)}") if isinstance(a, np.ndarray): return b - a - if isinstance(a, (float, int)): - return np.ndarray([[b - a]]) # type:ignore + if isinstance(a, (float, int, np.floating, np.integer)): + # Represent scalar values as a 1D "tangent vector" of length 1. + return np.array([float(b) - float(a)]) # there is no common superclass for Y return a.localCoordinates(b) # type:ignore diff --git a/python/gtsam_unstable/gtsam_unstable.tpl b/python/gtsam_unstable/gtsam_unstable.tpl index 006ca7fc8f..23fc3924b7 100644 --- a/python/gtsam_unstable/gtsam_unstable.tpl +++ b/python/gtsam_unstable/gtsam_unstable.tpl @@ -18,7 +18,9 @@ // These are the included headers listed in `gtsam_unstable.i` {includes} +#if GTSAM_ENABLE_BOOST_SERIALIZATION #include +#endif {boost_class_export} @@ -39,4 +41,3 @@ PYBIND11_MODULE({module_name}, m_) {{ #include "python/gtsam_unstable/specializations/gtsam_unstable.h" }} - diff --git a/tests/testBoundingConstraint.cpp b/tests/testBoundingConstraint.cpp index fee406dd34..ebc9a67fff 100644 --- a/tests/testBoundingConstraint.cpp +++ b/tests/testBoundingConstraint.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -28,6 +29,12 @@ using namespace gtsam; static const double tol = 1e-5; +LevenbergMarquardtParams makeLmParams() { + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + return params; +} + SharedDiagonal soft_model2 = noiseModel::Unit::Create(2); SharedDiagonal soft_model2_alt = noiseModel::Isotropic::Sigma(2, 0.1); SharedDiagonal hard_model1 = noiseModel::Constrained::All(1); @@ -151,7 +158,9 @@ TEST( testBoundingConstraint, unary_simple_optimization1) { Values initValues; initValues.insert(x1, start_pt); - Values actual = LevenbergMarquardtOptimizer(graph, initValues).optimize(); + LevenbergMarquardtParams params = makeLmParams(); + Values actual = + LevenbergMarquardtOptimizer(graph, initValues, params).optimize(); Values expected; expected.insert(x1, goal_pt); CHECK(assert_equal(expected, actual, tol)); @@ -172,7 +181,9 @@ TEST( testBoundingConstraint, unary_simple_optimization2) { Values initValues; initValues.insert(key, start_pt); - Values actual = LevenbergMarquardtOptimizer(graph, initValues).optimize(); + LevenbergMarquardtParams params = makeLmParams(); + Values actual = + LevenbergMarquardtOptimizer(graph, initValues, params).optimize(); Values expected; expected.insert(key, goal_pt); CHECK(assert_equal(expected, actual, tol)); @@ -273,4 +284,3 @@ TEST( testBoundingConstraint, avoid_demo) { /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); } /* ************************************************************************* */ - diff --git a/tests/testExpressionFactor.cpp b/tests/testExpressionFactor.cpp index 845c28e5a5..9af3b6a375 100644 --- a/tests/testExpressionFactor.cpp +++ b/tests/testExpressionFactor.cpp @@ -499,7 +499,7 @@ TEST(Expression, testMultipleCompositions) { // Leaf, key = 1 // Leaf, key = 2 Expression sum1_(Combine(1, 2), v1_, v2_); - EXPECT((sum1_.keys() == std::set{1, 2})) + EXPECT((sum1_.keys() == KeySet{1, 2})) EXPECT_CORRECT_EXPRESSION_JACOBIANS(sum1_, values, fd_step, tolerance) // BinaryExpression(3,4) @@ -508,7 +508,7 @@ TEST(Expression, testMultipleCompositions) { // Leaf, key = 2 // Leaf, key = 1 Expression sum2_(Combine(3, 4), sum1_, v1_); - EXPECT((sum2_.keys() == std::set{1, 2})) + EXPECT((sum2_.keys() == KeySet{1, 2})) EXPECT_CORRECT_EXPRESSION_JACOBIANS(sum2_, values, fd_step, tolerance) // BinaryExpression(5,6) @@ -521,7 +521,7 @@ TEST(Expression, testMultipleCompositions) { // Leaf, key = 1 // Leaf, key = 2 Expression sum3_(Combine(5, 6), sum1_, sum2_); - EXPECT((sum3_.keys() == std::set{1, 2})) + EXPECT((sum3_.keys() == KeySet{1, 2})) EXPECT_CORRECT_EXPRESSION_JACOBIANS(sum3_, values, fd_step, tolerance) } @@ -550,19 +550,19 @@ TEST(Expression, testMultipleCompositions2) { Expression v3_(Key(3)); Expression sum1_(Combine(4,5), v1_, v2_); - EXPECT((sum1_.keys() == std::set{1, 2})) + EXPECT((sum1_.keys() == KeySet{1, 2})) EXPECT_CORRECT_EXPRESSION_JACOBIANS(sum1_, values, fd_step, tolerance) Expression sum2_(combine3, v1_, v2_, v3_); - EXPECT((sum2_.keys() == std::set{1, 2, 3})) + EXPECT((sum2_.keys() == KeySet{1, 2, 3})) EXPECT_CORRECT_EXPRESSION_JACOBIANS(sum2_, values, fd_step, tolerance) Expression sum3_(combine3, v3_, v2_, v1_); - EXPECT((sum3_.keys() == std::set{1, 2, 3})) + EXPECT((sum3_.keys() == KeySet{1, 2, 3})) EXPECT_CORRECT_EXPRESSION_JACOBIANS(sum3_, values, fd_step, tolerance) Expression sum4_(combine3, sum1_, sum2_, sum3_); - EXPECT((sum4_.keys() == std::set{1, 2, 3})) + EXPECT((sum4_.keys() == KeySet{1, 2, 3})) EXPECT_CORRECT_EXPRESSION_JACOBIANS(sum4_, values, fd_step, tolerance) } diff --git a/tests/testGaussianISAM2.cpp b/tests/testGaussianISAM2.cpp index e023cae1fe..77466a5cc7 100644 --- a/tests/testGaussianISAM2.cpp +++ b/tests/testGaussianISAM2.cpp @@ -1000,7 +1000,7 @@ class FixActiveFactor : public NoiseModelFactorN { public: FixActiveFactor(const gtsam::Key& key, const bool active) - : Base(nullptr, key), is_active_(active) {} + : Base(noiseModel::Unit::Create(2), key), is_active_(active) {} virtual bool active(const gtsam::Values &values) const override { return is_active_; diff --git a/tests/testGncOptimizer.cpp b/tests/testGncOptimizer.cpp index 4e0ebf516c..34a95dc69c 100644 --- a/tests/testGncOptimizer.cpp +++ b/tests/testGncOptimizer.cpp @@ -30,7 +30,10 @@ #include #include #include +#include #include +#include +#include #include #include @@ -212,6 +215,29 @@ TEST(GncOptimizer, updateMuTLS) { EXPECT_DOUBLES_EQUAL(gnc.updateMu(mu), mu * 1.4, tol); } +/* ************************************************************************* */ +TEST(GncOptimizer, updateMuTLSSuperLinear) { + // has to have Gaussian noise models ! + auto fg = example::createReallyNonlinearFactorGraph(); + + Point2 p0(3, 3); + Values initial; + initial.insert(X(1), p0); + + GncParams gncParams; + gncParams.setMuStep(4.0); + gncParams.setLossType(GncLossType::TLS); + gncParams.setScheduler(GncScheduler::SuperLinear); + auto gnc = GncOptimizer>(fg, initial, + gncParams); + + double mu = 0.25; + EXPECT_DOUBLES_EQUAL(gnc.updateMu(mu), 2.0, tol); + + mu = 5.0; + EXPECT_DOUBLES_EQUAL(gnc.updateMu(mu), 20.0, tol); +} + /* ************************************************************************* */ TEST(GncOptimizer, checkMuConvergence) { // has to have Gaussian noise models ! @@ -408,6 +434,31 @@ TEST(GncOptimizer, calculateWeightsTLS) { CHECK(assert_equal(weights_expected, weights_actual, tol)); } +/* ************************************************************************* */ +TEST(GncOptimizer, calculateWeightsTLSSuperLinear) { + auto fg = example::sharedNonRobustFactorGraphWithOutliers(); + + Point2 p0(0, 0); + Values initial; + initial.insert(X(1), p0); + + // we have 4 factors, 3 with zero errors (inliers), 1 with error + Vector weights_expected = Vector::Zero(4); + weights_expected[0] = 1.0; // zero error + weights_expected[1] = 1.0; // zero error + weights_expected[2] = 1.0; // zero error + weights_expected[3] = 0; // outliers + + GaussNewtonParams gnParams; + GncParams gncParams(gnParams); + gncParams.setLossType(GncLossType::TLS); + gncParams.setScheduler(GncScheduler::SuperLinear); + auto gnc = GncOptimizer>(fg, initial, gncParams); + double mu = 1.0; + Vector weights_actual = gnc.calculateWeights(initial, mu); + CHECK(assert_equal(weights_expected, weights_actual, tol)); +} + /* ************************************************************************* */ TEST(GncOptimizer, calculateWeightsTLS2) { @@ -477,6 +528,79 @@ TEST(GncOptimizer, calculateWeightsTLS2) { } } +/* ************************************************************************* */ +TEST(GncOptimizer, calculateWeightsTLSSuperLinear2) { + + // create values + Point2 x_val(0.0, 0.0); + Point2 x_prior(1.0, 0.0); + Values initial; + initial.insert(X(1), x_val); + + // create very simple factor graph with a single factor 0.5 * 1/sigma^2 * || x - [1;0] ||^2 + double sigma = 1; + SharedDiagonal noise = noiseModel::Diagonal::Sigmas(Vector2(sigma, sigma)); + NonlinearFactorGraph nfg; + nfg.add(PriorFactor(X(1), x_prior, noise)); + + // cost of the factor: + DOUBLES_EQUAL(0.5 * 1 / (sigma * sigma), nfg.error(initial), tol); + + // check the TLS weights are correct: CASE 1: residual below barcsq + { + // expected: + Vector weights_expected = Vector::Zero(1); + weights_expected[0] = 1.0; // inlier + // actual: + GaussNewtonParams gnParams; + GncParams gncParams(gnParams); + gncParams.setLossType(GncLossType::TLS); + gncParams.setScheduler(GncScheduler::SuperLinear); + auto gnc = GncOptimizer>(nfg, initial, + gncParams); + gnc.setInlierCostThresholds(0.51); // if inlier threshold is slightly larger than 0.5, then measurement is inlier + + double mu = 1e6; + Vector weights_actual = gnc.calculateWeights(initial, mu); + CHECK(assert_equal(weights_expected, weights_actual, tol)); + } + // check the TLS weights are correct: CASE 2: residual above barcsq + { + // expected: + Vector weights_expected = Vector::Zero(1); + weights_expected[0] = 0.0; // outlier + // actual: + GaussNewtonParams gnParams; + GncParams gncParams(gnParams); + gncParams.setLossType(GncLossType::TLS); + gncParams.setScheduler(GncScheduler::SuperLinear); + auto gnc = GncOptimizer>(nfg, initial, + gncParams); + gnc.setInlierCostThresholds(0.49); // if inlier threshold is slightly below 0.5, then measurement is outlier + double mu = 1e6; + Vector weights_actual = gnc.calculateWeights(initial, mu); + CHECK(assert_equal(weights_expected, weights_actual, tol)); + } + // check the TLS weights are correct: CASE 3: residual in transition region + { + // expected: + Vector weights_expected = Vector::Zero(1); + double barcSq = 0.4; + double mu = 1.0; + weights_expected[0] = std::sqrt(barcSq / 0.5) * (mu + 1.0) - mu; + // actual: + GaussNewtonParams gnParams; + GncParams gncParams(gnParams); + gncParams.setLossType(GncLossType::TLS); + gncParams.setScheduler(GncScheduler::SuperLinear); + auto gnc = GncOptimizer>(nfg, initial, + gncParams); + gnc.setInlierCostThresholds(barcSq); + Vector weights_actual = gnc.calculateWeights(initial, mu); + CHECK(assert_equal(weights_expected, weights_actual, tol)); + } +} + /* ************************************************************************* */ TEST(GncOptimizer, makeWeightedGraph) { // create original factor @@ -683,6 +807,62 @@ TEST(GncOptimizer, barcsq_heterogeneousFactors) { // std::cout << "fg[3]->dim() " << fg[3]->dim() << std::endl; // this segfaults? } +/* ************************************************************************* */ +TEST(GncOptimizer, nonNoiseFactorBehavior) { + NonlinearFactorGraph nfg; + SharedNoiseModel pose_noise = noiseModel::Isotropic::Sigma(6, 0.5); + nfg.add(PriorFactor(X(0), Pose3(), pose_noise)); + + KeyVector keys; + keys.push_back(X(0)); + keys.push_back(X(1)); + nfg.emplace_shared>(keys, 6, 1000.0); + + Values initial; + initial.insert(X(0), Pose3(Rot3(), Point3(7.0, 0.0, 0.0))); + initial.insert(X(1), Pose3()); + + GncParams gncParams; + gncParams.setLossType(GncLossType::GM); + gncParams.setAllowNonNoiseModelFactors(true); + GncParams::IndexVector knownInliers; + knownInliers.push_back(1); + knownInliers.push_back( + 1); // duplicate should still keep factor 1 as non-noise + gncParams.setKnownInliers(knownInliers); + auto gnc = GncOptimizer>(nfg, initial, + gncParams); + + // check if the weight is carried correctly and non noise model factor is + // unchanged + Vector weights = Vector::Ones(nfg.size()); + weights[1] = 0.0; + NonlinearFactorGraph weighted = gnc.makeWeightedGraph(weights); + CHECK(!weighted.at(1)); + CHECK(weighted.at(0)); + CHECK(weighted.at(1).get() == nfg.at(1).get()); + + // checks if knownInliers (our non noise model factor) is not reweighted + double mu = 1.5; + double expectedWeight = 1.0; + Vector w = gnc.calculateWeights(initial, mu); + DOUBLES_EQUAL(expectedWeight, w[1], tol); + CHECK(w[0] < 1.0); + + // checks if non noise model factors are ignored is calculating mu + double err0 = gnc.getFactors().at(0)->error(initial); + Vector barcSq = gnc.getInlierCostThresholds(); + double expectedMu = 2.0 * err0 / barcSq[0]; + EXPECT_DOUBLES_EQUAL(expectedMu, gnc.initializeMu(), 1e-6); + + // checks if gnc optimization runs and keeps the non noise model factor weight + // fixed at 1 + Values result = gnc.optimize(); + CHECK(result.exists(X(0))); + Vector finalWeights = gnc.getWeights(); + DOUBLES_EQUAL(1.0, finalWeights[1], tol); +} + /* ************************************************************************* */ TEST(GncOptimizer, setInlierCostThresholds) { auto fg = example::sharedNonRobustFactorGraphWithOutliers(); diff --git a/tests/testNonlinearEquality.cpp b/tests/testNonlinearEquality.cpp index 1b2ddc3dd0..5dd6ff07a5 100644 --- a/tests/testNonlinearEquality.cpp +++ b/tests/testNonlinearEquality.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -201,7 +202,9 @@ TEST ( NonlinearEquality, allow_error_optimize ) { init.insert(key1, initPose); // optimize - Values result = LevenbergMarquardtOptimizer(graph, init).optimize(); + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + Values result = LevenbergMarquardtOptimizer(graph, init, params).optimize(); // verify Values expected; @@ -230,7 +233,9 @@ TEST ( NonlinearEquality, allow_error_optimize_with_factors ) { graph.emplace_shared(key1, initPose, noiseModel::Isotropic::Sigma(3, 0.1)); // optimize - Values actual = LevenbergMarquardtOptimizer(graph, init).optimize(); + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + Values actual = LevenbergMarquardtOptimizer(graph, init, params).optimize(); // verify Values expected; @@ -312,7 +317,10 @@ TEST( testNonlinearEqualityConstraint, unary_simple_optimization ) { EXPECT(constraint->active(expected)); EXPECT_DOUBLES_EQUAL(0.0, constraint->error(expected), tol); - Values actual = LevenbergMarquardtOptimizer(graph, initValues).optimize(); + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + Values actual = + LevenbergMarquardtOptimizer(graph, initValues, params).optimize(); EXPECT(assert_equal(expected, actual, tol)); } @@ -394,7 +402,10 @@ TEST( testNonlinearEqualityConstraint, odo_simple_optimize ) { initValues.insert(key1, Point2(0,0)); initValues.insert(key2, badPt); - Values actual = LevenbergMarquardtOptimizer(graph, initValues).optimize(); + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; + Values actual = + LevenbergMarquardtOptimizer(graph, initValues, params).optimize(); Values expected; expected.insert(key1, truth_pt1); expected.insert(key2, truth_pt2); @@ -432,8 +443,10 @@ TEST (testNonlinearEqualityConstraint, two_pose ) { initialEstimate.insert(l1, Point2(1.0, 6.0)); // ground truth initialEstimate.insert(l2, Point2(-4.0, 0.0)); // starting with a separate reference frame + LevenbergMarquardtParams params; + params.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; Values actual = - LevenbergMarquardtOptimizer(graph, initialEstimate).optimize(); + LevenbergMarquardtOptimizer(graph, initialEstimate, params).optimize(); Values expected; expected.insert(x1, pt_x1); diff --git a/tests/testNonlinearFactorGraph.cpp b/tests/testNonlinearFactorGraph.cpp index 305cd963ac..454fc422c2 100644 --- a/tests/testNonlinearFactorGraph.cpp +++ b/tests/testNonlinearFactorGraph.cpp @@ -34,6 +34,9 @@ /*STL/C++*/ #include +#include +#include +#include using namespace std; using namespace gtsam; @@ -42,6 +45,50 @@ using namespace example; using symbol_shorthand::X; using symbol_shorthand::L; +/* ************************************************************************* */ +// Test factor class that is not sendable (for testing parallel error +// computation) +class NonSendableBetweenFactor : public BetweenFactor { + public: + using Base = BetweenFactor; + + // Static members to track thread IDs that process this factor + static std::set processingThreadIds; + static std::mutex threadIdMutex; + + NonSendableBetweenFactor(Key key1, Key key2, const Pose2& measured, + const SharedNoiseModel& model = nullptr) + : Base(key1, key2, measured, model) {} + + bool sendable() const override { return false; } + + // Override error() to track which thread processes this factor + double error(const Values& c) const override { + std::thread::id currentThreadId = std::this_thread::get_id(); + { + std::lock_guard lock(threadIdMutex); + processingThreadIds.insert(currentThreadId); + } + return Base::error(c); + } + + // Static method to reset tracking (for test cleanup) + static void resetTracking() { + std::lock_guard lock(threadIdMutex); + processingThreadIds.clear(); + } + + // Static method to get all thread IDs that processed this factor + static std::set getProcessingThreadIds() { + std::lock_guard lock(threadIdMutex); + return processingThreadIds; + } +}; + +// Static member definitions +std::set NonSendableBetweenFactor::processingThreadIds; +std::mutex NonSendableBetweenFactor::threadIdMutex; + /* ************************************************************************* */ TEST( NonlinearFactorGraph, equals ) { @@ -63,6 +110,106 @@ TEST( NonlinearFactorGraph, error ) DOUBLES_EQUAL( 5.625, actual2, 1e-9 ); } +/* ************************************************************************* */ +TEST( NonlinearFactorGraph, errorParallel ) +{ + constexpr size_t kNumFactors = 512 + 2; // Create graph with >512 factors to trigger TBB parallel path + NonlinearFactorGraph fg; + Values values; + auto noise = noiseModel::Isotropic::Sigma(3, 0.1); + size_t numSendableFactors = 0; + size_t numNonSendableFactors = 0; + + for (size_t i = 0; i < kNumFactors; ++i) { + values.insert(X(i), Pose2(i * 0.1, 0.0, 0.0)); + if (i > 0) { + // Mix sendable and non-sendable factors: use non-sendable for every 10th + // factor + if (i % 10 == 0) { + fg.emplace_shared( + X(i - 1), X(i), Pose2(0.1, 0.0, 0.0), noise); + numNonSendableFactors++; + } else { + fg.emplace_shared>(X(i - 1), X(i), + Pose2(0.1, 0.0, 0.0), noise); + numSendableFactors++; + } + } + } + + // Verify we have both types of factors + EXPECT(numSendableFactors > 0); + EXPECT(numNonSendableFactors > 0); + + // Reset tracking and get main thread ID before testing + NonSendableBetweenFactor::resetTracking(); + std::thread::id mainThreadId = std::this_thread::get_id(); + + // Test with correct values + double actual1 = fg.error(values); + DOUBLES_EQUAL(0.0, actual1, 1e-9); + + // Verify that NonSendableBetweenFactor instances were only processed on main thread + std::set threadIds = NonSendableBetweenFactor::getProcessingThreadIds(); + EXPECT_LONGS_EQUAL(1, threadIds.size()); + for (const auto& threadId : threadIds) { + EXPECT(threadId == mainThreadId); // All should be main thread + } + + // Test with noisy values + Values noisyValues; + for (size_t i = 0; i < kNumFactors; ++i) { + noisyValues.insert(X(i), Pose2(i * 0.1 + 0.1, 0.1, 0.01)); + } + + // Reset tracking before noisy values test + NonSendableBetweenFactor::resetTracking(); + + double actual2 = fg.error(noisyValues); + + // Verify that NonSendableBetweenFactor instances were only processed on main thread + threadIds = NonSendableBetweenFactor::getProcessingThreadIds(); + EXPECT(threadIds.size() > 0); // Should have processed at least some factors + for (const auto& threadId : threadIds) { + EXPECT(threadId == mainThreadId); // All should be main thread + } + + // Verify determinism - parallel should give same result each time + double actual3 = fg.error(noisyValues); + DOUBLES_EQUAL(actual2, actual3, 0.0); + + // Verify that non-sendable factors are computed by comparing with + // a graph that has only sendable factors (should have same error since + // both factor types compute the same error, just processed differently) + NonlinearFactorGraph fgSendableOnly; + Values valuesSendableOnly; + for (size_t i = 0; i < kNumFactors; ++i) { + valuesSendableOnly.insert(X(i), Pose2(i * 0.1, 0.0, 0.0)); + if (i > 0) { + fgSendableOnly.emplace_shared>( + X(i - 1), X(i), Pose2(0.1, 0.0, 0.0), noise); + } + } + + // With correct values, both should have zero error + double errorSendableOnly = fgSendableOnly.error(valuesSendableOnly); + DOUBLES_EQUAL(0.0, errorSendableOnly, 1e-9); + + // With noisy values, verify that mixed graph (with non-sendable factors) + // produces the same error as sendable-only graph, confirming that + // non-sendable factors are being computed correctly + Values noisyValuesSendableOnly; + for (size_t i = 0; i < kNumFactors; ++i) { + noisyValuesSendableOnly.insert(X(i), Pose2(i * 0.1 + 0.1, 0.1, 0.01)); + } + double errorSendableOnlyNoisy = fgSendableOnly.error(noisyValuesSendableOnly); + + // Both graphs should produce the same error since they have equivalent + // factors (non-sendable factors compute the same error, just processed + // sequentially) + DOUBLES_EQUAL(errorSendableOnlyNoisy, actual2, 1e-9); +} + /* ************************************************************************* */ TEST( NonlinearFactorGraph, keys ) { diff --git a/tests/testNonlinearISAM.cpp b/tests/testNonlinearISAM.cpp index 4ffdbdafe1..57e21cb900 100644 --- a/tests/testNonlinearISAM.cpp +++ b/tests/testNonlinearISAM.cpp @@ -54,7 +54,7 @@ TEST(testNonlinearISAM, markov_chain ) { Values new_init; cur_pose = cur_pose.compose(z); - new_init.insert(i, cur_pose.retract(sampler.sample())); + new_init.insert(i, sampler.perturb(cur_pose)); expected.insert(i, cur_pose); isamChol.update(new_factors, new_init); isamQR.update(new_factors, new_init); @@ -110,7 +110,7 @@ TEST(testNonlinearISAM, markov_chain_with_disconnects ) { Values new_init; cur_pose = cur_pose.compose(z); - new_init.insert(i, cur_pose.retract(sampler.sample())); + new_init.insert(i, sampler.perturb(cur_pose)); expected.insert(i, cur_pose); // Add a floating landmark constellation @@ -187,7 +187,7 @@ TEST(testNonlinearISAM, markov_chain_with_reconnect ) { Values new_init; cur_pose = cur_pose.compose(z); - new_init.insert(i, cur_pose.retract(sampler.sample())); + new_init.insert(i, sampler.perturb(cur_pose)); expected.insert(i, cur_pose); // Add a floating landmark constellation diff --git a/tests/testNonlinearOptimizer.cpp b/tests/testNonlinearOptimizer.cpp index cac25c246e..f309f2c421 100644 --- a/tests/testNonlinearOptimizer.cpp +++ b/tests/testNonlinearOptimizer.cpp @@ -163,22 +163,33 @@ TEST( NonlinearOptimizer, SimpleDLOptimizer ) /* ************************************************************************* */ TEST( NonlinearOptimizer, optimization_method ) { - LevenbergMarquardtParams paramsQR; - paramsQR.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_QR; - LevenbergMarquardtParams paramsChol; - paramsChol.linearSolverType = LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY; - NonlinearFactorGraph fg = example::createReallyNonlinearFactorGraph(); Point2 x0(3,3); Values c0; c0.insert(X(1), x0); - Values actualMFQR = LevenbergMarquardtOptimizer(fg, c0, paramsQR).optimize(); - DOUBLES_EQUAL(0,fg.error(actualMFQR),tol); + const std::vector solverTypes = { + LevenbergMarquardtParams::MULTIFRONTAL_SOLVER, + LevenbergMarquardtParams::MULTIFRONTAL_CHOLESKY, + LevenbergMarquardtParams::MULTIFRONTAL_QR, + LevenbergMarquardtParams::SEQUENTIAL_CHOLESKY, + LevenbergMarquardtParams::SEQUENTIAL_QR, + LevenbergMarquardtParams::Iterative, + LevenbergMarquardtParams::CHOLMOD, + }; - Values actualMFChol = LevenbergMarquardtOptimizer(fg, c0, paramsChol).optimize(); - DOUBLES_EQUAL(0,fg.error(actualMFChol),tol); + for (const auto solverType : solverTypes) { + LevenbergMarquardtParams params; + params.linearSolverType = solverType; + try { + Values actual = LevenbergMarquardtOptimizer(fg, c0, params).optimize(); + DOUBLES_EQUAL(0, fg.error(actual), tol); + } catch (const std::exception&) { + // Some solvers may be unavailable depending on build options. + // This test primarily ensures all enum values are exercised. + } + } } /* ************************************************************************* */ @@ -293,7 +304,7 @@ TEST_UNSAFE(NonlinearOptimizer, MoreOptimization) { initBetter.insert(2, Pose2(11,7,M_PI/2)); { - params.diagonalDamping = true; + params.setDiagonalDamping(true); LevenbergMarquardtOptimizer optimizer(fg, initBetter, params); // test the diagonal @@ -367,10 +378,10 @@ TEST(NonlinearOptimizer, Pose2OptimizationWithHuberNoOutlier) { expected.insert(0, Pose2(0,0,0)); expected.insert(1, Pose2(0.961187, 0.99965, 1.1781)); - LevenbergMarquardtParams lm_params; + LevenbergMarquardtParams lmParams; auto gn_result = GaussNewtonOptimizer(fg, init).optimize(); - auto lm_result = LevenbergMarquardtOptimizer(fg, init, lm_params).optimize(); + auto lm_result = LevenbergMarquardtOptimizer(fg, init, lmParams).optimize(); auto dl_result = DoglegOptimizer(fg, init).optimize(); EXPECT(assert_equal(expected, gn_result, 3e-2)); @@ -629,7 +640,7 @@ TEST( NonlinearOptimizer, iterationHook_CG ) /* ************************************************************************* */ -//// Minimal traits example +/// Minimal traits example struct MyType : public Vector3 { using Vector3::Vector3; }; @@ -637,13 +648,29 @@ struct MyType : public Vector3 { namespace gtsam { template <> struct traits { + typedef manifold_tag structure_category; + inline constexpr static auto dimension = 3; + typedef MyType ManifoldType; + typedef Vector3 TangentVector; + typedef OptionalJacobian ChartJacobian; + static bool Equals(const MyType& a, const MyType& b, double tol) { return (a - b).array().abs().maxCoeff() < tol; } static void Print(const MyType&, const string&) {} - static int GetDimension(const MyType&) { return 3; } - static MyType Retract(const MyType& a, const Vector3& b) { return a + b; } - static Vector3 Local(const MyType& a, const MyType& b) { return b - a; } + static int GetDimension(const MyType&) { return dimension; } + static MyType Retract(const MyType& a, const TangentVector& v, + ChartJacobian H1 = {}, ChartJacobian H2 = {}) { + if (H1) *H1 = Matrix3::Identity(); + if (H2) *H2 = Matrix3::Identity(); + return MyType(a + v); + } + static TangentVector Local(const MyType& a, const MyType& b, + ChartJacobian H1 = {}, ChartJacobian H2 = {}) { + if (H1) *H1 = -Matrix3::Identity(); + if (H2) *H2 = Matrix3::Identity(); + return b - a; + } }; } diff --git a/tests/testSerializationSlam.cpp b/tests/testSerializationSlam.cpp index c4170b1089..4748637e07 100644 --- a/tests/testSerializationSlam.cpp +++ b/tests/testSerializationSlam.cpp @@ -312,7 +312,6 @@ TEST (testSerializationSLAM, factors) { SharedNoiseModel model5 = noiseModel::Isotropic::Sigma(5, 0.3); SharedNoiseModel model6 = noiseModel::Isotropic::Sigma(6, 0.3); SharedNoiseModel model9 = noiseModel::Isotropic::Sigma(9, 0.3); - SharedNoiseModel model11 = noiseModel::Isotropic::Sigma(11, 0.3); SharedNoiseModel robust1 = noiseModel::Robust::Create( noiseModel::mEstimator::Huber::Create(10.0, noiseModel::mEstimator::Huber::Scalar), @@ -332,7 +331,7 @@ TEST (testSerializationSLAM, factors) { PriorFactorCal3_S2 priorFactorCal3_S2(a10, cal3_s2, model5); PriorFactorCal3DS2 priorFactorCal3DS2(a11, cal3ds2, model9); PriorFactorCalibratedCamera priorFactorCalibratedCamera(a12, calibratedCamera, model6); - PriorFactorStereoCamera priorFactorStereoCamera(a14, stereoCamera, model11); + PriorFactorStereoCamera priorFactorStereoCamera(a14, stereoCamera, model6); BetweenFactorPoint2 betweenFactorPoint2(a03, b03, point2, model2); BetweenFactorPoint3 betweenFactorPoint3(a05, b05, point3, model3); diff --git a/tests/testSubgraphPreconditioner.cpp b/tests/testSubgraphPreconditioner.cpp index 96f5824065..e1c5fa2368 100644 --- a/tests/testSubgraphPreconditioner.cpp +++ b/tests/testSubgraphPreconditioner.cpp @@ -15,8 +15,7 @@ * @author Frank Dellaert **/ -#include - +#include #include #include #include @@ -25,8 +24,7 @@ #include #include #include - -#include +#include #include @@ -98,7 +96,7 @@ TEST(SubgraphPreconditioner, system) { // Eliminate the spanning tree to build a prior const Ordering ord = planarOrdering(N); auto Rc1 = *Ab1.eliminateSequential(ord); // R1*x-c1 - VectorValues xbar = Rc1.optimize(); // xbar = inv(R1)*c1 + VectorValues xbar = Rc1.optimize(); // xbar = inv(R1)*c1 // Create Subgraph-preconditioned system const SubgraphPreconditioner system(Ab2, Rc1, xbar); @@ -188,7 +186,7 @@ TEST(SubgraphPreconditioner, conjugateGradients) { // Eliminate the spanning tree to build a prior GaussianBayesNet Rc1 = *Ab1.eliminateSequential(); // R1*x-c1 - VectorValues xbar = Rc1.optimize(); // xbar = inv(R1)*c1 + VectorValues xbar = Rc1.optimize(); // xbar = inv(R1)*c1 // Create Subgraph-preconditioned system SubgraphPreconditioner system(Ab2, Rc1, xbar); @@ -202,9 +200,11 @@ TEST(SubgraphPreconditioner, conjugateGradients) { // Solve for the remaining constraints using PCG ConjugateGradientParameters parameters; - VectorValues actual = conjugateGradients(system, y1, parameters); - EXPECT(assert_equal(y0,actual)); + parameters.setVerbosity("ERROR"); + VectorValues actual = + conjugateGradients( + system, y1, parameters); + EXPECT(assert_equal(y0, actual)); // Compare with non preconditioned version: VectorValues actual2 = conjugateGradientDescent(Ab, x1, parameters); diff --git a/timing/timeLago.cpp b/timing/timeLago.cpp index 9064479500..d47b29c137 100644 --- a/timing/timeLago.cpp +++ b/timing/timeLago.cpp @@ -42,7 +42,7 @@ int main(int argc, char *argv[]) { auto noise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.5, 0.5, 15.0 * M_PI / 180.0).finished()); Sampler sampler(noise); for(const auto& [key,pose]: solution->extract()) - initial.insert(key, pose.retract(sampler.sample())); + initial.insert(key, sampler.perturb(pose)); // Add prior on the pose having index (key) = 0 noiseModel::Diagonal::shared_ptr priorModel = // diff --git a/timing/timeMultifrontalSolver.cpp b/timing/timeMultifrontalSolver.cpp index 598c87873b..8029d879a4 100644 --- a/timing/timeMultifrontalSolver.cpp +++ b/timing/timeMultifrontalSolver.cpp @@ -31,10 +31,16 @@ using namespace gtsam; using namespace example; namespace { -// Threshold chosen empirically for these timing experiments: merging small +// Thresholds chosen empirically for these timing experiments: merging small // frontal cliques tends to improve performance without materially affecting // numerical behavior for the tested problems. -constexpr size_t kMergeDimCap = 16; +MultifrontalSolver::Parameters makeDefaultParams() { + MultifrontalSolver::Parameters params; + params.mergeDimCap = 32; + // params.reportStream = &std::cout; + return params; +} + } // namespace /// Run standard GTSAM multifrontal elimination and optimization. @@ -49,64 +55,77 @@ static void runStandardSolver(const GaussianFactorGraph& smoother, /// Run new MultifrontalSolver elimination and optimization. static void runMultifrontalSolver(MultifrontalSolver& solver, - const GaussianFactorGraph& smoother, + const GaussianFactorGraph& graph, size_t iterations) { for (size_t i = 0; i < iterations; ++i) { - if (i > 0) solver.load(smoother); - solver.eliminateInPlace(); + solver.eliminateInPlace(graph); const VectorValues& solution = solver.updateSolution(); (void)solution; } } -int main() { - cout << "Merging dim cap " << kMergeDimCap << std::endl; - - { - const size_t bal_iterations = 5; - const string bal16 = findExampleDataFile("dubrovnik-16-22106-pre"); - const string bal88 = findExampleDataFile("dubrovnik-88-64298-pre"); - for (const auto& filename : {bal16, bal88}) { - cout << "\nProcessing BAL file: " << filename << std::endl; - const SfmData db = SfmData::FromBalFile(filename); - const NonlinearFactorGraph graph = buildGeneralSfmGraph(db, 0.1); - const Values initial = buildGeneralSfmInitial(db); - const GaussianFactorGraph linear = *graph.linearize(initial); - - const std::vector> orderings = { - {"Burn", createSchurOrdering(db, false)}, - {"Metis", Ordering::Metis(linear)}, - {"Schur", createSchurOrdering(db, false)}, - {"Colamd", Ordering::Colamd(linear)}, - }; - - for (const auto& [label, ordering] : orderings) { - cout << "\nBAL Benchmark (" << label - << ", iterations=" << bal_iterations << "):" << std::endl; - - auto start = std::chrono::high_resolution_clock::now(); - MultifrontalSolver solver(linear, ordering, kMergeDimCap, nullptr); - runMultifrontalSolver(solver, linear, bal_iterations); - auto end = std::chrono::high_resolution_clock::now(); - std::chrono::duration t_imperative = end - start; - cout << " MultifrontalSolver: " << t_imperative.count() << " s" - << std::endl; - - start = std::chrono::high_resolution_clock::now(); - runStandardSolver(linear, ordering, bal_iterations); - end = std::chrono::high_resolution_clock::now(); - std::chrono::duration t_standard = end - start; - cout << " Standard GTSAM: " << t_standard.count() << " s" - << std::endl; - - cout << " Speedup: " - << t_standard.count() / t_imperative.count() << "x" << std::endl; - } - } +namespace { +const std::string bal135 = findExampleDataFile("dubrovnik-135-90642-pre.txt"); +const string bal16 = findExampleDataFile("dubrovnik-16-22106-pre"); +const string bal88 = findExampleDataFile("dubrovnik-88-64298-pre"); +} // namespace + +void runBAL135Benchmark(MultifrontalSolver::Parameters params) { + const size_t iterations = 1; + cout << "\nSingle MFS test: " << bal135 << " (iterations=" << iterations + << ")" << std::endl; + + const SfmData db = SfmData::FromBalFile(bal135); + const NonlinearFactorGraph graph = buildGeneralSfmGraph(db, 0.1); + const Values initial = buildGeneralSfmInitial(db); + const GaussianFactorGraph linear = *graph.linearize(initial); + const Ordering ordering = createSchurOrdering(db, false); + + MultifrontalSolver solver(linear, ordering, params); + auto start = std::chrono::high_resolution_clock::now(); + runMultifrontalSolver(solver, linear, iterations); + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration t_imperative = end - start; + cout << " MultifrontalSolver: " << t_imperative.count() << " s" << std::endl; + tictoc_print(); +} + +void runBALBenchmark(MultifrontalSolver::Parameters params) { + const size_t bal_iterations = 2; + for (const auto& filename : {bal16, bal88, bal135}) { + cout << "\nProcessing BAL file: " << filename << std::endl; + const SfmData db = SfmData::FromBalFile(filename); + const NonlinearFactorGraph graph = buildGeneralSfmGraph(db, 0.1); + const Values initial = buildGeneralSfmInitial(db); + const GaussianFactorGraph linear = *graph.linearize(initial); + + const Ordering ordering = createSchurOrdering(db, false); + cout << "\nBAL Benchmark (" << filename << ", iterations=" << bal_iterations + << "):" << std::endl; + + MultifrontalSolver solver(linear, ordering, params); + solver.eliminateInPlace(linear); // Warm up cache. + auto start = std::chrono::high_resolution_clock::now(); + runMultifrontalSolver(solver, linear, bal_iterations); + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration t_imperative = end - start; + cout << " MultifrontalSolver: " << t_imperative.count() << " s" + << std::endl; + + start = std::chrono::high_resolution_clock::now(); + runStandardSolver(linear, ordering, bal_iterations); + end = std::chrono::high_resolution_clock::now(); + std::chrono::duration t_standard = end - start; + cout << " Standard GTSAM: " << t_standard.count() << " s" << std::endl; + + cout << " Speedup: " + << t_standard.count() / t_imperative.count() << "x" << std::endl; } +} +void runChainBenchmark(MultifrontalSolver::Parameters params) { const std::vector T_values = {10, 50, 100, 500, 1000, 5000}; - const size_t iterations = 1000; + const size_t iterations = 500; for (size_t T : T_values) { cout << "\nBenchmark (T=" << T << ", iterations=" << iterations @@ -115,7 +134,7 @@ int main() { const Ordering ordering = Ordering::Metis(smoother); auto start = std::chrono::high_resolution_clock::now(); - MultifrontalSolver solver(smoother, ordering, kMergeDimCap, &std::cout); + MultifrontalSolver solver(smoother, ordering, params); runMultifrontalSolver(solver, smoother, iterations); auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration t_imperative = end - start; @@ -132,5 +151,115 @@ int main() { cout << " Speedup: " << t_standard.count() / t_imperative.count() << "x" << std::endl; } +} + +void runChain5000(MultifrontalSolver::Parameters params) { + const size_t iterations = 5000; + + const size_t T = 5000; + cout << "\nBenchmark (T=" << T << ", iterations=" << iterations + << "):" << std::endl; + GaussianFactorGraph smoother = createSmoother(T); + const Ordering ordering = Ordering::Metis(smoother); + + auto start = std::chrono::high_resolution_clock::now(); + MultifrontalSolver solver(smoother, ordering, params); + runMultifrontalSolver(solver, smoother, iterations); + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration t_imperative = end - start; + cout << "\nTiming results:\n"; + cout << " MultifrontalSolver: " << t_imperative.count() << " s" << std::endl; +} + +void tuneMergingBAL(MultifrontalSolver::Parameters params) { + const size_t iterations = 2; + const std::vector balFiles = {bal16, bal88, bal135}; + cout << "\nTune leaf merging (BAL, iterations=" << iterations << ")" + << std::endl; + + const std::vector sweep = {0, 64, 128, 256, 512, 1024, 2048}; + std::vector> results( + sweep.size(), std::vector(balFiles.size(), 0.0)); + + for (size_t fileIndex = 0; fileIndex < balFiles.size(); ++fileIndex) { + const std::string& filename = balFiles[fileIndex]; + cout << "\n BAL file: " << filename << std::endl; + const SfmData db = SfmData::FromBalFile(filename); + const NonlinearFactorGraph graph = buildGeneralSfmGraph(db, 0.1); + const Values initial = buildGeneralSfmInitial(db); + const GaussianFactorGraph linear = *graph.linearize(initial); + const Ordering ordering = createSchurOrdering(db, false); + + for (size_t i = 0; i < sweep.size(); ++i) { + const size_t parameter = sweep[i]; + params.leafMergeDimCap = parameter; + + MultifrontalSolver solver(linear, ordering, params); + solver.eliminateInPlace(linear); // Warm up cache. + auto start = std::chrono::high_resolution_clock::now(); + runMultifrontalSolver(solver, linear, iterations); + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration t_imperative = end - start; + results[i][fileIndex] = t_imperative.count(); + cout << " leafMergeDimCap=" << parameter << " -> " + << t_imperative.count() << " s\n" + << std::endl; + } + } + + cout << "\n| LeafMergeDimCap | BAL16 | BAL88 | BAL135 |\n"; + cout << "| --- | --- | --- | --- |\n"; + for (size_t i = 0; i < sweep.size(); ++i) { + cout << "| " << sweep[i]; + for (size_t fileIndex = 0; fileIndex < balFiles.size(); ++fileIndex) { + cout << " | " << results[i][fileIndex]; + } + cout << " |\n"; + } +} + +void tuneMergeChain(MultifrontalSolver::Parameters params) { + const size_t iterations = 100; + const size_t T = 5000; + cout << "\nTune mergeDimCap (chain T=" << T << ", iterations=" << iterations + << ")" << std::endl; + + GaussianFactorGraph smoother = createSmoother(T); + const Ordering ordering = Ordering::Metis(smoother); + + const std::vector sweep = {0, 16, 32, 64, 128, 256, 512}; + std::vector> results; + for (size_t parameter : sweep) { + params.mergeDimCap = parameter; + MultifrontalSolver solver(smoother, ordering, params); + + auto start = std::chrono::high_resolution_clock::now(); + runMultifrontalSolver(solver, smoother, iterations); + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration t_imperative = end - start; + results.emplace_back(parameter, t_imperative.count()); + cout << " mergeDimCap=" << parameter << " -> " << t_imperative.count() + << " s\n" + << std::endl; + } + + cout << "\n| Phase | Cap | Seconds |\n"; + cout << "| --- | --- | --- |\n"; + for (const auto& result : results) { + cout << "| mergeDimCap | " << result.first << " | " << result.second + << " |\n"; + } +} + +int main() { + auto params = makeDefaultParams(); + cout << "Merging dim parameter " << params.mergeDimCap << std::endl; + + // runBAL135Benchmark(params); + runBALBenchmark(params); + runChainBenchmark(params); + // runChain5000(params); + // tuneMergingBAL(params); + // tuneMergeChain(params); return 0; } diff --git a/timing/timeNonlinearMultifrontalSolver.cpp b/timing/timeNonlinearMultifrontalSolver.cpp new file mode 100644 index 0000000000..6aa37c9382 --- /dev/null +++ b/timing/timeNonlinearMultifrontalSolver.cpp @@ -0,0 +1,81 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file timeNonlinearMultifrontalSolver.cpp + * @brief Time NonlinearMultifrontalSolver on BAL 88-camera dataset. + * @author Frank Dellaert + * @date January 2026 + */ + +#include +#include + +#include +#include +#include +#include + +#include "timeSFMBAL.h" + +using namespace std; +using namespace gtsam; + +namespace { +constexpr size_t kIterations = 2; +constexpr size_t kMergeDimCap = 16; +constexpr double kLambda = 1e7; +constexpr bool kDiagonalDamping = true; +constexpr double kMinDiagonal = 1e-6; +constexpr double kMaxDiagonal = 1e32; +} // namespace + +int main() { + const string bal16 = findExampleDataFile("dubrovnik-16-22106-pre"); + // const string bal88 = findExampleDataFile("dubrovnik-88-64298-pre"); + // const string bal135 = findExampleDataFile("dubrovnik-135-90642-pre"); + for (const auto& filename : {bal16} /*, bal88, bal135*/) { + cout << "\nProcessing BAL file: " << filename << std::endl; + const SfmData db = SfmData::FromBalFile(filename); + + NonlinearFactorGraph graph = buildGeneralSfmGraph(db); + Values values = buildGeneralSfmInitial(db); + auto linear = *graph.linearize(values); + + auto orderings = createOrderings(db, linear); + for (const auto& [label, ordering] : orderings) { + cout << "\nBAL Benchmark (" << label << ", iterations=" << kIterations + << "):" << std::endl; + + auto start = std::chrono::high_resolution_clock::now(); + NonlinearMultifrontalSolver::DampingParams dampingParams; + dampingParams.diagonalDamping = kDiagonalDamping; + dampingParams.minDiagonal = kMinDiagonal; + dampingParams.maxDiagonal = kMaxDiagonal; + MultifrontalSolver::Parameters mfParams; + mfParams.mergeDimCap = kMergeDimCap; + mfParams.qrMode = MultifrontalParameters::QRMode::Allow; + NonlinearMultifrontalSolver solver(graph, values, ordering, mfParams, + dampingParams); + for (size_t i = 0; i < kIterations; ++i) { + if (i > 0) linear = *graph.linearize(values); + solver.eliminateInPlace(linear, kLambda); + VectorValues delta = solver.updateSolution(); + values = values.retract(delta); + } + auto end = std::chrono::high_resolution_clock::now(); + + std::chrono::duration elapsed = end - start; + cout << "Elapsed: " << elapsed.count() << " s" << std::endl; + } + } + return 0; +} diff --git a/timing/timeSFMBAL.cpp b/timing/timeSFMBAL.cpp index faf052e94d..4a4c437a64 100644 --- a/timing/timeSFMBAL.cpp +++ b/timing/timeSFMBAL.cpp @@ -18,12 +18,230 @@ #include "timeSFMBAL.h" +#include +#include +#include +#include +#include +#include + +namespace { +constexpr const char* kDefaultBenchmarkDataset = "dubrovnik-16-22106-pre"; +constexpr const char* kProfileDataset = "dubrovnik-135-90642-pre"; + +std::string usage() { + return "Usage: timeSFMBAL [--colamd] [--profile] " + "[--benchmark-action-json FILE] [BALfile]"; +} + +struct TimingRow { + std::string dataset; + double legacy = 0.0; + double newer = 0.0; +}; + +struct RunOptions { + bool profile = false; + bool benchmarkActionJson = false; + std::string benchmarkActionJsonPath; + std::vector filenames; +}; + +std::string escapeJson(std::string value) { + std::string escaped; + escaped.reserve(value.size()); + for (const char c : value) { + switch (c) { + case '\\': + escaped += "\\\\"; + break; + case '"': + escaped += "\\\""; + break; + case '\n': + escaped += "\\n"; + break; + case '\r': + escaped += "\\r"; + break; + case '\t': + escaped += "\\t"; + break; + default: + escaped += c; + break; + } + } + return escaped; +} + +void writeBenchmarkActionJson(const std::vector& rows, + const std::string& outputPath) { + std::ofstream out(outputPath); + if (!out) { + throw runtime_error("Unable to open benchmark JSON output file: " + + outputPath); + } + + out << "[\n"; + bool first = true; + const auto appendEntry = [&](const std::string& name, const double value) { + if (!first) out << ",\n"; + first = false; + out << " {\n"; + out << " \"name\": \"" << escapeJson(name) << "\",\n"; + out << " \"unit\": \"s\",\n"; + out << " \"value\": " << std::fixed << std::setprecision(9) << value + << "\n"; + out << " }"; + }; + + for (const auto& row : rows) { + appendEntry("timeSFMBAL/" + row.dataset + "/MultifrontalCholesky", + row.legacy); + appendEntry("timeSFMBAL/" + row.dataset + "/MultifrontalSolver", row.newer); + } + out << "\n]\n"; +} + +RunOptions parseBalFiles(int argc, char* argv[]) { + std::string filename; + bool profile = false; + bool benchmarkActionJson = false; + std::string benchmarkActionJsonPath; + for (int i = 1; i < argc; ++i) { + if (strcmp(argv[i], "--colamd") == 0) { + gUseSchur = false; + continue; + } + if (strcmp(argv[i], "--profile") == 0) { + profile = true; + continue; + } + if (strcmp(argv[i], "--benchmark-action-json") == 0) { + if (++i >= argc || argv[i][0] == '-') { + throw runtime_error(usage()); + } + benchmarkActionJson = true; + benchmarkActionJsonPath = argv[i]; + continue; + } + if (argv[i][0] == '-') { + throw runtime_error(usage()); + } + if (!filename.empty()) { + throw runtime_error(usage()); + } + filename = argv[i]; + } + + if (profile && !filename.empty()) { + throw runtime_error(usage()); + } + if (profile && benchmarkActionJson) { + throw runtime_error(usage()); + } + + if (!filename.empty()) { + return {profile, benchmarkActionJson, benchmarkActionJsonPath, {filename}}; + } + + if (profile) { + return {profile, benchmarkActionJson, benchmarkActionJsonPath, + {findExampleDataFile(kProfileDataset)}}; + } + + if (benchmarkActionJson) { + return {profile, benchmarkActionJson, benchmarkActionJsonPath, + {findExampleDataFile(kDefaultBenchmarkDataset)}}; + } + + return {profile, benchmarkActionJson, benchmarkActionJsonPath, + { + findExampleDataFile("dubrovnik-16-22106-pre"), + findExampleDataFile("dubrovnik-88-64298-pre"), + findExampleDataFile("dubrovnik-135-90642-pre"), + }}; +} + +double runSolver(const NonlinearFactorGraph& graph, const Values& initial, + const Ordering& ordering, + NonlinearOptimizerParams::LinearSolverType solverType, + const std::string& label) { + LevenbergMarquardtParams params; + LevenbergMarquardtParams::SetCeresDefaults(¶ms); + params.setVerbosityLM("SUMMARY"); + params.setRelativeErrorTol(0.01); + params.linearSolverType = solverType; + if (solverType == NonlinearOptimizerParams::MULTIFRONTAL_SOLVER) { + params.multifrontalParams.qrMode = MultifrontalParameters::QRMode::Allow; + } + if (gUseSchur) { + params.setOrdering(ordering); + } + + auto start = std::chrono::high_resolution_clock::now(); + LevenbergMarquardtOptimizer lm(graph, initial, params); + lm.optimize(); + auto end = std::chrono::high_resolution_clock::now(); + + std::chrono::duration elapsed = end - start; + std::cout << " " << label << ": " << elapsed.count() << " s\n"; + return elapsed.count(); +} +} // namespace + int main(int argc, char* argv[]) { - // parse options and read BAL file - SfmData db = preamble(argc, argv); + const auto options = parseBalFiles(argc, argv); + std::vector rows; + + for (const auto& filename : options.filenames) { + const std::string dataset = + std::filesystem::path(filename).filename().string(); + std::cout << "\nProcessing BAL file: " << filename << std::endl; + const SfmData db = SfmData::FromBalFile(filename); + + NonlinearFactorGraph graph = buildGeneralSfmGraph(db); + Values initial = buildGeneralSfmInitial(db); + + Ordering ordering; + if (gUseSchur) { + ordering = createSchurOrdering(db, false); + } + + const double newTime = runSolver( + graph, initial, ordering, NonlinearOptimizerParams::MULTIFRONTAL_SOLVER, + "MultifrontalSolver"); + double legacyTime = 0.0; + if (!options.profile) { + legacyTime = runSolver(graph, initial, ordering, + NonlinearOptimizerParams::MULTIFRONTAL_CHOLESKY, + "MultifrontalCholesky"); + } - NonlinearFactorGraph graph = buildGeneralSfmGraph(db); - Values initial = buildGeneralSfmInitial(db); + if (!options.profile) { + rows.push_back({dataset, legacyTime, newTime}); + } + } + if (!options.profile) { + std::cout + << "\n| Dataset | Legacy (Cholesky) s | New (Solver) s | Speedup |\n"; + std::cout << "| --- | --- | --- | --- |\n"; + std::cout << std::fixed << std::setprecision(3); + for (const auto& row : rows) { + const double speedup = row.newer > 0.0 ? (row.legacy / row.newer) : 0.0; + std::cout << "| " << row.dataset << " | " << row.legacy << " | " + << row.newer << " | " << speedup << "x |\n"; + } + } - return optimize(db, graph, initial); + if (options.benchmarkActionJson) { + if (rows.empty()) { + throw runtime_error("No benchmark rows found to write."); + } + writeBenchmarkActionJson(rows, options.benchmarkActionJsonPath); + std::cout << "\nWrote benchmark-action JSON to " + << options.benchmarkActionJsonPath << "\n"; + } + return 0; } diff --git a/timing/timeSFMBAL.h b/timing/timeSFMBAL.h index 25943c2aaf..74cc13e6e7 100644 --- a/timing/timeSFMBAL.h +++ b/timing/timeSFMBAL.h @@ -123,6 +123,16 @@ inline Ordering createSchurOrdering(const SfmData& db, return ordering; } +inline std::vector> createOrderings( + const SfmData& db, const GaussianFactorGraph& linear) { + return { + {"Burn", createSchurOrdering(db, false)}, + {"Metis", Ordering::Metis(linear)}, + {"Schur", createSchurOrdering(db, false)}, + {"Colamd", Ordering::Colamd(linear)}, + }; +} + // Create ordering and optimize int optimize(const SfmData& db, const NonlinearFactorGraph& graph, const Values& initial, bool separateCalibration = false) { @@ -132,7 +142,8 @@ int optimize(const SfmData& db, const NonlinearFactorGraph& graph, LevenbergMarquardtParams params; LevenbergMarquardtParams::SetCeresDefaults(¶ms); // params.setLinearSolverType("SEQUENTIAL_CHOLESKY"); - // params.setVerbosityLM("SUMMARY"); + params.setVerbosityLM("SUMMARY"); + params.setRelativeErrorTol(0.01); // 1% relative error tol if (gUseSchur) { // Create Schur-complement ordering diff --git a/vcpkg.json b/vcpkg.json new file mode 100644 index 0000000000..613d24648b --- /dev/null +++ b/vcpkg.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", + "$baseline_comment": [ + "`builtin-baseline` pins the vcpkg *registry snapshot* (a commit in the vcpkg repo).", + "It makes dependency resolution reproducible across machines/CI.", + "Policy suggestion for GTSAM: only bump this SHA in a dedicated PR (with CI green), so upgrades are deliberate.", + "Current commit is from 2025-01-16." + ], + "builtin-baseline": "66c0373dc7fca549e5803087b9487edfe3aca0a1", + + "dependencies": [ + { + "$mkl_comment": [ + "MKL is only used on Windows/Linux (not macOS).", + "The platform expression uses OR; `windows,linux` is equivalent to `windows | linux`.", + "If we later want a different BLAS/LAPACK backend on macOS, add it as a separate dependency with `platform: osx`." + ], + "name": "intel-mkl", + "platform": "windows | linux" + }, + "tbb", + "pybind11", + "geographiclib", + "eigen3", + "boost-concept-check", + "boost-fusion", + "boost-graph", + "boost-move", + "boost-optional", + "boost-phoenix", + "boost-pool", + "boost-program-options", + "boost-random", + "boost-range", + "boost-serialization", + "boost-smart-ptr", + "boost-spirit", + "boost-timer", + "boost-tokenizer", + "boost-type-traits" + ] +} \ No newline at end of file