diff --git a/.github/workflows/cibuildwheel.yml b/.github/workflows/cibuildwheel.yml new file mode 100644 index 00000000..44f7063d --- /dev/null +++ b/.github/workflows/cibuildwheel.yml @@ -0,0 +1,166 @@ +name: cibuildwheel + +on: [push, pull_request] + +jobs: + + build-sdist: + # Super fast sniff build. If this fails, don't start the other jobs + name: Build sdist on Ubuntu + runs-on: ubuntu-latest + outputs: + sdist-id: ${{ steps.artifact-upload-step.outputs.artifact-id }} + sdist-name: ${{ steps.create-sdist.outputs.sdist }} + + steps: + - name: Checkout source + uses: actions/checkout@v6 + with: + fetch-depth: 0 + submodules: 'recursive' + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.14' + + - name: Run linter + run: | + pip install ruff + ruff check slycot + + - name: Create sdist + id: create-sdist + run: | + pip install build + python -m build --sdist + [ $(find dist -type f|wc -l) -eq 1 ] || { echo "Expect 1 file in dist" 1>&2; exit 1; } + echo "sdist=$(find dist -type f)" >> "$GITHUB_ENV" + echo "sdist=$(find dist -type f -printf \"%f\")" >> "$GITHUB_OUTPUT" + + - name: Install build requirements + run: sudo apt-get update --quiet --yes && sudo apt-get install --quiet --yes liblapack-dev + + - name: Install sdist + run: | + pip install --verbose "$sdist[test]" pytest-cov + + - name: Run tests + run: | + mkdir test-tmp + cd test-tmp + pytest --cov=slycot --pyargs slycot + coverage xml + + - name: Upload sdist + uses: actions/upload-artifact@v7 + id: artifact-upload-step + with: + archive: false + if-no-files-found: error + path: ${{ env.sdist }} + + - name: Coveralls + uses: coverallsapp/github-action@v2 + with: + file: test-tmp/coverage.xml + continue-on-error: true + + + test-lapack-vendors: + name: Build and test with BLAS & LAPACK from ${{ matrix.lapack.name }} + needs: build-sdist + runs-on: ubuntu-latest + env: + DEBIAN_FRONTEND: noninteractive + BLA_VENDOR: ${{ matrix.lapack.BLA_VENDOR }} + + strategy: + matrix: + lapack: + - name: OpenBLAS + package: libopenblas-dev + BLA_VENDOR: OpenBLAS + - name: Intel MKL + package: libmkl-dev + BLA_VENDOR: Intel10_64_dyn + + steps: + - name: Get sdist + uses: actions/download-artifact@v8 + with: + artifact-ids: ${{ needs.build-sdist.outputs.sdist-id }} + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.14' + + - name: Install dependencies + run: | + sudo apt-get update --quiet --yes && sudo apt-get install --quiet --yes ${{ matrix.lapack.package }} + + - name: Build and test + run: | + python -m venv venv + source venv/bin/activate + pip install --verbose ${{ needs.build-sdist.outputs.sdist-name }}[test] + pytest --pyargs slycot + + build-wheels: + name: Build wheels on ${{ matrix.os }} + needs: [build-sdist, test-lapack-vendors] + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-15-intel, windows-latest, ubuntu-24.04-arm, macos-14] + env: + CIBW_ENVIRONMENT: "CMAKE_ARGS='-DSLYCOT_BUNDLE_OPENBLAS=ON'" + CIBW_TEST_REQUIRES: "control[test]@git+https://github.com/python-control/python-control" + CIBW_TEST_COMMAND: "pytest --pyargs slycot && pytest -Wignore::pytest.PytestUnknownMarkWarning --pyargs control -m slycot" + + steps: + + - name: Get sdist + uses: actions/download-artifact@v8 + with: + artifact-ids: ${{ needs.build-sdist.outputs.sdist-id }} + + - uses: actions/setup-python@v6 + with: + python-version: '3.14' + + - name: macos-config + if: startsWith(matrix.os, 'macos') + run: | + set -x + gfortran_bin=$(command -v gfortran-13) || { echo "gfortran-13 not found" 1>&2; exit 1; } + gcc_bin=$(command -v gcc-13) || { echo "gcc-13 not found" 1>&2; exit 1; } + echo SKBUILD_CMAKE_ARGS="-G Ninja;-DCMAKE_Fortran_COMPILER=$gfortran_bin;-DCMAKE_C_COMPILER=$gcc_bin" >> $GITHUB_ENV + SLYCOT_LIBS=$($gfortran_bin -print-search-dirs|grep "^libraries: ="|sed s/^libraries:\ =//) + echo CIBW_ENVIRONMENT="SLYCOT_LIBS=$SLYCOT_LIBS $CIBW_ENVIRONMENT" >> "$GITHUB_ENV" + + - name: macos-deployment-target-14 + if: startsWith(matrix.os, 'macos-14') + run: echo MACOSX_DEPLOYMENT_TARGET=14.0 >> $GITHUB_ENV + + - name: macos-deployment-target-15 + if: startsWith(matrix.os, 'macos-15') + run: echo MACOSX_DEPLOYMENT_TARGET=15.0 >> $GITHUB_ENV + + - name: windows-config + if: startsWith(matrix.os, 'windows') + run: | + echo SKBUILD_CMAKE_ARGS="-G Ninja;-DCMAKE_Fortran_COMPILER=c:/mingw64/bin/gfortran.exe;-DCMAKE_C_COMPILER=c:/mingw64/bin/gcc.exe" >> $env:GITHUB_ENV + + - name: Install cibuildwheel + run: python -m pip install cibuildwheel==3.3.1 + + - name: Build wheels + run: | + python -m cibuildwheel --output-dir wheelhouse ${{ needs.build-sdist.outputs.sdist-name }} + + - uses: actions/upload-artifact@v6 + with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} + path: ./wheelhouse/*.whl diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml new file mode 100644 index 00000000..eaa202f1 --- /dev/null +++ b/.github/workflows/conda-build.yml @@ -0,0 +1,42 @@ +name: Conda build + +on: + push: + pull_request: + +jobs: + + build-conda: + name: Build conda on ${{ matrix.os }} with Python ${{ matrix.python }} + runs-on: ${{ matrix.os }}-latest + strategy: + fail-fast: false + matrix: + os: + - 'ubuntu' + - 'macos' + - 'windows' + python: + - '3.13' + + steps: + - name: Checkout Slycot + uses: actions/checkout@v6 + with: + fetch-depth: 0 + submodules: 'recursive' + - name: Setup Conda + uses: conda-incubator/setup-miniconda@v4 + with: + auto-update-conda: true + activate-environment: build-env + miniforge-version: latest + conda-build-version: 26.3.0 + channel-priority: strict + - name: Conda build + shell: bash -el {0} + env: + PYTHONUNBUFFERED: "1" + run: | + set -e + conda build conda-recipe --python ${{ matrix.python }} diff --git a/.github/workflows/editable.yml b/.github/workflows/editable.yml new file mode 100644 index 00000000..f61dada6 --- /dev/null +++ b/.github/workflows/editable.yml @@ -0,0 +1,21 @@ +name: In-place editable build + +on: [push, pull_request] + +jobs: + build: + runs-on: [ubuntu-latest] + + steps: + + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + persist-credentials: false + submodules: 'recursive' + + - name: Install build requirements + run: sudo apt-get update --quiet --yes && sudo apt-get install --quiet --yes liblapack-dev + + - name: Build + run: ./dev-tools/inplace-editable-build.bash diff --git a/.github/workflows/slycot-build-and-test.yml b/.github/workflows/slycot-build-and-test.yml deleted file mode 100644 index cdd8fff1..00000000 --- a/.github/workflows/slycot-build-and-test.yml +++ /dev/null @@ -1,418 +0,0 @@ -name: Build and Test Slycot -on: - push: - pull_request: - paths-ignore: - - '.gitignore' - - 'AUTHORS' - - 'COPYING' - - 'gpl-2.0.txt' - - 'MANIFEST.in' - - 'README.rst' - -jobs: - - ruff-lint: - name: Static lint checks with ruff - runs-on: ubuntu-latest - steps: - - name: Checkout Slycot - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'recursive' - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - name: Run ruff check - run: | - pip install ruff - ruff check slycot - - build-sdist: - # Super fast sniff build. If this fails, don't start the other jobs - name: Build sdist on Ubuntu - runs-on: ubuntu-latest - steps: - - name: Checkout Slycot - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'recursive' - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - name: Setup Ubuntu - run: | - sudo apt-get -y install gfortran cmake --fix-missing - sudo apt-get -y install libblas-dev liblapack-dev - - name: Create Slycot sdist - run: | - pip install build - python -m build --sdist - - name: Install Slycot sdist - run: | - mkdir cleancwd - cd cleancwd - tar xfz ../dist/slycot-*.tar.gz - cd slycot-* - pip install -v . - - name: Run tests - run: | - pip install scipy pytest - pytest - - build-pip: - name: Build pip Py${{ matrix.python }}, ${{ matrix.os }}, ${{ matrix.bla_vendor}} BLA_VENDOR - runs-on: ${{ matrix.os }}-latest - needs: build-sdist - strategy: - fail-fast: false - matrix: - os: - - 'ubuntu' - - 'macos' - python: - - '3.10' - - '3.12' - bla_vendor: [ 'unset' ] - include: - - os: 'ubuntu' - python: '3.12' - bla_vendor: 'Generic' - - os: 'ubuntu' - python: '3.12' - bla_vendor: 'OpenBLAS' - - os: 'macos' - python: '3.12' - bla_vendor: 'Apple' - - os: 'macos' - python: '3.12' - bla_vendor: 'Generic' - - os: 'macos' - python: '3.12' - bla_vendor: 'OpenBLAS' - - steps: - - name: Checkout Slycot - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'recursive' - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} - - name: Setup Ubuntu - if: matrix.os == 'ubuntu' - run: | - sudo apt-get -y update - sudo apt-get -y install gfortran cmake --fix-missing - case ${{ matrix.bla_vendor }} in - unset | Generic ) sudo apt-get -y install libblas-dev liblapack-dev ;; - OpenBLAS ) sudo apt-get -y install libopenblas-dev ;; - *) - echo "bla_vendor option ${{ matrix.bla_vendor }} not supported" - exit 1 ;; - esac - - name: Setup macOS - if: matrix.os == 'macos' - run: | - case ${{ matrix.bla_vendor }} in - unset | Generic | Apple ) ;; # Found in system - OpenBLAS ) - brew install openblas - echo "LDFLAGS=-L/opt/homebrew/opt/openblas/lib" >> $GITHUB_ENV - echo "CPPFLAGS=-I/opt/homebrew/opt/openblas/include" >> $GITHUB_ENV - ;; - *) - echo "bla_vendor option ${{ matrix.bla_vendor }} not supported" - exit 1 ;; - esac - echo "FC=gfortran-14" >> $GITHUB_ENV - - name: Build wheel - env: - BLA_VENDOR: ${{ matrix.bla_vendor }} - CMAKE_GENERATOR: Unix Makefiles - run: | - if [[ $BLA_VENDOR = unset ]]; then unset BLA_VENDOR; fi - python -m pip install --upgrade pip - pip wheel -v -w . . - wheeldir=slycot-wheels/${{ matrix.os }}-${{ matrix.python }}-${{ matrix.bla_vendor }} - mkdir -p ${wheeldir} - cp ./slycot*.whl ${wheeldir}/ - - name: Save wheel - uses: actions/upload-artifact@v4 - with: - name: slycot-wheels-${{ matrix.os }}-${{ matrix.python }}-${{ matrix.bla_vendor }} - path: slycot-wheels - retention-days: 5 - - build-conda: - name: Build conda, ${{ matrix.os }} ${{ matrix.python }} - runs-on: ${{ matrix.os }}-latest - needs: build-sdist - strategy: - fail-fast: false - matrix: - os: - - 'ubuntu' - - 'macos' - - 'windows' - python: - - '3.13' - - steps: - - name: Checkout Slycot - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'recursive' - - name: Setup Conda - uses: conda-incubator/setup-miniconda@v3 - with: - auto-update-conda: true - python-version: ${{ matrix.python }} - activate-environment: build-env - miniforge-version: latest - conda-build-version: 25.7.0 - channel-priority: strict - - name: Conda build - shell: bash -el {0} - run: | - set -e - conda build conda-recipe --python ${{ matrix.python }} - # preserve directory structure for custom conda channel - CONDA_ROOT=$(conda info --base) - find "${CONDA_ROOT}/conda-bld" -maxdepth 2 -name 'slycot*.conda' | while read -r conda_pkg; do - conda_platform=$(basename $(dirname "${conda_pkg}")) - mkdir -p "slycot-conda-pkgs/${conda_platform}" - cp "${conda_pkg}" "slycot-conda-pkgs/${conda_platform}/" - done - conda index ./slycot-conda-pkgs - - name: Save to local conda pkg channel - uses: actions/upload-artifact@v4 - with: - name: slycot-conda-pkgs-${{ matrix.os }}-${{ matrix.python }} - path: slycot-conda-pkgs - retention-days: 5 - - - create-wheel-test-matrix: - name: Create wheel test matrix - runs-on: ubuntu-latest - needs: build-pip - if: always() # run tests for all successful builds, even if others failed - outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - steps: - - name: Merge artifacts - uses: actions/upload-artifact/merge@v4 - with: - name: slycot-wheels - pattern: slycot-wheels-* - - name: Checkout Slycot - uses: actions/checkout@v3 - - name: Download wheels (if any) - uses: actions/download-artifact@v4 - with: - name: slycot-wheels - path: slycot-wheels - - id: set-matrix - run: | - TEMPFILE="$(mktemp)" - python3 .github/scripts/set-pip-test-matrix.py | tee $TEMPFILE - echo "matrix=$(cat $TEMPFILE)" >> $GITHUB_OUTPUT - - create-conda-test-matrix: - name: Create conda test matrix - runs-on: ubuntu-latest - needs: build-conda - if: always() # run tests for all successful builds, even if others failed - outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - steps: - - name: Merge artifacts - uses: actions/upload-artifact/merge@v4 - with: - name: slycot-conda-pkgs - pattern: slycot-conda-pkgs-* - - name: Checkout Slycot - uses: actions/checkout@v3 - - name: Download conda packages - uses: actions/download-artifact@v4 - with: - name: slycot-conda-pkgs - path: slycot-conda-pkgs - - id: set-matrix - run: | - TEMPFILE="$(mktemp)" - python3 .github/scripts/set-conda-test-matrix.py | tee $TEMPFILE - echo "matrix=$(cat $TEMPFILE)" >> $GITHUB_OUTPUT - - - test-wheel: - name: Test wheel ${{ matrix.packagekey }}, ${{matrix.blas_lib}} BLAS lib ${{ matrix.failok }} - needs: create-wheel-test-matrix - runs-on: ${{ matrix.os }}-latest - continue-on-error: ${{ matrix.failok == 'FAILOK' }} - - strategy: - fail-fast: false - matrix: ${{ fromJSON(needs.create-wheel-test-matrix.outputs.matrix) }} - - steps: - - name: Checkout Slycot - uses: actions/checkout@v3 - with: - path: slycot-src - - name: Checkout python-control - uses: actions/checkout@v3 - with: - repository: 'python-control/python-control' - path: python-control - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} - - name: Setup Ubuntu - if: matrix.os == 'ubuntu' - run: | - set -xe - sudo apt-get -y update - case ${{ matrix.blas_lib }} in - Generic ) sudo apt-get -y install libblas3 liblapack3 ;; - unset | OpenBLAS ) sudo apt-get -y install libopenblas0 ;; - *) - echo "BLAS ${{ matrix.blas_lib }} not supported for wheels on Ubuntu" - exit 1 ;; - esac - update-alternatives --display libblas.so.3-x86_64-linux-gnu - update-alternatives --display liblapack.so.3-x86_64-linux-gnu - - name: Setup macOS - if: matrix.os == 'macos' - run: | - set -xe - brew install coreutils - case ${{ matrix.blas_lib }} in - unset | Generic | Apple ) ;; # system provided (Uses Apple Accelerate Framework) - OpenBLAS ) - brew install openblas - echo "DYLIB_LIBRARY_PATH=/usr/local/opt/openblas/lib" >> $GITHUB_ENV - ;; - *) - echo "BLAS option ${{ matrix.blas_lib }} not supported for wheels on MacOS" - exit 1 ;; - esac - - name: Download wheels - uses: actions/download-artifact@v4 - with: - name: slycot-wheels - path: slycot-wheels - - name: Install Wheel - run: | - python -m pip install --upgrade pip - pip install matplotlib scipy pytest pytest-cov pytest-timeout coverage - pip install slycot-wheels/${{ matrix.packagekey }}/slycot*.whl - pip show slycot - - name: Slycot and python-control tests - run: JOBNAME="$JOBNAME" bash slycot-src/.github/scripts/run-tests.sh - env: - JOBNAME: wheel ${{ matrix.packagekey }} ${{ matrix.blas_lib }} - - name: report coverage - uses: coverallsapp/github-action@v2 - with: - flag-name: wheel-${{ matrix.packagekey }}-${{matrix.blas_lib}} - parallel: true - file: slycot-src/coverage.xml - - test-conda: - name: Test conda ${{ matrix.packagekey }}, ${{matrix.blas_lib}} BLAS lib ${{ matrix.failok }} - needs: create-conda-test-matrix - runs-on: ${{ matrix.os }}-latest - continue-on-error: ${{ matrix.failok == 'FAILOK' }} - - strategy: - fail-fast: false - matrix: ${{ fromJSON(needs.create-conda-test-matrix.outputs.matrix) }} - - defaults: - run: - shell: bash -el {0} - - steps: - - name: Checkout Slycot - uses: actions/checkout@v3 - with: - path: slycot-src - - name: Checkout python-control - uses: actions/checkout@v3 - with: - repository: 'python-control/python-control' - path: python-control - - name: Setup macOS - if: matrix.os == 'macos' - run: brew install coreutils - - name: Setup Conda - uses: conda-incubator/setup-miniconda@v3 - with: - python-version: ${{ matrix.python }} - miniforge-version: latest - activate-environment: test-env - environment-file: slycot-src/.github/conda-env/test-env.yml - channels: conda-forge,defaults - channel-priority: strict - auto-activate-base: false - - name: Download conda packages - uses: actions/download-artifact@v4 - with: - name: slycot-conda-pkgs - path: slycot-conda-pkgs - - name: Install Conda package - run: | - set -e - case ${{ matrix.blas_lib }} in - unset ) # the conda-forge default (os dependent) - conda install libblas libcblas liblapack - ;; - Generic ) - conda install 'libblas=*=*netlib' 'libcblas=*=*netlib' 'liblapack=*=*netlib' - echo "libblas * *netlib" >> $CONDA_PREFIX/conda-meta/pinned - ;; - OpenBLAS ) - conda install 'libblas=*=*openblas' openblas - echo "libblas * *openblas" >> $CONDA_PREFIX/conda-meta/pinned - ;; - Intel10_64lp ) - conda install 'libblas=*=*mkl' mkl - echo "libblas * *mkl" >> $CONDA_PREFIX/conda-meta/pinned - ;; - esac - conda install -c ./slycot-conda-pkgs slycot - conda list - - name: Slycot and python-control tests - run: JOBNAME="$JOBNAME" bash -el slycot-src/.github/scripts/run-tests.sh - env: - JOBNAME: conda ${{ matrix.packagekey }} ${{ matrix.blas_lib }} - - name: report coverage - uses: coverallsapp/github-action@v2 - with: - flag-name: wheel-${{ matrix.packagekey }}-${{matrix.blas_lib}} - parallel: true - file: slycot-src/coverage.xml - - - coveralls-final: - name: Finalize parallel coveralls - if: always() - needs: - - test-conda - - test-wheel - runs-on: ubuntu-latest - steps: - - name: Coveralls Finished - uses: coverallsapp/github-action@v2 - with: - parallel-finished: true diff --git a/.gitignore b/.gitignore index 080718f9..ffaacb56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,11 @@ +/slycot/_version.py + .DS_Store* MANIFEST dist/ build/ *.pyc *.so -slycot/version.py .ropeproject/ build.log *.egg-info/ @@ -12,3 +13,4 @@ build.log *~ setup.cfg _skbuild +/wheelhouse/ diff --git a/BUILD.rst b/BUILD.rst new file mode 100644 index 00000000..de74b566 --- /dev/null +++ b/BUILD.rst @@ -0,0 +1,190 @@ +================= + Building Slycot +================= + +Slycot can be built on Linux, macOS, and Windows, with building on +Linux being easiest and Windows hardest. + +Slycot can *probably* also be built on other Unix-like systems that +have Python, CMake, a C compiler, a Fortran compiler, and a +BLAS/LAPACK library. + +Building from the sdist +----------------------- + +This section describes building Slycot using the latest `source +distribution (sdist)`_ on PyPi. + +.. _`source distribution (sdist)`: https://packaging.python.org/en/latest/glossary/#term-Source-Distribution-or-sdist + +Ensure you have the the following: + +- Python 3.10 or later, including development files like ``Python.h`` +- CMake, and a CMake-compatible build tool like Ninja +- C compiler (e.g. gcc, MS Visual C++, clang) +- FORTRAN 77 compiler (e.g. gfortran, ifort, flang) +- BLAS/LAPACK (e.g. OpenBLAS, ATLAS, MKL) + +Create and activate a virtual environment:: + + python -m venv venv-slycot + source ./venv-slycot/bin/activate # linux, macosx + .\venv-slycot\Scripts\Activate.ps1 # Windows powershell + +Install slycot with test dependencies:: + + pip install --no-binary slycot[test] + +Test it:: + + pytest --pyargs slycot + +Building from Github source +--------------------------- + +Instead of building from the sdist, you can get the source by cloning +the repository, with its submodules:: + + git clone --recurse-submodules https://github.com/python-control/Slycot.git + +and build from the working tree:: + + pip install .[test] + +The test command is the same as when building from the sdist:: + + pytest --pyargs slycot + +Non-isolated, editable build +---------------------------- + +When doing development one builds over and over; in that case it's faster to do a non-isolated editable build. Run or adapt developer script `inplace-editable-build.bash`_ for that. + +.. _`inplace-editable-build.bash`: ./dev-tools/inplace-editable-build.bash + + +Customizing the build +---------------------- + +To specify the C and Fortran compilers and compilation flags use the CMake and scikit-build-core customization mechanisms. For example, on a Unix-like system one could set specific environment variables before running the ``pip install`` step:: + + export CC=clang # C compiler + export CFLAGS=-Os # C compilation flags + export FC=ifort # Fortran compiler + export FFLAGS=-O3 # Fortran compilation flags + export BLA_VENDOR=Atlas # BLAS/LAPACK library to use + export SKBUILD_BUILD_VERBOSE=true # verbose build + +There are other ways to specify these; see `CMake docs`_ and `scikit-build-core docs`_ for more. See `BLA_VENDOR`_ for +information about specifying the BLAS/LAPACK library in CMake. + +.. _CMake docs: https://cmake.org/documentation/ +.. _scikit-build-core docs: https://scikit-build-core.readthedocs.io/ +.. _BLA_VENDOR: https://cmake.org/cmake/help/latest/module/FindBLAS.html#input-variables + + +Building wheels +--------------- + +Wheels are built with `cibuildwheel`_ via Github Actions. A test build of wheels for the manylinux x86_64 target can be done locally using developer script `check-linux-cibw.bash`_ . To use this script you'll need cibuildwheel and `Docker`_. + +The wheels bundle the OpenBLAS libraries provided by `scipy-openblas-libs`_. + +.. _`cibuildwheel`: https://cibuildwheel.pypa.io/ +.. _`Docker`: https://www.docker.com +.. _`check-linux-cibw.bash`: ./dev-tools/check-linux-cibw.bash +.. _`scipy-openblas-libs`: https://github.com/MacPython/openblas-libs + + +Building the conda recipe +------------------------- + +You can use conda to compile and install Slycot from source. The recipe is +located in the folder ``conda-recipe`` and is intended to work for all +platforms. + +The ``conda-forge`` channel provides almost all requirements to compile +Slycot with `conda-build`_, except: + +- On macOS, you need the macOS SDK. See the + `conda-build documentation for macOS`_ how to get it. +- On Windows, you need to install `Microsoft Visual C++ 14.x`_ provided e.g. + by `Microsoft Visual Studio`_. To build, you'll need a command shell setup + for both conda and the Visual Studio build tools. See `conda activation`_ + and `Microsoft Visual Studio setup`_ for information on this. + +.. _conda-build: https://docs.conda.io/projects/conda-build/en/latest/resources/commands/conda-build.html +.. _conda-build documentation for macOS: https://docs.conda.io/projects/conda-build/en/latest/resources/compiler-tools.html#macos-sdk +.. _Microsoft Visual C++ 14.x: https://wiki.python.org/moin/WindowsCompilers +.. _Microsoft Visual Studio: https://visualstudio.microsoft.com/de/vs/ +.. _conda activation: https://docs.conda.io/projects/conda/en/latest/user-guide/troubleshooting.html#windows-environment-has-not-been-activated +.. _Microsoft Visual Studio setup: https://docs.microsoft.com/en-us/cpp/build/setting-the-path-and-environment-variables-for-command-line-builds + +To build and install:: + + conda build -c conda-forge conda-recipe + conda install -c conda-forge --use-local slycot + +Build design +------------ + +The build uses scikit-build-core for the build backend; +scikit-build-core, in turn, uses CMake to configure and orchestrate +compilers, libraries, and other components needed for the build. + +The build configuration must be: + +- cross-platform, including at least Linux, macOS, and Windows 11 +- able to build binary wheels for PyPI +- compatible with building conda-forge packages +- able to be built from source with user choice of compilers and BLAS/LAPACK vendor + +Most scikit-build-core configuration is in ``pyproject.toml``; see +section ``[tool.scikit-build]`` in that file. Some directives are in +the Github workflow files, especially those for building wheels. + +The CMake configuration is in files ``CMakeLists.txt`` and +``slycot/CMakeLists.txt``. The former is the top-level build file, +responsible for finding the necessary components for the build, and high-level configuration. + +``slycot/CMakeLists.txt`` is where the actual Slycot build is defined: +what source files are included, and what is linked in. + +The main Slyoct CMake build variable is ``SLYCOT_BUNDLE_OPENBLAS``, +which, if set, arranges for scipy-openblas-lib bundling (more on this +below). + +The other Slycot CMake variable is ``SLYCOT_WINDOWS_CONDA_BUILD``; +this used with Slycot's own conda recipe when building on Windows, and +shouldn't need to be set otherwise. + + +Wheel building +~~~~~~~~~~~~~~ + +SLICOT needs a BLAS/LAPACK library. For wheels, this is provided by a +bundled copy of the OpenBLAS libraries. This requires some fiddly +setup, which is handled by the ``[tool.cibuildwheel*]`` sections in +``pyproject.toml``, and also the Github Action workflow configured in +``.github/workflows/cibuildwheel.yml``. + +Additional hints +---------------- + +Additional hints for how to install Slycot from source can be found in the +`.github`_ directory , (commands used to build and test in the GitHub Actions +CI), the `logs from the GitHub Actions`_, and the ``conda-recipe`` directory +(conda pre-requisites, install and test commands) which is included +in the source code repository. + +.. _.github: https://github.com/python-control/Slycot/tree/master/.github +.. _`logs from the GitHub Actions`: https://github.com/python-control/Slycot/actions + +SLICOT version +-------------- + +Slycot uses a patched version of SLICOT managed in this `python-control organisation repository`_. +This SLICOT source is included the PyPI sdist, and will be automatically checked out if you use the +``--recurse-submodules`` submodules command when cloning Slycot. + +.. _`python-control organisation repository`: https://github.com/python-control/SLICOT-Reference diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cfa425f..33d3be35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,39 +1,43 @@ -# CMake file for use in conjunction with scikit-build +cmake_minimum_required(VERSION 3.17.2...3.29) -cmake_minimum_required(VERSION 3.14.0) - -cmake_policy(SET CMP0074 NEW) +if(SLYCOT_WINDOWS_CONDA_BUILD) + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "") + message(STATUS "Set CMAKE_MSVC_DEBUG_INFORMATION_FORMAT to empty string") +endif() -project(slycot LANGUAGES NONE) +project(slycot LANGUAGES C Fortran) -enable_language(C) -enable_language(Fortran) +set(SLYCOT_BUNDLE_OPENBLAS OFF CACHE BOOL "Bundle libraries from scipy-openblas32 in built wheel") -find_package(Python COMPONENTS Interpreter Development NumPy REQUIRED) -find_package(PythonExtensions REQUIRED) -find_package(NumPy REQUIRED) -find_package(F2PY REQUIRED) -find_package(BLAS REQUIRED) -find_package(LAPACK REQUIRED) +find_package( + Python + COMPONENTS Interpreter Development.Module NumPy + REQUIRED) -message(STATUS "Python headers included from: ${Python_INCLUDE_DIRS}") -message(STATUS "NumPy headers included from: ${Python_NumPy_INCLUDE_DIRS}") -message(STATUS "F2PY headers included from: ${F2PY_INCLUDE_DIRS}") -message(STATUS "LAPACK: ${LAPACK_LIBRARIES}") -message(STATUS "BLAS: ${BLAS_LIBRARIES}") +execute_process( + COMMAND "${PYTHON_EXECUTABLE}" -c + "import numpy.f2py; print(numpy.f2py.get_include())" + OUTPUT_VARIABLE F2PY_INCLUDE_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) -# https://github.com/python-control/Slycot/issues/193 -if((EXISTS "${Python_INCLUDE_DIRS}/numpy") - AND (NOT ("${Python_INCLUDE_DIRS}/numpy" EQUAL "${Python_NumPy_INCLUDE_DIRS}"))) +cmake_path(CONVERT ${F2PY_INCLUDE_DIR} TO_CMAKE_PATH_LIST F2PY_INCLUDE_DIR) - message(FATAL_ERROR - "Python include directory has a numpy sub-directory, - ${Python_INCLUDE_DIRS}/numpy, - which is different from Numpy include directory - ${Python_NumPy_INCLUDE_DIRS}. - You're probably building in a virtual environment, in which case - uninstall numpy from the base environment and try again.") +if(SLYCOT_BUNDLE_OPENBLAS) + set(OPENBLAS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build-libs") + find_library( + OPENBLAS_LIBRARY_FILE + NAMES libscipy_openblas.lib libscipy_openblas.dylib libscipy_openblas.so scipy_openblas.lib + PATHS ${OPENBLAS_DIR} + NO_DEFAULT_PATH + REQUIRED) +else() + find_package(LAPACK REQUIRED) endif() +add_library(fortranobject OBJECT "${F2PY_INCLUDE_DIR}/fortranobject.c") +target_link_libraries(fortranobject PUBLIC Python::NumPy) +target_include_directories(fortranobject PUBLIC "${F2PY_INCLUDE_DIR}") +set_property(TARGET fortranobject PROPERTY POSITION_INDEPENDENT_CODE ON) + add_subdirectory(slycot) diff --git a/COPYING b/COPYING deleted file mode 100644 index 68c2b233..00000000 --- a/COPYING +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c) 2002-2009 NICONET e.V. -Copyright 2010-2011 Enrico Avventi -Copyright (C) 2012-2020 Slycot team - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License version 2 as -published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -MA 02110-1301, USA. diff --git a/gpl-2.0.txt b/LICENSE.txt similarity index 84% rename from gpl-2.0.txt rename to LICENSE.txt index d159169d..a97ead2b 100644 --- a/gpl-2.0.txt +++ b/LICENSE.txt @@ -1,3 +1,22 @@ +Copyright (c) 2002-2009 NICONET e.V. +Copyright 2010-2011 Enrico Avventi +Copyright (C) 2012-2026 Slycot team + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +MA 02110-1301, USA. + + GNU GENERAL PUBLIC LICENSE Version 2, June 1991 @@ -278,62 +297,3 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index cd90447e..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,13 +0,0 @@ -include slycot/src/*.pyf -include COPYING -include AUTHORS -include gpl-2.0.txt -include README.rst -include CMakeLists.txt -include pyproject.toml -include conda-recipe/* -include slycot/CMakeLists.txt -include slycot/*.py -include slycot/src/*.f -include slycot/tests/*.py -graft slycot/src/SLICOT-Reference diff --git a/README.rst b/README.rst index 0551d685..d8496dcc 100644 --- a/README.rst +++ b/README.rst @@ -1,3 +1,4 @@ +====== Slycot ====== @@ -13,223 +14,78 @@ Slycot .. image:: https://coveralls.io/repos/github/python-control/Slycot/badge.svg?branch=master :target: https://coveralls.io/github/python-control/Slycot?branch=master -Python wrapper for selected SLICOT routines, notably including solvers for -Riccati, Lyapunov, and Sylvester equations. - -Dependencies ------------- - -Slycot supports Python versions 3.10 or later. - -To run the compiled Slycot package, the following must be installed as -dependencies: +Slycot is a Python wrapper for selected routines from `SLICOT`_, the Subroutine Library in Systems and Control Theory, and is primarily a dependency for the `python-control`_ package. -- Python 3.10+ -- NumPy +Wrapped routines include those that: -If you are compiling and installing Slycot from source, you will need the -following dependencies: + - solve for Ricatti, Lyapunov, and Sylvester equations + - find multivariable zeros of systems + - find reduced-order realizations of MIMO state-space systems + - find H2 and L2 norms of MIMO systems + - synthesize eigenvalue-placement controllers + - synthesize H-infinity and H2 controllers + - convert MIMO state-space representations to transfer functions, and vice versa -- Python 3.10+ -- NumPy -- scikit-build -- CMake -- C compiler (e.g. gcc, MS Visual C++, clang) -- FORTRAN compiler (e.g. gfortran, ifort, flang) -- BLAS/LAPACK (e.g. OpenBLAS, ATLAS, MKL) +If you find a bug or have a question, please open an issue at `issues`_. -To run the Slycot unit tests and examples, you'll also need SciPy and -pytest. - -There are a variety of ways to install these dependencies on different -operating systems. See the individual packages' documentation for options. +.. _`python-control`: https://github.com/python-control/python-control/ +.. _SLICOT: https://www.slicot.org/ +.. _issues: https://github.com/python-control/Slycot/issues Installing ---------- -The easiest way to get started with Slycot is to install pre-compiled -binaries from conda-forge (see below); these are available for Linux, -OSX, and Windows. - -Compiling the Slycot source is unfortunately a bit tricky, especially -on Windows, but we give some pointers further below for doing this. - -Using conda and conda-forge -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -First install Miniconda or Anaconda. Slycot can then be installed -from the conda-forge channel with the following command:: - - conda install -c conda-forge slycot - - -Compiling from source ---------------------- - -The hardest part about installing from source is getting a working -version of FORTRAN and LAPACK (provided by OpenBLAS, MKL, etc.) -installed on your system. Depending on where you get your NumPy and SciPy -from, you will need to use a compatible LAPACK implementation. Make sure that -the correct header files are installed, and specify the CMake variable -`BLA_VENDOR`_, if necessary. We recommend to use `BLA_VENDOR=Generic` in order -to produce a Slycot module, which is binary compatible with all implementations. - -.. _BLA_VENDOR: https://cmake.org/cmake/help/latest/module/FindBLAS.html#input-variables - -Compiling the PyPI source with pip -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -We publish Slycot to the Python package index, but only as a source -package, so to install using pip you'll first need to install the -build prerequisites (compilers, libraries, etc.) - -If you have these build prerequisites, the command:: - - pip install slycot - -will download the latest release of the source code from `PyPI`_, compile, and -install Slycot into the currently configured location (virtual environment or -user site-packages). - -Getting the full source code -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +We recommend using pre-compiled wheels from PyPI, or packages from +conda-forge. -Get it from PyPI -^^^^^^^^^^^^^^^^ +If a binary package isn't available for your system, you can compile +from source, but you will need some software-building expertise. -Get the source code of the latest release is available from `PyPI`_. It -contains both the Python to Fortran wrappers as well as the SLICOT-Reference -Fortran sources. +Installing from PyPI +~~~~~~~~~~~~~~~~~~~~ -.. _PyPI: https://pypi.org/project/slycot +If you are new to installing packages, read the `tutorial`_. -Get it from GitHub archives -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Use pip to install:: -If you decide to download a source code archive from GitHub (tagged release or -a specific branch), you also have to get the correct version of our -SLICOT-Reference fork and place it into ``slycot/src/SLICOT-Reference``: - -1. Download and unpack https://github.com/python-control/Slycot/archive/master.zip -2. Go to https://github.com/python-control/Slycot/master/slycot/src -3. Follow the link of ``SLICOT-Reference @ `` -4. Download the archive of SLICOT-Reference from the Code download button - (``https://github.com/python-control/SLICOT-Reference/archive/.zip``) -5. Unpack the contents of the SLICOT-Reference archive into - ``slycot/src/SLICOT-Reference`` + pip install --only-binary :all: slycot -Replace ``master`` with the release tag or branch name, which you want to build. +If this doesn't work there isn't a binary wheel for your platform. -Clone the git repository -^^^^^^^^^^^^^^^^^^^^^^^^ +To install with test dependencies, run:: -Directly checkout the submodule, when cloning the git repository:: + pip install --only-binary :all: slycot[test] - git clone --recurse-submodules https://github.com/python-control/Slycot.git +And you can then run the tests with ``pytest --pyargs slycot`` -or if you forked the repository:: +.. _`tutorial`: https://packaging.python.org/en/latest/tutorials/installing-packages/ - git clone --recurse-submodules https://github.com//Slycot.git - -If you already have a local checkout, but still need to init the submodule:: - - git submodule init - git submodule update - -Compiling the source (Linux, macOS, Windows) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you need to specify a specific compiler, set the environment variable FC -before running the install:: +Installing from conda-forge +~~~~~~~~~~~~~~~~~~~~~~~~~~~ - # Linux/OSX: - export FC=/path/to/my/fortran +If you haven't used conda before, read the `conda-forge getting started guide`_. - # Windows: - set FC=D:\path\to\my\fortran.exe +First install Miniforge_ or another conda package manager. To install Slycot in a new environment ``project-1`` run:: -To build and install, execute:: + conda create -n project-1 slycot - cd /path/to/slycot_src/ - pip install -v . +.. _`conda-forge getting started guide`: https://conda-forge.org/docs/user/introduction/ +.. _`Miniforge`: https://conda-forge.org/download/ -Using the conda recipe +Installing from source ~~~~~~~~~~~~~~~~~~~~~~ -You can use conda to compile and install Slycot from source. The recipe is -located in the folder ``conda-recipe`` and is intended to work for all -platforms. - -The ``conda-forge`` channel provides almost all requirements to compile -Slycot with `conda-build`_, except: - -- On macOS, you need the macOS SDK. See the - `conda-build documentation for macOS`_ how to get it. -- On Windows, you need to install `Microsoft Visual C++ 14.x`_ provided e.g. - by `Microsoft Visual Studio`_. To build, you'll need a command shell setup - for both conda and the Visual Studio build tools. See `conda activation`_ - and `Microsoft Visual Studio setup`_ for information on this. - -.. _conda-build: https://docs.conda.io/projects/conda-build/en/latest/resources/commands/conda-build.html -.. _conda-build documentation for macOS: https://docs.conda.io/projects/conda-build/en/latest/resources/compiler-tools.html#macos-sdk -.. _Microsoft Visual C++ 14.x: https://wiki.python.org/moin/WindowsCompilers -.. _Microsoft Visual Studio: https://visualstudio.microsoft.com/de/vs/ -.. _conda activation: https://docs.conda.io/projects/conda/en/latest/user-guide/troubleshooting.html#windows-environment-has-not-been-activated -.. _Microsoft Visual Studio setup: https://docs.microsoft.com/en-us/cpp/build/setting-the-path-and-environment-variables-for-command-line-builds - -To build and install:: - - conda build -c conda-forge conda-recipe - conda install -c conda-forge --use-local slycot - -Building from source manually in a conda environment (Windows) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A similar method can be used for Linux and macOS, but is detailed here -for Windows. This method uses conda and conda-forge to get most build -dependencies, *except* for the C compiler. +See `Building Slycot`_. -1. Install `Microsoft Visual Studio`_. -2. Unpack the source code to a directory of your choice, -3. Create a command shell setup that can run the conda commands and the Visual - Studio build tools (see above) -4. In such a command shell, within the Slycot source code directory, run the - following commands to build and install Slycot (this example creates a - Python 3.8 environment):: +.. _`Building Slycot`: https://github.com/python-control/Slycot/tree/master/BUILD.rst - conda create --channel conda-forge --name build-slycot python=3.10 numpy scipy libblas=*=*netlib liblapack=*=*netlib scikit-build flang pytest - conda activate build-slycot - - pip install -v . - -Additional hints -~~~~~~~~~~~~~~~~ - -Additional hints for how to install Slycot from source can be found in the -`.github`_ directory , (commands used to build and test in the GitHub Actions -CI), the `logs from the GitHub Actions`_, and the ``conda-recipe`` directory -(conda pre-requisites, install and test commands) which is included -in the source code repository. - -.. _.github: https://github.com/python-control/Slycot/tree/master/.github -.. _`logs from the GitHub Actions`: https://github.com/python-control/Slycot/actions - -Testing -------- -To test if the installation was successful, you can run the slycot unit tests:: - - pytest --pyargs slycot - -You may also run the tests by calling ``slycot.test()`` from within the python -interpreter:: +Dependencies +------------ - import slycot - slycot.test() +Slycot supports Python versions 3.10 or later, and Numpy 2.0 or later. -Importing ``slycot`` or running ``pytest`` without ``--pyargs slycot`` from -inside the source directory will fail, unless the compiled wrapper library has -been installed into that directory. Note that the ``[tool:pytest]`` section -in ``setup.cfg`` enforces the ``--pyargs slycot`` argument by default. +To run the Slycot unit tests and examples, you'll also need SciPy and +pytest. License ------- diff --git a/build-tools/cibw_before_build.py b/build-tools/cibw_before_build.py new file mode 100644 index 00000000..520ed23b --- /dev/null +++ b/build-tools/cibw_before_build.py @@ -0,0 +1,98 @@ +"""cibuildwheel setup script + +Usage + python cibw_before_build.py + +Installs scipy_openblas32 version given by first command-line argument. + +Copies scipy_openblas32 to build-libs in project root; project root +given by second command-line argument. +""" + +import os +import pathlib +import shutil +import subprocess +import sys + + +def install_openblas32(scipy_openblas32_version): + print(f"{__file__}: Installing scipy_openblas32=={scipy_openblas32_version}") + subprocess.run( + [ + sys.executable, + "-m", + "pip", + "install", + "--progress-bar", + "off", + f"scipy_openblas32=={scipy_openblas32_version}", + ], + check=True, + ) + + +def copy_libraries(project_root): + import scipy_openblas32 + + src = scipy_openblas32.get_lib_dir() + dst = os.path.join(project_root, "build-libs") + if os.path.exists(dst): + print(f'Deleting existing {dst}') + shutil.rmtree(dst) + + print(f"{__file__}: Copying {src} to {dst}") + shutil.copytree(src, dst) + + +def copy_slicot_license(project_root): + inname = os.path.join(project_root, "slycot", "src", "SLICOT-Reference", "LICENSE") + outname = os.path.join(project_root, "LICENSE-SLICOT.txt") + print(f'Copying license file {inname} to {outname}') + shutil.copyfile(inname, outname) + + +def copy_scipy_openblas32_licenses(project_root): + from importlib.metadata import metadata, files + + outname0 = os.path.join(project_root, "LICENSE-scipy-openblas32.txt") + with open(outname0, "wt") as out: + print(f'Creating license file {outname0} from scipy-openblas32 license data') + out.write(metadata('scipy_openblas32')['License']) + + license_files = [v + for k, v in metadata('scipy_openblas32').items() + if k=='License-File'] + if len(set(pathlib.Path(p).name for p in license_files)) != len(license_files): + # distinguish by full path? + raise ValueError('license files with duplicate names not handled') + + ilicense = 0 + for license_file in license_files: + matches = [p for p in files('scipy_openblas32') if license_file in str(p)] + if len(matches) != 1: + raise ValueError(f'Expect 1 match for {license_file}, found {len(matches)}') + inname = matches[0].locate() + with open(inname) as infile: + data = infile.read() + if data == metadata('scipy_openblas32')['License']: + print(f'License file {inname} identical to license data, skipping') + continue + + outname = os.path.join(project_root, f"LICENSE-scipy-openblas32-{ilicense}.txt") + print(f'Copying license file {inname} to {outname}') + shutil.copyfile(inname, outname) + ilicense += 1 + + +def main(): + version = sys.argv[1] + project_root = sys.argv[2] + install_openblas32(version) + copy_libraries(project_root) + copy_slicot_license(project_root) + copy_scipy_openblas32_licenses(project_root) + + +if __name__ == "__main__": + main() diff --git a/build-tools/cibw_repair_wheel_macos.sh b/build-tools/cibw_repair_wheel_macos.sh new file mode 100644 index 00000000..0ee3badb --- /dev/null +++ b/build-tools/cibw_repair_wheel_macos.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Wheel repair for macOS +# +# Usage: +# bash cibw_repair_wheel_macos.sh +# +# Requires environment variable SLYCOT_LIBS; this is a list of +# compiler runtime libraries. For gfortran, such a list can be +# generated with +# +# gfortran -print-search-dirs|grep "^libraries: ="|sed s/^libraries:\ =// + +set -e + +dest_dir=$1 +wheel=$2 +project_root=$3 + +if [ -z "${SLYCOT_LIBS+x}" ]; then + echo "Variable SLYCOT_LIBS must be defined" 1>&2 + exit 1 +fi + +# copied from Scipy +# See https://github.com/scipy/scipy/issues/20852 +lib_loc=$project_root/build-libs + +install_name_tool -change @loader_path/../.dylibs/libgfortran.5.dylib @rpath/libgfortran.5.dylib $lib_loc/libsci* +install_name_tool -change @loader_path/../.dylibs/libgcc_s.1.1.dylib @rpath/libgcc_s.1.1.dylib $lib_loc/libsci* +install_name_tool -change @loader_path/../.dylibs/libquadmath.0.dylib @rpath/libquadmath.0.dylib $lib_loc/libsci* + +if [ ! -z $DYLD_LIBRARY_PATH ]; then + echo "DYLD_LIBRARY_PATH already set: $DYLD_LIBRARY_PATH"; + exit 1; +fi + +export DYLD_LIBRARY_PATH=$lib_loc:$SLYCOT_LIBS + +delocate-wheel -w $dest_dir $wheel diff --git a/conda-recipe/bld.bat b/conda-recipe/bld.bat index 4b2811d0..292ee072 100644 --- a/conda-recipe/bld.bat +++ b/conda-recipe/bld.bat @@ -1,8 +1,9 @@ -set BLAS_ROOT=%PREFIX% -set LAPACK_ROOT=%PREFIX% +@echo on -set "SKBUILD_CONFIGURE_OPTIONS=-DBLA_VENDOR=Generic" -set "CMAKE_GENERATOR=NMake Makefiles" -"%PYTHON%" -m pip install -v . +@rem -GNinja selects Ninja build generator +@rem SLYCOT_WINDOWS_CONDA_BUILD clears a debug build setting that +@rem otherwise prevents the build +set "SKBUILD_CMAKE_ARGS=-GNinja;-DSLYCOT_WINDOWS_CONDA_BUILD=ON" -if errorlevel 1 exit 1 +%PYTHON% -m pip install --no-deps --no-build-isolation -vv . +if %ERRORLEVEL% neq 0 exit 1 diff --git a/conda-recipe/build.sh b/conda-recipe/build.sh index fbc8a26e..3cfd4a37 100644 --- a/conda-recipe/build.sh +++ b/conda-recipe/build.sh @@ -2,5 +2,6 @@ rm -rf _skbuild rm -rf _cmake_test_compile +export CMAKE_GENERATOR=Ninja export SKBUILD_CONFIGURE_OPTIONS="-DBLA_VENDOR=Generic" $PYTHON -m pip install -v . diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index f5f3f718..92597572 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -13,23 +13,19 @@ requirements: build: - python # [build_platform != target_platform] - cross-python_{{ target_platform }} # [build_platform != target_platform] - - numpy # [build_platform != target_platform] - - scikit-build >=0.15 # [build_platform != target_platform] - {{ compiler('fortran') }} - {{ compiler('c') }} - {{ stdlib("c") }} - - cmake >=3.14 - - make # [linux] + - cmake >=3.15 + - ninja host: - libblas - - libcblas - liblapack - - python - numpy - - scikit-build >=0.15 - pip - - setuptools >=45 - - setuptools_scm >=7 + - python + - scikit-build-core + - setuptools_scm run: - python @@ -47,7 +43,7 @@ about: dev_url: https://github.com/python-control/Slycot license: GPL-2.0-only license_family: GPL - license_file: COPYING + license_file: LICENSE.txt summary: 'Slycot: a wrapper for the SLICOT control and systems library' description: | Slycot wraps the SLICOT library which is used for control and systems diff --git a/dev-tools/check-linux-cibw.bash b/dev-tools/check-linux-cibw.bash new file mode 100755 index 00000000..bae5c614 --- /dev/null +++ b/dev-tools/check-linux-cibw.bash @@ -0,0 +1,5 @@ +#!/bin/bash + +# Run cibuildwheel locally for Linux; useful as a pre-push check + +CIBW_ENVIRONMENT="CMAKE_ARGS='-DSLYCOT_BUNDLE_OPENBLAS=ON'" CIBW_BUILD=cp313-manylinux_x86_64 cibuildwheel diff --git a/dev-tools/inplace-editable-build.bash b/dev-tools/inplace-editable-build.bash new file mode 100755 index 00000000..1f80040e --- /dev/null +++ b/dev-tools/inplace-editable-build.bash @@ -0,0 +1,39 @@ +#!/bin/bash + +# Demonstrate in-place, editable install +# +# This re-uses the build directory, including CMake config, and is +# fast when doing iterative development. +# +# The downside is that the setup is fragile: although the build tools +# (scikit-build-core, CMake, and the lower-level build tool like +# ninja) are pretty good about detecting and handling changes to the +# source, they're not perfect, and one can end up with apparently +# impossible results that go away when doing a clean build. +# +# For this script to work, the following must be installed: +# - CMake, +# - a CMake-compatible build tool, e.g., Ninja +# - the following components that must all be discoverable by CMake: +# - C compiler +# - Fortran compiler +# - BLAS and LAPACK libraries +# +# Tested on Debian 13. + +set -euo pipefail + +if [ ! -f ./dev-tools/inplace-editable-build.bash ]; then + echo "Run this from project root" + exit 1; +fi + +echo "--Build" +python -m venv venv-build +source venv-build/bin/activate + +pip install --progress-bar off setuptools_scm scikit-build-core numpy pytest scipy + +pip install --no-build-isolation --editable . --verbose --config-settings skbuild.build.verbose=true --config-settings skbuild.build-dir=build + +pytest --pyargs slycot diff --git a/pyproject.toml b/pyproject.toml index 8ea3e90c..4a5a3f79 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,20 +1,18 @@ [build-system] -requires = [ - "setuptools>=45", - "setuptools_scm>=8", - "wheel", - "scikit-build>=0.15", - "cmake>=3.14", - "numpy >= 1.23.1"] -build-backend = "setuptools.build_meta" +requires = ["scikit-build-core", "numpy"] +build-backend = "scikit_build_core.build" [project] name = "slycot" +dynamic = ["version"] description = "A wrapper for the SLICOT control and systems library" readme = "README.rst" authors = [{ name = "Enrico Avventi et al." }] maintainers = [{ name = "Slycot developers", email = "python-control-discuss@lists.sourceforge.net"}] -license = "GPL-2.0 AND BSD-3-Clause" +license = "GPL-2.0 AND BSD-3-Clause AND GPL-3.0-with-GCC-exception AND BSD-2-Clause" +# the * is important: it allows adding SLICOT and OpenBLAS licenses when building wheels +license-files = ["AUTHORS", "LICENSE*.txt"] + classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", @@ -25,6 +23,8 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Software Development", "Topic :: Scientific/Engineering", "Operating System :: Microsoft :: Windows", @@ -34,16 +34,18 @@ classifiers = [ ] requires-python = ">=3.10" dependencies = [ - "numpy >= 1.23.1", + "numpy>=2", ] -dynamic = ["version"] + +[project.optional-dependencies] +test = ["pytest", "scipy"] [project.urls] homepage = "https://github.com/python-control/Slycot" - -[tool.setuptools_scm] -write_to = "slycot/version.py" +[tool.scikit-build] +metadata.version.provider = "scikit_build_core.metadata.setuptools_scm" +wheel.exclude = ["slycot/src/", "slycot/CMakeLists.txt", "slycot/slicot-source.cmake", "slycot/scipy-openblas-symbols"] [tool.pytest.ini_options] # run the tests with compiled and installed package @@ -51,3 +53,26 @@ addopts = "--pyargs slycot" [tool.ruff.lint] ignore = [ "E741" ] + +[tool.cibuildwheel] +# scipy-openblas32 version specified here +before-build = "python {project}/build-tools/cibw_before_build.py 0.3.31.22.1 {project}" +test-command = "pytest --pyargs slycot" +test-extras = ['test'] + +skip = ["cp38-*", "cp39-*", "cp3??t-*", "*-win32", "*-win_arm64"] + +[tool.cibuildwheel.linux] +repair-wheel-command = [ + "LD_LIBRARY_PATH=./build-libs", + "auditwheel repair -w {dest_dir} {wheel}", +] + +[tool.cibuildwheel.windows] +repair-wheel-command = [ + "pip install delvewheel", + "delvewheel repair --add-path build-libs -w {dest_dir} {wheel}" +] + +[tool.cibuildwheel.macos] +repair-wheel-command = "bash {project}/build-tools/cibw_repair_wheel_macos.sh {dest_dir} {wheel} {project}" diff --git a/setup.py b/setup.py deleted file mode 100644 index e832d146..00000000 --- a/setup.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -"""Slycot: a wrapper for the SLICOT control and systems library - -Slycot wraps the SLICOT library which is used for control and systems analysis. - -""" - -import builtins -import os -import subprocess - -try: - from skbuild import setup - from skbuild.command.sdist import sdist -except ImportError: - raise ImportError('scikit-build must be installed before running setup.py') - -try: - from setuptools_scm import get_version -except ImportError: - raise ImportError('setuptools_scm must be installed before running setup.py') - -# This is a bit hackish: we are setting a global variable so that the main -# slycot __init__ can detect if it is being loaded by the setup routine, to -# avoid attempting to load components that aren't built yet. While ugly, it's -# a lot more robust than what was previously being used. -builtins.__SLYCOT_SETUP__ = True - - -def check_submodules(): - """ verify that the submodules are checked out and clean - use `git submodule update --init`; on failure - """ - if not os.path.exists('.git'): - return - with open('.gitmodules') as f: - for l in f: - if 'path' in l: - p = l.split('=')[-1].strip() - if not os.path.exists(p): - raise ValueError('Submodule %s missing' % p) - - proc = subprocess.Popen(['git', 'submodule', 'status'], - stdout=subprocess.PIPE) - status, _ = proc.communicate() - status = status.decode("ascii", "replace") - for line in status.splitlines(): - if line.startswith('-') or line.startswith('+'): - raise ValueError('Submodule not clean: %s' % line) - - -class sdist_checked(sdist): - """ check submodules on sdist to prevent incomplete tarballs """ - def run(self): - check_submodules() - sdist.run(self) - -# These need to stay in setup.py -# https://scikit-build.readthedocs.io/en/latest/usage.html#setuptools-options -setup( - packages=['slycot', 'slycot.tests'], - cmdclass={'sdist': sdist_checked}, - cmake_languages=('C', 'Fortran'), - include_package_data = False, -) diff --git a/slycot/CMakeLists.txt b/slycot/CMakeLists.txt index dc2c59b1..78068e32 100644 --- a/slycot/CMakeLists.txt +++ b/slycot/CMakeLists.txt @@ -1,689 +1,47 @@ -# CMakeLists.txt file for Slycot -# use in conjunction with scikit-build -# -# RvP, 180710 - -# -set(SLICOT_FSOURCE - -src/SLICOT-Reference/src/AB01MD.f -src/SLICOT-Reference/src/AB01ND.f -src/SLICOT-Reference/src/AB01OD.f -src/SLICOT-Reference/src/AB04MD.f -src/SLICOT-Reference/src/AB05MD.f -src/SLICOT-Reference/src/AB05ND.f -src/SLICOT-Reference/src/AB05OD.f -src/SLICOT-Reference/src/AB05PD.f -src/SLICOT-Reference/src/AB05QD.f -src/SLICOT-Reference/src/AB05RD.f -src/SLICOT-Reference/src/AB05SD.f -src/SLICOT-Reference/src/AB07MD.f -src/SLICOT-Reference/src/AB07ND.f -src/SLICOT-Reference/src/AB08MD.f -src/SLICOT-Reference/src/AB08MZ.f -src/SLICOT-Reference/src/AB08ND.f -src/SLICOT-Reference/src/AB08NW.f -src/SLICOT-Reference/src/AB08NX.f -src/SLICOT-Reference/src/AB08NY.f -src/SLICOT-Reference/src/AB08NZ.f -src/SLICOT-Reference/src/AB09AD.f -src/SLICOT-Reference/src/AB09AX.f -src/SLICOT-Reference/src/AB09BD.f -src/SLICOT-Reference/src/AB09BX.f -src/SLICOT-Reference/src/AB09CD.f -src/SLICOT-Reference/src/AB09CX.f -src/SLICOT-Reference/src/AB09DD.f -src/SLICOT-Reference/src/AB09ED.f -src/SLICOT-Reference/src/AB09FD.f -src/SLICOT-Reference/src/AB09GD.f -src/SLICOT-Reference/src/AB09HD.f -src/SLICOT-Reference/src/AB09HX.f -src/SLICOT-Reference/src/AB09HY.f -src/SLICOT-Reference/src/AB09ID.f -src/SLICOT-Reference/src/AB09IX.f -src/SLICOT-Reference/src/AB09IY.f -src/SLICOT-Reference/src/AB09JD.f -src/SLICOT-Reference/src/AB09JV.f -src/SLICOT-Reference/src/AB09JW.f -src/SLICOT-Reference/src/AB09JX.f -src/SLICOT-Reference/src/AB09KD.f -src/SLICOT-Reference/src/AB09KX.f -src/SLICOT-Reference/src/AB09MD.f -src/SLICOT-Reference/src/AB09ND.f -src/SLICOT-Reference/src/AB13AD.f -src/SLICOT-Reference/src/AB13AX.f -src/SLICOT-Reference/src/AB13BD.f -src/SLICOT-Reference/src/AB13CD.f -src/SLICOT-Reference/src/AB13DD.f -src/SLICOT-Reference/src/AB13DX.f -src/SLICOT-Reference/src/AB13ED.f -src/SLICOT-Reference/src/AB13FD.f -src/SLICOT-Reference/src/AB13HD.f -src/SLICOT-Reference/src/AB13ID.f -src/SLICOT-Reference/src/AB13MD.f -src/SLICOT-Reference/src/AB8NXZ.f -src/SLICOT-Reference/src/AG07BD.f -src/SLICOT-Reference/src/AG08BD.f -src/SLICOT-Reference/src/AG08BY.f -src/SLICOT-Reference/src/AG08BZ.f -src/SLICOT-Reference/src/AG8BYZ.f -src/SLICOT-Reference/src/BB01AD.f -src/SLICOT-Reference/src/BB02AD.f -src/SLICOT-Reference/src/BB03AD.f -src/SLICOT-Reference/src/BB04AD.f -src/SLICOT-Reference/src/BD01AD.f -src/SLICOT-Reference/src/BD02AD.f -src/SLICOT-Reference/src/DE01OD.f -src/SLICOT-Reference/src/DE01PD.f -src/SLICOT-Reference/src/DF01MD.f -src/SLICOT-Reference/src/DG01MD.f -src/SLICOT-Reference/src/DG01ND.f -src/SLICOT-Reference/src/DG01NY.f -src/SLICOT-Reference/src/DG01OD.f -src/SLICOT-Reference/src/DK01MD.f -src/SLICOT-Reference/src/FB01QD.f -src/SLICOT-Reference/src/FB01RD.f -src/SLICOT-Reference/src/FB01SD.f -src/SLICOT-Reference/src/FB01TD.f -src/SLICOT-Reference/src/FB01VD.f -src/SLICOT-Reference/src/FD01AD.f -src/SLICOT-Reference/src/IB01AD.f -src/SLICOT-Reference/src/IB01BD.f -src/SLICOT-Reference/src/IB01CD.f -src/SLICOT-Reference/src/IB01MD.f -src/SLICOT-Reference/src/IB01MY.f -src/SLICOT-Reference/src/IB01ND.f -src/SLICOT-Reference/src/IB01OD.f -src/SLICOT-Reference/src/IB01OY.f -src/SLICOT-Reference/src/IB01PD.f -src/SLICOT-Reference/src/IB01PX.f -src/SLICOT-Reference/src/IB01PY.f -src/SLICOT-Reference/src/IB01QD.f -src/SLICOT-Reference/src/IB01RD.f -src/SLICOT-Reference/src/IB03AD.f -src/SLICOT-Reference/src/IB03BD.f -src/SLICOT-Reference/src/MA01AD.f -src/SLICOT-Reference/src/MA01BD.f -src/SLICOT-Reference/src/MA01BZ.f -src/SLICOT-Reference/src/MA01CD.f -src/SLICOT-Reference/src/MA01DD.f -src/SLICOT-Reference/src/MA01DZ.f -src/SLICOT-Reference/src/MA02AD.f -src/SLICOT-Reference/src/MA02AZ.f -src/SLICOT-Reference/src/MA02BD.f -src/SLICOT-Reference/src/MA02BZ.f -src/SLICOT-Reference/src/MA02CD.f -src/SLICOT-Reference/src/MA02CZ.f -src/SLICOT-Reference/src/MA02DD.f -src/SLICOT-Reference/src/MA02ED.f -src/SLICOT-Reference/src/MA02ES.f -src/SLICOT-Reference/src/MA02EZ.f -src/SLICOT-Reference/src/MA02FD.f -src/SLICOT-Reference/src/MA02GD.f -src/SLICOT-Reference/src/MA02GZ.f -src/SLICOT-Reference/src/MA02HD.f -src/SLICOT-Reference/src/MA02HZ.f -src/SLICOT-Reference/src/MA02ID.f -src/SLICOT-Reference/src/MA02IZ.f -src/SLICOT-Reference/src/MA02JD.f -src/SLICOT-Reference/src/MA02JZ.f -src/SLICOT-Reference/src/MA02MD.f -src/SLICOT-Reference/src/MA02MZ.f -src/SLICOT-Reference/src/MA02NZ.f -src/SLICOT-Reference/src/MA02OD.f -src/SLICOT-Reference/src/MA02OZ.f -src/SLICOT-Reference/src/MA02PD.f -src/SLICOT-Reference/src/MA02PZ.f -src/SLICOT-Reference/src/MA02RD.f -src/SLICOT-Reference/src/MA02SD.f -src/SLICOT-Reference/src/MB01KD.f -src/SLICOT-Reference/src/MB01LD.f -src/SLICOT-Reference/src/MB01MD.f -src/SLICOT-Reference/src/MB01ND.f -src/SLICOT-Reference/src/MB01OC.f -src/SLICOT-Reference/src/MB01OD.f -src/SLICOT-Reference/src/MB01OE.f -src/SLICOT-Reference/src/MB01OH.f -src/SLICOT-Reference/src/MB01OO.f -src/SLICOT-Reference/src/MB01OS.f -src/SLICOT-Reference/src/MB01OT.f -src/SLICOT-Reference/src/MB01PD.f -src/SLICOT-Reference/src/MB01QD.f -src/SLICOT-Reference/src/MB01RB.f -src/SLICOT-Reference/src/MB01RD.f -src/SLICOT-Reference/src/MB01RH.f -src/SLICOT-Reference/src/MB01RT.f -src/SLICOT-Reference/src/MB01RU.f -src/SLICOT-Reference/src/MB01RW.f -src/SLICOT-Reference/src/MB01RX.f -src/SLICOT-Reference/src/MB01RY.f -src/SLICOT-Reference/src/MB01SD.f -src/SLICOT-Reference/src/MB01SS.f -src/SLICOT-Reference/src/MB01TD.f -src/SLICOT-Reference/src/MB01UD.f -src/SLICOT-Reference/src/MB01UW.f -src/SLICOT-Reference/src/MB01UX.f -src/SLICOT-Reference/src/MB01UY.f -src/SLICOT-Reference/src/MB01UZ.f -src/SLICOT-Reference/src/MB01VD.f -src/SLICOT-Reference/src/MB01WD.f -src/SLICOT-Reference/src/MB01XD.f -src/SLICOT-Reference/src/MB01XY.f -src/SLICOT-Reference/src/MB01YD.f -src/SLICOT-Reference/src/MB01ZD.f -src/SLICOT-Reference/src/MB02CD.f -src/SLICOT-Reference/src/MB02CU.f -src/SLICOT-Reference/src/MB02CV.f -src/SLICOT-Reference/src/MB02CX.f -src/SLICOT-Reference/src/MB02CY.f -src/SLICOT-Reference/src/MB02DD.f -src/SLICOT-Reference/src/MB02ED.f -src/SLICOT-Reference/src/MB02FD.f -src/SLICOT-Reference/src/MB02GD.f -src/SLICOT-Reference/src/MB02HD.f -src/SLICOT-Reference/src/MB02ID.f -src/SLICOT-Reference/src/MB02JD.f -src/SLICOT-Reference/src/MB02JX.f -src/SLICOT-Reference/src/MB02KD.f -src/SLICOT-Reference/src/MB02MD.f -src/SLICOT-Reference/src/MB02ND.f -src/SLICOT-Reference/src/MB02NY.f -src/SLICOT-Reference/src/MB02OD.f -src/SLICOT-Reference/src/MB02PD.f -src/SLICOT-Reference/src/MB02QD.f -src/SLICOT-Reference/src/MB02QY.f -src/SLICOT-Reference/src/MB02RD.f -src/SLICOT-Reference/src/MB02RZ.f -src/SLICOT-Reference/src/MB02SD.f -src/SLICOT-Reference/src/MB02SZ.f -src/SLICOT-Reference/src/MB02TD.f -src/SLICOT-Reference/src/MB02TZ.f -src/SLICOT-Reference/src/MB02UD.f -src/SLICOT-Reference/src/MB02UU.f -src/SLICOT-Reference/src/MB02UV.f -src/SLICOT-Reference/src/MB02UW.f -src/SLICOT-Reference/src/MB02VD.f -src/SLICOT-Reference/src/MB02WD.f -src/SLICOT-Reference/src/MB02XD.f -src/SLICOT-Reference/src/MB02YD.f -src/SLICOT-Reference/src/MB03AB.f -src/SLICOT-Reference/src/MB03AD.f -src/SLICOT-Reference/src/MB03AE.f -src/SLICOT-Reference/src/MB03AF.f -src/SLICOT-Reference/src/MB03AG.f -src/SLICOT-Reference/src/MB03AH.f -src/SLICOT-Reference/src/MB03AI.f -src/SLICOT-Reference/src/MB03BA.f -src/SLICOT-Reference/src/MB03BB.f -src/SLICOT-Reference/src/MB03BC.f -src/SLICOT-Reference/src/MB03BD.f -src/SLICOT-Reference/src/MB03BE.f -src/SLICOT-Reference/src/MB03BF.f -src/SLICOT-Reference/src/MB03BG.f -src/SLICOT-Reference/src/MB03BZ.f -src/SLICOT-Reference/src/MB03CD.f -src/SLICOT-Reference/src/MB03CZ.f -src/SLICOT-Reference/src/MB03DD.f -src/SLICOT-Reference/src/MB03DZ.f -src/SLICOT-Reference/src/MB03ED.f -src/SLICOT-Reference/src/MB03FD.f -src/SLICOT-Reference/src/MB03FZ.f -src/SLICOT-Reference/src/MB03GD.f -src/SLICOT-Reference/src/MB03GZ.f -src/SLICOT-Reference/src/MB03HD.f -src/SLICOT-Reference/src/MB03HZ.f -src/SLICOT-Reference/src/MB03ID.f -src/SLICOT-Reference/src/MB03IZ.f -src/SLICOT-Reference/src/MB03JD.f -src/SLICOT-Reference/src/MB03JP.f -src/SLICOT-Reference/src/MB03JZ.f -src/SLICOT-Reference/src/MB03KA.f -src/SLICOT-Reference/src/MB03KB.f -src/SLICOT-Reference/src/MB03KC.f -src/SLICOT-Reference/src/MB03KD.f -src/SLICOT-Reference/src/MB03KE.f -src/SLICOT-Reference/src/MB03LD.f -src/SLICOT-Reference/src/MB03LF.f -src/SLICOT-Reference/src/MB03LP.f -src/SLICOT-Reference/src/MB03LZ.f -src/SLICOT-Reference/src/MB03MD.f -src/SLICOT-Reference/src/MB03MY.f -src/SLICOT-Reference/src/MB03ND.f -src/SLICOT-Reference/src/MB03NY.f -src/SLICOT-Reference/src/MB03OD.f -src/SLICOT-Reference/src/MB03OY.f -src/SLICOT-Reference/src/MB03PD.f -src/SLICOT-Reference/src/MB03PY.f -src/SLICOT-Reference/src/MB03QD.f -src/SLICOT-Reference/src/MB03QG.f -src/SLICOT-Reference/src/MB03QV.f -src/SLICOT-Reference/src/MB03QW.f -src/SLICOT-Reference/src/MB03QX.f -src/SLICOT-Reference/src/MB03QY.f -src/SLICOT-Reference/src/MB03RD.f -src/SLICOT-Reference/src/MB03RW.f -src/SLICOT-Reference/src/MB03RX.f -src/SLICOT-Reference/src/MB03RY.f -src/SLICOT-Reference/src/MB03RZ.f -src/SLICOT-Reference/src/MB03SD.f -src/SLICOT-Reference/src/MB03TD.f -src/SLICOT-Reference/src/MB03TS.f -src/SLICOT-Reference/src/MB03UD.f -src/SLICOT-Reference/src/MB03VD.f -src/SLICOT-Reference/src/MB03VW.f -src/SLICOT-Reference/src/MB03VY.f -src/SLICOT-Reference/src/MB03WA.f -src/SLICOT-Reference/src/MB03WD.f -src/SLICOT-Reference/src/MB03WX.f -src/SLICOT-Reference/src/MB03XD.f -src/SLICOT-Reference/src/MB03XP.f -src/SLICOT-Reference/src/MB03XS.f -src/SLICOT-Reference/src/MB03XU.f -src/SLICOT-Reference/src/MB03XZ.f -src/SLICOT-Reference/src/MB03YA.f -src/SLICOT-Reference/src/MB03YD.f -src/SLICOT-Reference/src/MB03YT.f -src/SLICOT-Reference/src/MB03ZA.f -src/SLICOT-Reference/src/MB03ZD.f -src/SLICOT-Reference/src/MB04AD.f -src/SLICOT-Reference/src/MB04AZ.f -src/SLICOT-Reference/src/MB04BD.f -src/SLICOT-Reference/src/MB04BP.f -src/SLICOT-Reference/src/MB04BZ.f -src/SLICOT-Reference/src/MB04CD.f -src/SLICOT-Reference/src/MB04DB.f -src/SLICOT-Reference/src/MB04DD.f -src/SLICOT-Reference/src/MB04DI.f -src/SLICOT-Reference/src/MB04DL.f -src/SLICOT-Reference/src/MB04DP.f -src/SLICOT-Reference/src/MB04DS.f -src/SLICOT-Reference/src/MB04DY.f -src/SLICOT-Reference/src/MB04DZ.f -src/SLICOT-Reference/src/MB04ED.f -src/SLICOT-Reference/src/MB04FD.f -src/SLICOT-Reference/src/MB04FP.f -src/SLICOT-Reference/src/MB04GD.f -src/SLICOT-Reference/src/MB04HD.f -src/SLICOT-Reference/src/MB04ID.f -src/SLICOT-Reference/src/MB04IY.f -src/SLICOT-Reference/src/MB04IZ.f -src/SLICOT-Reference/src/MB04JD.f -src/SLICOT-Reference/src/MB04KD.f -src/SLICOT-Reference/src/MB04LD.f -src/SLICOT-Reference/src/MB04MD.f -src/SLICOT-Reference/src/MB04ND.f -src/SLICOT-Reference/src/MB04NY.f -src/SLICOT-Reference/src/MB04OD.f -src/SLICOT-Reference/src/MB04OW.f -src/SLICOT-Reference/src/MB04OX.f -src/SLICOT-Reference/src/MB04OY.f -src/SLICOT-Reference/src/MB04PA.f -src/SLICOT-Reference/src/MB04PB.f -src/SLICOT-Reference/src/MB04PU.f -src/SLICOT-Reference/src/MB04PY.f -src/SLICOT-Reference/src/MB04QB.f -src/SLICOT-Reference/src/MB04QC.f -src/SLICOT-Reference/src/MB04QF.f -src/SLICOT-Reference/src/MB04QS.f -src/SLICOT-Reference/src/MB04QU.f -src/SLICOT-Reference/src/MB04RB.f -src/SLICOT-Reference/src/MB04RD.f -src/SLICOT-Reference/src/MB04RS.f -src/SLICOT-Reference/src/MB04RT.f -src/SLICOT-Reference/src/MB04RU.f -src/SLICOT-Reference/src/MB04RV.f -src/SLICOT-Reference/src/MB04RW.f -src/SLICOT-Reference/src/MB04RZ.f -src/SLICOT-Reference/src/MB04SU.f -src/SLICOT-Reference/src/MB04TB.f -src/SLICOT-Reference/src/MB04TS.f -src/SLICOT-Reference/src/MB04TT.f -src/SLICOT-Reference/src/MB04TU.f -src/SLICOT-Reference/src/MB04TV.f -src/SLICOT-Reference/src/MB04TW.f -src/SLICOT-Reference/src/MB04TX.f -src/SLICOT-Reference/src/MB04TY.f -src/SLICOT-Reference/src/MB04UD.f -src/SLICOT-Reference/src/MB04VD.f -src/SLICOT-Reference/src/MB04VX.f -src/SLICOT-Reference/src/MB04WD.f -src/SLICOT-Reference/src/MB04WP.f -src/SLICOT-Reference/src/MB04WR.f -src/SLICOT-Reference/src/MB04WU.f -src/SLICOT-Reference/src/MB04XD.f -src/SLICOT-Reference/src/MB04XY.f -src/SLICOT-Reference/src/MB04YD.f -src/SLICOT-Reference/src/MB04YW.f -src/SLICOT-Reference/src/MB04ZD.f -src/SLICOT-Reference/src/MB05MD.f -src/SLICOT-Reference/src/MB05MY.f -src/SLICOT-Reference/src/MB05ND.f -src/SLICOT-Reference/src/MB05OD.f -src/SLICOT-Reference/src/MB05OY.f -src/SLICOT-Reference/src/MB3JZP.f -src/SLICOT-Reference/src/MB3LZP.f -src/SLICOT-Reference/src/MB3OYZ.f -src/SLICOT-Reference/src/MB3PYZ.f -src/SLICOT-Reference/src/MB4DBZ.f -src/SLICOT-Reference/src/MB4DLZ.f -src/SLICOT-Reference/src/MB4DPZ.f -src/SLICOT-Reference/src/MC01MD.f -src/SLICOT-Reference/src/MC01ND.f -src/SLICOT-Reference/src/MC01OD.f -src/SLICOT-Reference/src/MC01PD.f -src/SLICOT-Reference/src/MC01PY.f -src/SLICOT-Reference/src/MC01QD.f -src/SLICOT-Reference/src/MC01RD.f -src/SLICOT-Reference/src/MC01SD.f -src/SLICOT-Reference/src/MC01SW.f -src/SLICOT-Reference/src/MC01SX.f -src/SLICOT-Reference/src/MC01SY.f -src/SLICOT-Reference/src/MC01TD.f -src/SLICOT-Reference/src/MC01VD.f -src/SLICOT-Reference/src/MC01WD.f -src/SLICOT-Reference/src/MC01XD.f -src/SLICOT-Reference/src/MC03MD.f -src/SLICOT-Reference/src/MC03ND.f -src/SLICOT-Reference/src/MC03NX.f -src/SLICOT-Reference/src/MC03NY.f -src/SLICOT-Reference/src/MD03AD.f -src/SLICOT-Reference/src/MD03BA.f -src/SLICOT-Reference/src/MD03BB.f -src/SLICOT-Reference/src/MD03BD.f -src/SLICOT-Reference/src/MD03BF.f -src/SLICOT-Reference/src/MD03BX.f -src/SLICOT-Reference/src/MD03BY.f -src/SLICOT-Reference/src/NF01AD.f -src/SLICOT-Reference/src/NF01AY.f -src/SLICOT-Reference/src/NF01BA.f -src/SLICOT-Reference/src/NF01BB.f -src/SLICOT-Reference/src/NF01BD.f -src/SLICOT-Reference/src/NF01BE.f -src/SLICOT-Reference/src/NF01BF.f -src/SLICOT-Reference/src/NF01BP.f -src/SLICOT-Reference/src/NF01BQ.f -src/SLICOT-Reference/src/NF01BR.f -src/SLICOT-Reference/src/NF01BS.f -src/SLICOT-Reference/src/NF01BU.f -src/SLICOT-Reference/src/NF01BV.f -src/SLICOT-Reference/src/NF01BW.f -src/SLICOT-Reference/src/NF01BX.f -src/SLICOT-Reference/src/NF01BY.f -src/SLICOT-Reference/src/SB01BD.f -src/SLICOT-Reference/src/SB01BX.f -src/SLICOT-Reference/src/SB01BY.f -src/SLICOT-Reference/src/SB01DD.f -src/SLICOT-Reference/src/SB01FY.f -src/SLICOT-Reference/src/SB01MD.f -src/SLICOT-Reference/src/SB02CX.f -src/SLICOT-Reference/src/SB02MD.f -src/SLICOT-Reference/src/SB02MR.f -src/SLICOT-Reference/src/SB02MS.f -src/SLICOT-Reference/src/SB02MT.f -src/SLICOT-Reference/src/SB02MU.f -src/SLICOT-Reference/src/SB02MV.f -src/SLICOT-Reference/src/SB02MW.f -src/SLICOT-Reference/src/SB02MX.f -src/SLICOT-Reference/src/SB02ND.f -src/SLICOT-Reference/src/SB02OD.f -src/SLICOT-Reference/src/SB02OU.f -src/SLICOT-Reference/src/SB02OV.f -src/SLICOT-Reference/src/SB02OW.f -src/SLICOT-Reference/src/SB02OX.f -src/SLICOT-Reference/src/SB02OY.f -src/SLICOT-Reference/src/SB02PD.f -src/SLICOT-Reference/src/SB02QD.f -src/SLICOT-Reference/src/SB02RD.f -src/SLICOT-Reference/src/SB02RU.f -src/SLICOT-Reference/src/SB02SD.f -src/SLICOT-Reference/src/SB03MD.f -src/SLICOT-Reference/src/SB03MU.f -src/SLICOT-Reference/src/SB03MV.f -src/SLICOT-Reference/src/SB03MW.f -src/SLICOT-Reference/src/SB03MX.f -src/SLICOT-Reference/src/SB03MY.f -src/SLICOT-Reference/src/SB03OD.f -src/SLICOT-Reference/src/SB03OR.f -src/SLICOT-Reference/src/SB03OS.f -src/SLICOT-Reference/src/SB03OT.f -src/SLICOT-Reference/src/SB03OU.f -src/SLICOT-Reference/src/SB03OV.f -src/SLICOT-Reference/src/SB03OY.f -src/SLICOT-Reference/src/SB03OZ.f -src/SLICOT-Reference/src/SB03PD.f -src/SLICOT-Reference/src/SB03QD.f -src/SLICOT-Reference/src/SB03QX.f -src/SLICOT-Reference/src/SB03QY.f -src/SLICOT-Reference/src/SB03RD.f -src/SLICOT-Reference/src/SB03SD.f -src/SLICOT-Reference/src/SB03SX.f -src/SLICOT-Reference/src/SB03SY.f -src/SLICOT-Reference/src/SB03TD.f -src/SLICOT-Reference/src/SB03UD.f -src/SLICOT-Reference/src/SB04MD.f -src/SLICOT-Reference/src/SB04MR.f -src/SLICOT-Reference/src/SB04MU.f -src/SLICOT-Reference/src/SB04MW.f -src/SLICOT-Reference/src/SB04MY.f -src/SLICOT-Reference/src/SB04ND.f -src/SLICOT-Reference/src/SB04NV.f -src/SLICOT-Reference/src/SB04NW.f -src/SLICOT-Reference/src/SB04NX.f -src/SLICOT-Reference/src/SB04NY.f -src/SLICOT-Reference/src/SB04OD.f -src/SLICOT-Reference/src/SB04OW.f -src/SLICOT-Reference/src/SB04PD.f -src/SLICOT-Reference/src/SB04PX.f -src/SLICOT-Reference/src/SB04PY.f -src/SLICOT-Reference/src/SB04QD.f -src/SLICOT-Reference/src/SB04QR.f -src/SLICOT-Reference/src/SB04QU.f -src/SLICOT-Reference/src/SB04QY.f -src/SLICOT-Reference/src/SB04RD.f -src/SLICOT-Reference/src/SB04RV.f -src/SLICOT-Reference/src/SB04RW.f -src/SLICOT-Reference/src/SB04RX.f -src/SLICOT-Reference/src/SB04RY.f -src/SLICOT-Reference/src/SB06ND.f -src/SLICOT-Reference/src/SB08CD.f -src/SLICOT-Reference/src/SB08DD.f -src/SLICOT-Reference/src/SB08ED.f -src/SLICOT-Reference/src/SB08FD.f -src/SLICOT-Reference/src/SB08GD.f -src/SLICOT-Reference/src/SB08HD.f -src/SLICOT-Reference/src/SB08MD.f -src/SLICOT-Reference/src/SB08MY.f -src/SLICOT-Reference/src/SB08ND.f -src/SLICOT-Reference/src/SB08NY.f -src/SLICOT-Reference/src/SB09MD.f -src/SLICOT-Reference/src/SB10AD.f -src/SLICOT-Reference/src/SB10DD.f -src/SLICOT-Reference/src/SB10ED.f -src/SLICOT-Reference/src/SB10FD.f -src/SLICOT-Reference/src/SB10HD.f -src/SLICOT-Reference/src/SB10ID.f -src/SLICOT-Reference/src/SB10JD.f -src/SLICOT-Reference/src/SB10KD.f -src/SLICOT-Reference/src/SB10LD.f -src/SLICOT-Reference/src/SB10MD.f -src/SLICOT-Reference/src/SB10PD.f -src/SLICOT-Reference/src/SB10QD.f -src/SLICOT-Reference/src/SB10RD.f -src/SLICOT-Reference/src/SB10SD.f -src/SLICOT-Reference/src/SB10TD.f -src/SLICOT-Reference/src/SB10UD.f -src/SLICOT-Reference/src/SB10VD.f -src/SLICOT-Reference/src/SB10WD.f -src/SLICOT-Reference/src/SB10YD.f -src/SLICOT-Reference/src/SB10ZD.f -src/SLICOT-Reference/src/SB10ZP.f -src/SLICOT-Reference/src/SB16AD.f -src/SLICOT-Reference/src/SB16AY.f -src/SLICOT-Reference/src/SB16BD.f -src/SLICOT-Reference/src/SB16CD.f -src/SLICOT-Reference/src/SB16CY.f -src/SLICOT-Reference/src/SG02AD.f -src/SLICOT-Reference/src/SG02CV.f -src/SLICOT-Reference/src/SG02CW.f -src/SLICOT-Reference/src/SG02CX.f -src/SLICOT-Reference/src/SG02ND.f -src/SLICOT-Reference/src/SG03AD.f -src/SLICOT-Reference/src/SG03AX.f -src/SLICOT-Reference/src/SG03AY.f -src/SLICOT-Reference/src/SG03BD.f -src/SLICOT-Reference/src/SG03BR.f -src/SLICOT-Reference/src/SG03BS.f -src/SLICOT-Reference/src/SG03BT.f -src/SLICOT-Reference/src/SG03BU.f -src/SLICOT-Reference/src/SG03BV.f -src/SLICOT-Reference/src/SG03BW.f -src/SLICOT-Reference/src/SG03BX.f -src/SLICOT-Reference/src/SG03BY.f -src/SLICOT-Reference/src/SG03BZ.f -src/SLICOT-Reference/src/TB01ID.f -src/SLICOT-Reference/src/TB01IZ.f -src/SLICOT-Reference/src/TB01KD.f -src/SLICOT-Reference/src/TB01KX.f -src/SLICOT-Reference/src/TB01LD.f -src/SLICOT-Reference/src/TB01MD.f -src/SLICOT-Reference/src/TB01ND.f -src/SLICOT-Reference/src/TB01PD.f -src/SLICOT-Reference/src/TB01PX.f -src/SLICOT-Reference/src/TB01TD.f -src/SLICOT-Reference/src/TB01TY.f -src/SLICOT-Reference/src/TB01UD.f -src/SLICOT-Reference/src/TB01UX.f -src/SLICOT-Reference/src/TB01UY.f -src/SLICOT-Reference/src/TB01VD.f -src/SLICOT-Reference/src/TB01VY.f -src/SLICOT-Reference/src/TB01WD.f -src/SLICOT-Reference/src/TB01WX.f -src/SLICOT-Reference/src/TB01XD.f -src/SLICOT-Reference/src/TB01XZ.f -src/SLICOT-Reference/src/TB01YD.f -src/SLICOT-Reference/src/TB01ZD.f -src/SLICOT-Reference/src/TB03AD.f -src/SLICOT-Reference/src/TB03AY.f -src/SLICOT-Reference/src/TB04AD.f -src/SLICOT-Reference/src/TB04AY.f -src/SLICOT-Reference/src/TB04BD.f -src/SLICOT-Reference/src/TB04BV.f -src/SLICOT-Reference/src/TB04BW.f -src/SLICOT-Reference/src/TB04BX.f -src/SLICOT-Reference/src/TB04CD.f -src/SLICOT-Reference/src/TB05AD.f -src/SLICOT-Reference/src/TC01OD.f -src/SLICOT-Reference/src/TC04AD.f -src/SLICOT-Reference/src/TC05AD.f -src/SLICOT-Reference/src/TD03AD.f -src/SLICOT-Reference/src/TD03AY.f -src/SLICOT-Reference/src/TD04AD.f -src/SLICOT-Reference/src/TD05AD.f -src/SLICOT-Reference/src/TF01MD.f -src/SLICOT-Reference/src/TF01MX.f -src/SLICOT-Reference/src/TF01MY.f -src/SLICOT-Reference/src/TF01ND.f -src/SLICOT-Reference/src/TF01OD.f -src/SLICOT-Reference/src/TF01PD.f -src/SLICOT-Reference/src/TF01QD.f -src/SLICOT-Reference/src/TF01RD.f -src/SLICOT-Reference/src/TG01AD.f -src/SLICOT-Reference/src/TG01AZ.f -src/SLICOT-Reference/src/TG01BD.f -src/SLICOT-Reference/src/TG01CD.f -src/SLICOT-Reference/src/TG01DD.f -src/SLICOT-Reference/src/TG01ED.f -src/SLICOT-Reference/src/TG01FD.f -src/SLICOT-Reference/src/TG01FZ.f -src/SLICOT-Reference/src/TG01GD.f -src/SLICOT-Reference/src/TG01HD.f -src/SLICOT-Reference/src/TG01HU.f -src/SLICOT-Reference/src/TG01HX.f -src/SLICOT-Reference/src/TG01HY.f -src/SLICOT-Reference/src/TG01ID.f -src/SLICOT-Reference/src/TG01JD.f -src/SLICOT-Reference/src/TG01JY.f -src/SLICOT-Reference/src/TG01KD.f -src/SLICOT-Reference/src/TG01KZ.f -src/SLICOT-Reference/src/TG01LD.f -src/SLICOT-Reference/src/TG01LY.f -src/SLICOT-Reference/src/TG01MD.f -src/SLICOT-Reference/src/TG01ND.f -src/SLICOT-Reference/src/TG01NX.f -src/SLICOT-Reference/src/TG01OA.f -src/SLICOT-Reference/src/TG01OB.f -src/SLICOT-Reference/src/TG01OD.f -src/SLICOT-Reference/src/TG01OZ.f -src/SLICOT-Reference/src/TG01PD.f -src/SLICOT-Reference/src/TG01QD.f -src/SLICOT-Reference/src/TG01WD.f -src/SLICOT-Reference/src/UD01BD.f -src/SLICOT-Reference/src/UD01CD.f -src/SLICOT-Reference/src/UD01DD.f -src/SLICOT-Reference/src/UD01MD.f -src/SLICOT-Reference/src/UD01MZ.f -src/SLICOT-Reference/src/UD01ND.f -src/SLICOT-Reference/src/UE01MD.f -src/SLICOT-Reference/src/zelctg.f - -src/SLICOT-Reference/src/delctg.f -src/SLICOT-Reference/src/select.f - -src/SLICOT-Reference/src/SLCT_DLATZM.f -src/SLICOT-Reference/src/SLCT_ZLATZM.f - -) - -set(SLYCOT_FSOURCE src/ftruefalse.f src/XERBLA.f) +# SLICOT sources +include(slicot-source.cmake) + +# compatibility and error handling +set(SLYCOT_FSOURCE src/ftruefalse.f src/XERBLA.f) + +add_library(slicot STATIC ${SLICOT_FSOURCE} ${SLYCOT_FSOURCE}) +set_property(TARGET slicot PROPERTY POSITION_INDEPENDENT_CODE ON) +if(SLYCOT_BUNDLE_OPENBLAS) + target_compile_options(slicot + PRIVATE + @${CMAKE_CURRENT_SOURCE_DIR}/scipy-openblas-symbols/scipy-openblas-symbols.def + -ffixed-line-length-132) +endif() +# f2py definitions set(F2PYSOURCE src/_wrapper.pyf) set(F2PYSOURCE_DEPS - src/analysis.pyf src/math.pyf - src/transform.pyf src/synthesis.pyf + src/analysis.pyf + src/math.pyf + src/transform.pyf + src/synthesis.pyf src/_helper.pyf) -set(SLYCOT_MODULE "_wrapper") - -set(GENERATED_MODULE - ${CMAKE_CURRENT_BINARY_DIR}/${SLYCOT_MODULE}${PYTHON_EXTENSION_MODULE_SUFFIX}) - - -set(CMAKE_Fortran_FLAGS ) - -add_custom_target(wrapper ALL DEPENDS ${SLICOT_FSOURCE} ${SLYCOT_FSOURCE}) add_custom_command( OUTPUT _wrappermodule.c _wrapper-f2pywrappers.f - COMMAND ${F2PY_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${F2PYSOURCE} DEPENDS ${F2PYSOURCE_DEPS} ${F2PYSOURCE} + VERBATIM + COMMAND ${Python_EXECUTABLE} -m numpy.f2py --skip-empty-wrappers ${CMAKE_CURRENT_SOURCE_DIR}/${F2PYSOURCE} ) -add_library( - ${SLYCOT_MODULE} MODULE - _wrappermodule.c - ${F2PY_INCLUDE_DIR}/fortranobject.c - _wrapper-f2pywrappers.f - ${SLICOT_FSOURCE} ${SLYCOT_FSOURCE}) - -target_link_libraries(${SLYCOT_MODULE} - ${LAPACK_LIBRARIES}) +python_add_library( + _wrapper MODULE + "${CMAKE_CURRENT_BINARY_DIR}/_wrappermodule.c" + "${CMAKE_CURRENT_BINARY_DIR}/_wrapper-f2pywrappers.f") -target_include_directories( - ${SLYCOT_MODULE} PUBLIC - ${Python_INCLUDE_DIRS} - ${Python_NumPy_INCLUDE_DIRS} - ${F2PY_INCLUDE_DIRS} - ) +target_link_libraries(_wrapper PRIVATE fortranobject) -if (UNIX) - if (APPLE) - set_target_properties(${SLYCOT_MODULE} PROPERTIES - LINK_FLAGS '-Wl,-dylib,-undefined,dynamic_lookup') - else() - set_target_properties(${SLYCOT_MODULE} PROPERTIES - LINK_FLAGS '-Wl,--allow-shlib-undefined') - endif() +if(SLYCOT_BUNDLE_OPENBLAS) + target_link_libraries(_wrapper PRIVATE slicot ${OPENBLAS_LIBRARY_FILE}) + # (only?) needed for editable no-isolation builds + set_target_properties(_wrapper PROPERTIES INSTALL_RPATH ${OPENBLAS_DIR}) +else() + target_link_libraries(_wrapper PRIVATE slicot LAPACK::LAPACK) endif() -python_extension_module(${SLYCOT_MODULE}) - -install(TARGETS ${SLYCOT_MODULE} LIBRARY DESTINATION slycot) +install(TARGETS _wrapper DESTINATION slycot) diff --git a/slycot/__init__.py b/slycot/__init__.py index 6cb415d0..e9f7bf82 100644 --- a/slycot/__init__.py +++ b/slycot/__init__.py @@ -1,96 +1,88 @@ -try: - __SLYCOT_SETUP__ -except NameError: - __SLYCOT_SETUP__ = False - - -if __SLYCOT_SETUP__: - import sys as _sys - _sys.stderr.write('Running from Slycot source directory.\n') - del _sys -else: - - # import slycot.examples - - # The Slycot library is organised by 11-chapters. Each chapter can be identified by a single letter. - # The following chapters are included: - # A : Analysis Routines (included) - # B : Benchmark - # C : Adaptive Control - # D : Data Analysis - # F : Filtering - # I : Identification - # M : Mathematical Routines (included) - # N : Nonlinear Systems - # S : Synthesis Routines (included) - # T : Transformation Routines (included) - # U : Utility Routines - - - # Analysis routines (18/61 wrapped) - from .analysis import (ab01nd, - ab04md, - ab05md, ab05nd, - ab07nd, - ab08nd, ab08nz, - ab09ad, ab09ax, ab09bd, ab09md, ab09nd, - ab13bd, ab13dd, ab13ed, ab13fd, ab13md, - ag08bd) - - # Benchmark routines (0/6 wrapped) - - # Adaptive control routines (0/0 wrapped) - - # Data analysis routines (0/8 wrapped) - - # Filtering routines (0/6 wrapped) - - # Identification routines (0/15 wrapped) - - # Mathematical routines (8/291 wrapped) - from .math import (mb02ed, mb03rd, mb03vd, mb03vy, mb03wd, - mb05md, mb05nd, - mc01td) - - # Nonlinear Systems (0/16 wrapped) - - # Synthesis routines ((17+1)/131 wrapped), sb03md57 is not part of slicot - from .synthesis import (sb01bd, - sb02md, sb02mt, sb02od, - sb03md, sb03md57, sb03od, - sb04md, sb04qd, - sb10ad, sb10dd, sb10fd, sb10hd, sb10jd, sb10yd, - sg02ad, - sg03ad, sg03bd) - - # Transformation routines (12/77 wrapped) - from .transform import (tb01id, tb01pd, - tb03ad, - tb04ad, - tb05ad, - tc01od, - tc04ad, - td04ad, - tf01md, tf01rd, - tg01ad, tg01fd) - - # Utility routines (0/7 wrapped) - - - from .version import __version__ - - __all__ = [ - ab01nd, ab04md, ab05md, ab05nd, ab07nd, ab08nd, ab08nz, - ab09ad, ab09ax, ab09bd, ab09md, ab09nd, ab13bd, ab13dd, - ab13ed, ab13fd, ab13md, ag08bd, mb02ed, mb03rd, mb03vd, - mb03vy, mb03wd, mb05md, mb05nd, mc01td, sb01bd, sb02md, - sb02mt, sb02od, sb03md, sb03md57, sb03od, sb04md, sb04qd, - sb10ad, sb10dd, sb10fd, sb10hd, sb10jd, sb10yd, sg02ad, - sg03ad, sg03bd, tb01id, tb01pd, tb03ad, tb04ad, tb05ad, - tc01od, tc04ad, td04ad, tf01md, tf01rd, tg01ad, tg01fd, - __version__ - ] - -def test(): - import pytest - pytest.main(['--pyargs', 'slycot']) +"""Slycot is a Python interface to the SLICOT library""" + +from importlib.metadata import version, PackageNotFoundError + +try: + __version__ = version('slycot') +except PackageNotFoundError: + pass + +# The Slycot library is organised by 11-chapters. Each chapter can be identified by a single letter. +# The following chapters are included: +# A : Analysis Routines (included) +# B : Benchmark +# C : Adaptive Control +# D : Data Analysis +# F : Filtering +# I : Identification +# M : Mathematical Routines (included) +# N : Nonlinear Systems +# S : Synthesis Routines (included) +# T : Transformation Routines (included) +# U : Utility Routines + +# Analysis routines (18/61 wrapped) +from .analysis import (ab01nd, + ab04md, + ab05md, ab05nd, + ab07nd, + ab08nd, ab08nz, + ab09ad, ab09ax, ab09bd, ab09md, ab09nd, + ab13bd, ab13dd, ab13ed, ab13fd, ab13md, + ag08bd) + +# Benchmark routines (0/6 wrapped) + +# Adaptive control routines (0/0 wrapped) + +# Data analysis routines (0/8 wrapped) + +# Filtering routines (0/6 wrapped) + +# Identification routines (0/15 wrapped) + +# Mathematical routines (8/291 wrapped) +from .math import (mb02ed, mb03rd, mb03vd, mb03vy, mb03wd, + mb05md, mb05nd, + mc01td) + +# Nonlinear Systems (0/16 wrapped) + +# Synthesis routines ((17+1)/131 wrapped), sb03md57 is not part of slicot +from .synthesis import (sb01bd, + sb02md, sb02mt, sb02od, + sb03md, sb03md57, sb03od, + sb04md, sb04qd, + sb10ad, sb10dd, sb10fd, sb10hd, sb10jd, sb10yd, + sg02ad, + sg03ad, sg03bd) + +# Transformation routines (12/77 wrapped) +from .transform import (tb01id, tb01pd, + tb03ad, + tb04ad, + tb05ad, + tc01od, + tc04ad, + td04ad, + tf01md, tf01rd, + tg01ad, tg01fd) + +# Utility routines (0/7 wrapped) + + +__all__ = [ + ab01nd, ab04md, ab05md, ab05nd, ab07nd, ab08nd, ab08nz, + ab09ad, ab09ax, ab09bd, ab09md, ab09nd, ab13bd, ab13dd, + ab13ed, ab13fd, ab13md, ag08bd, mb02ed, mb03rd, mb03vd, + mb03vy, mb03wd, mb05md, mb05nd, mc01td, sb01bd, sb02md, + sb02mt, sb02od, sb03md, sb03md57, sb03od, sb04md, sb04qd, + sb10ad, sb10dd, sb10fd, sb10hd, sb10jd, sb10yd, sg02ad, + sg03ad, sg03bd, tb01id, tb01pd, tb03ad, tb04ad, tb05ad, + tc01od, tc04ad, td04ad, tf01md, tf01rd, tg01ad, tg01fd, + __version__ + ] + +def test(): + import pytest + pytest.main(['--pyargs', 'slycot']) diff --git a/slycot/scipy-openblas-symbols/cython_blas_signatures.txt b/slycot/scipy-openblas-symbols/cython_blas_signatures.txt new file mode 100644 index 00000000..a98f61b9 --- /dev/null +++ b/slycot/scipy-openblas-symbols/cython_blas_signatures.txt @@ -0,0 +1,154 @@ +# Taken from Scipy 1.17.1 source tarball at https://github.com/scipy/scipy/archive/refs/tags/v1.17.1.tar.gz +# file cython_blas_signatures.txt + +# This file was generated by _cython_signature_generator.py +# Do not edit this file directly. + +void caxpy(int *n, c *ca, c *cx, int *incx, c *cy, int *incy) +void ccopy(int *n, c *cx, int *incx, c *cy, int *incy) +c cdotc(int *n, c *cx, int *incx, c *cy, int *incy) +c cdotu(int *n, c *cx, int *incx, c *cy, int *incy) +void cgbmv(char *trans, int *m, int *n, int *kl, int *ku, c *alpha, c *a, int *lda, c *x, int *incx, c *beta, c *y, int *incy) +void cgemm(char *transa, char *transb, int *m, int *n, int *k, c *alpha, c *a, int *lda, c *b, int *ldb, c *beta, c *c, int *ldc) +void cgemv(char *trans, int *m, int *n, c *alpha, c *a, int *lda, c *x, int *incx, c *beta, c *y, int *incy) +void cgerc(int *m, int *n, c *alpha, c *x, int *incx, c *y, int *incy, c *a, int *lda) +void cgeru(int *m, int *n, c *alpha, c *x, int *incx, c *y, int *incy, c *a, int *lda) +void chbmv(char *uplo, int *n, int *k, c *alpha, c *a, int *lda, c *x, int *incx, c *beta, c *y, int *incy) +void chemm(char *side, char *uplo, int *m, int *n, c *alpha, c *a, int *lda, c *b, int *ldb, c *beta, c *c, int *ldc) +void chemv(char *uplo, int *n, c *alpha, c *a, int *lda, c *x, int *incx, c *beta, c *y, int *incy) +void cher(char *uplo, int *n, s *alpha, c *x, int *incx, c *a, int *lda) +void cher2(char *uplo, int *n, c *alpha, c *x, int *incx, c *y, int *incy, c *a, int *lda) +void cher2k(char *uplo, char *trans, int *n, int *k, c *alpha, c *a, int *lda, c *b, int *ldb, s *beta, c *c, int *ldc) +void cherk(char *uplo, char *trans, int *n, int *k, s *alpha, c *a, int *lda, s *beta, c *c, int *ldc) +void chpmv(char *uplo, int *n, c *alpha, c *ap, c *x, int *incx, c *beta, c *y, int *incy) +void chpr(char *uplo, int *n, s *alpha, c *x, int *incx, c *ap) +void chpr2(char *uplo, int *n, c *alpha, c *x, int *incx, c *y, int *incy, c *ap) +void crotg(c *ca, c *cb, s *c, c *s) +void cscal(int *n, c *ca, c *cx, int *incx) +void csrot(int *n, c *cx, int *incx, c *cy, int *incy, s *c, s *s) +void csscal(int *n, s *sa, c *cx, int *incx) +void cswap(int *n, c *cx, int *incx, c *cy, int *incy) +void csymm(char *side, char *uplo, int *m, int *n, c *alpha, c *a, int *lda, c *b, int *ldb, c *beta, c *c, int *ldc) +void csyr2k(char *uplo, char *trans, int *n, int *k, c *alpha, c *a, int *lda, c *b, int *ldb, c *beta, c *c, int *ldc) +void csyrk(char *uplo, char *trans, int *n, int *k, c *alpha, c *a, int *lda, c *beta, c *c, int *ldc) +void ctbmv(char *uplo, char *trans, char *diag, int *n, int *k, c *a, int *lda, c *x, int *incx) +void ctbsv(char *uplo, char *trans, char *diag, int *n, int *k, c *a, int *lda, c *x, int *incx) +void ctpmv(char *uplo, char *trans, char *diag, int *n, c *ap, c *x, int *incx) +void ctpsv(char *uplo, char *trans, char *diag, int *n, c *ap, c *x, int *incx) +void ctrmm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, c *alpha, c *a, int *lda, c *b, int *ldb) +void ctrmv(char *uplo, char *trans, char *diag, int *n, c *a, int *lda, c *x, int *incx) +void ctrsm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, c *alpha, c *a, int *lda, c *b, int *ldb) +void ctrsv(char *uplo, char *trans, char *diag, int *n, c *a, int *lda, c *x, int *incx) +d dasum(int *n, d *dx, int *incx) +void daxpy(int *n, d *da, d *dx, int *incx, d *dy, int *incy) +d dcabs1(z *z) +void dcopy(int *n, d *dx, int *incx, d *dy, int *incy) +d ddot(int *n, d *dx, int *incx, d *dy, int *incy) +void dgbmv(char *trans, int *m, int *n, int *kl, int *ku, d *alpha, d *a, int *lda, d *x, int *incx, d *beta, d *y, int *incy) +void dgemm(char *transa, char *transb, int *m, int *n, int *k, d *alpha, d *a, int *lda, d *b, int *ldb, d *beta, d *c, int *ldc) +void dgemv(char *trans, int *m, int *n, d *alpha, d *a, int *lda, d *x, int *incx, d *beta, d *y, int *incy) +void dger(int *m, int *n, d *alpha, d *x, int *incx, d *y, int *incy, d *a, int *lda) +d dnrm2(int *n, d *x, int *incx) +void drot(int *n, d *dx, int *incx, d *dy, int *incy, d *c, d *s) +void drotg(d *da, d *db, d *c, d *s) +void drotm(int *n, d *dx, int *incx, d *dy, int *incy, d *dparam) +void drotmg(d *dd1, d *dd2, d *dx1, d *dy1, d *dparam) +void dsbmv(char *uplo, int *n, int *k, d *alpha, d *a, int *lda, d *x, int *incx, d *beta, d *y, int *incy) +void dscal(int *n, d *da, d *dx, int *incx) +d dsdot(int *n, s *sx, int *incx, s *sy, int *incy) +void dspmv(char *uplo, int *n, d *alpha, d *ap, d *x, int *incx, d *beta, d *y, int *incy) +void dspr(char *uplo, int *n, d *alpha, d *x, int *incx, d *ap) +void dspr2(char *uplo, int *n, d *alpha, d *x, int *incx, d *y, int *incy, d *ap) +void dswap(int *n, d *dx, int *incx, d *dy, int *incy) +void dsymm(char *side, char *uplo, int *m, int *n, d *alpha, d *a, int *lda, d *b, int *ldb, d *beta, d *c, int *ldc) +void dsymv(char *uplo, int *n, d *alpha, d *a, int *lda, d *x, int *incx, d *beta, d *y, int *incy) +void dsyr(char *uplo, int *n, d *alpha, d *x, int *incx, d *a, int *lda) +void dsyr2(char *uplo, int *n, d *alpha, d *x, int *incx, d *y, int *incy, d *a, int *lda) +void dsyr2k(char *uplo, char *trans, int *n, int *k, d *alpha, d *a, int *lda, d *b, int *ldb, d *beta, d *c, int *ldc) +void dsyrk(char *uplo, char *trans, int *n, int *k, d *alpha, d *a, int *lda, d *beta, d *c, int *ldc) +void dtbmv(char *uplo, char *trans, char *diag, int *n, int *k, d *a, int *lda, d *x, int *incx) +void dtbsv(char *uplo, char *trans, char *diag, int *n, int *k, d *a, int *lda, d *x, int *incx) +void dtpmv(char *uplo, char *trans, char *diag, int *n, d *ap, d *x, int *incx) +void dtpsv(char *uplo, char *trans, char *diag, int *n, d *ap, d *x, int *incx) +void dtrmm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, d *alpha, d *a, int *lda, d *b, int *ldb) +void dtrmv(char *uplo, char *trans, char *diag, int *n, d *a, int *lda, d *x, int *incx) +void dtrsm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, d *alpha, d *a, int *lda, d *b, int *ldb) +void dtrsv(char *uplo, char *trans, char *diag, int *n, d *a, int *lda, d *x, int *incx) +d dzasum(int *n, z *zx, int *incx) +d dznrm2(int *n, z *x, int *incx) +int icamax(int *n, c *cx, int *incx) +int idamax(int *n, d *dx, int *incx) +int isamax(int *n, s *sx, int *incx) +int izamax(int *n, z *zx, int *incx) +bint lsame(char *ca, char *cb) +s sasum(int *n, s *sx, int *incx) +void saxpy(int *n, s *sa, s *sx, int *incx, s *sy, int *incy) +s scasum(int *n, c *cx, int *incx) +s scnrm2(int *n, c *x, int *incx) +void scopy(int *n, s *sx, int *incx, s *sy, int *incy) +s sdot(int *n, s *sx, int *incx, s *sy, int *incy) +s sdsdot(int *n, s *sb, s *sx, int *incx, s *sy, int *incy) +void sgbmv(char *trans, int *m, int *n, int *kl, int *ku, s *alpha, s *a, int *lda, s *x, int *incx, s *beta, s *y, int *incy) +void sgemm(char *transa, char *transb, int *m, int *n, int *k, s *alpha, s *a, int *lda, s *b, int *ldb, s *beta, s *c, int *ldc) +void sgemv(char *trans, int *m, int *n, s *alpha, s *a, int *lda, s *x, int *incx, s *beta, s *y, int *incy) +void sger(int *m, int *n, s *alpha, s *x, int *incx, s *y, int *incy, s *a, int *lda) +s snrm2(int *n, s *x, int *incx) +void srot(int *n, s *sx, int *incx, s *sy, int *incy, s *c, s *s) +void srotg(s *sa, s *sb, s *c, s *s) +void srotm(int *n, s *sx, int *incx, s *sy, int *incy, s *sparam) +void srotmg(s *sd1, s *sd2, s *sx1, s *sy1, s *sparam) +void ssbmv(char *uplo, int *n, int *k, s *alpha, s *a, int *lda, s *x, int *incx, s *beta, s *y, int *incy) +void sscal(int *n, s *sa, s *sx, int *incx) +void sspmv(char *uplo, int *n, s *alpha, s *ap, s *x, int *incx, s *beta, s *y, int *incy) +void sspr(char *uplo, int *n, s *alpha, s *x, int *incx, s *ap) +void sspr2(char *uplo, int *n, s *alpha, s *x, int *incx, s *y, int *incy, s *ap) +void sswap(int *n, s *sx, int *incx, s *sy, int *incy) +void ssymm(char *side, char *uplo, int *m, int *n, s *alpha, s *a, int *lda, s *b, int *ldb, s *beta, s *c, int *ldc) +void ssymv(char *uplo, int *n, s *alpha, s *a, int *lda, s *x, int *incx, s *beta, s *y, int *incy) +void ssyr(char *uplo, int *n, s *alpha, s *x, int *incx, s *a, int *lda) +void ssyr2(char *uplo, int *n, s *alpha, s *x, int *incx, s *y, int *incy, s *a, int *lda) +void ssyr2k(char *uplo, char *trans, int *n, int *k, s *alpha, s *a, int *lda, s *b, int *ldb, s *beta, s *c, int *ldc) +void ssyrk(char *uplo, char *trans, int *n, int *k, s *alpha, s *a, int *lda, s *beta, s *c, int *ldc) +void stbmv(char *uplo, char *trans, char *diag, int *n, int *k, s *a, int *lda, s *x, int *incx) +void stbsv(char *uplo, char *trans, char *diag, int *n, int *k, s *a, int *lda, s *x, int *incx) +void stpmv(char *uplo, char *trans, char *diag, int *n, s *ap, s *x, int *incx) +void stpsv(char *uplo, char *trans, char *diag, int *n, s *ap, s *x, int *incx) +void strmm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, s *alpha, s *a, int *lda, s *b, int *ldb) +void strmv(char *uplo, char *trans, char *diag, int *n, s *a, int *lda, s *x, int *incx) +void strsm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, s *alpha, s *a, int *lda, s *b, int *ldb) +void strsv(char *uplo, char *trans, char *diag, int *n, s *a, int *lda, s *x, int *incx) +void zaxpy(int *n, z *za, z *zx, int *incx, z *zy, int *incy) +void zcopy(int *n, z *zx, int *incx, z *zy, int *incy) +z zdotc(int *n, z *zx, int *incx, z *zy, int *incy) +z zdotu(int *n, z *zx, int *incx, z *zy, int *incy) +void zdrot(int *n, z *cx, int *incx, z *cy, int *incy, d *c, d *s) +void zdscal(int *n, d *da, z *zx, int *incx) +void zgbmv(char *trans, int *m, int *n, int *kl, int *ku, z *alpha, z *a, int *lda, z *x, int *incx, z *beta, z *y, int *incy) +void zgemm(char *transa, char *transb, int *m, int *n, int *k, z *alpha, z *a, int *lda, z *b, int *ldb, z *beta, z *c, int *ldc) +void zgemv(char *trans, int *m, int *n, z *alpha, z *a, int *lda, z *x, int *incx, z *beta, z *y, int *incy) +void zgerc(int *m, int *n, z *alpha, z *x, int *incx, z *y, int *incy, z *a, int *lda) +void zgeru(int *m, int *n, z *alpha, z *x, int *incx, z *y, int *incy, z *a, int *lda) +void zhbmv(char *uplo, int *n, int *k, z *alpha, z *a, int *lda, z *x, int *incx, z *beta, z *y, int *incy) +void zhemm(char *side, char *uplo, int *m, int *n, z *alpha, z *a, int *lda, z *b, int *ldb, z *beta, z *c, int *ldc) +void zhemv(char *uplo, int *n, z *alpha, z *a, int *lda, z *x, int *incx, z *beta, z *y, int *incy) +void zher(char *uplo, int *n, d *alpha, z *x, int *incx, z *a, int *lda) +void zher2(char *uplo, int *n, z *alpha, z *x, int *incx, z *y, int *incy, z *a, int *lda) +void zher2k(char *uplo, char *trans, int *n, int *k, z *alpha, z *a, int *lda, z *b, int *ldb, d *beta, z *c, int *ldc) +void zherk(char *uplo, char *trans, int *n, int *k, d *alpha, z *a, int *lda, d *beta, z *c, int *ldc) +void zhpmv(char *uplo, int *n, z *alpha, z *ap, z *x, int *incx, z *beta, z *y, int *incy) +void zhpr(char *uplo, int *n, d *alpha, z *x, int *incx, z *ap) +void zhpr2(char *uplo, int *n, z *alpha, z *x, int *incx, z *y, int *incy, z *ap) +void zrotg(z *ca, z *cb, d *c, z *s) +void zscal(int *n, z *za, z *zx, int *incx) +void zswap(int *n, z *zx, int *incx, z *zy, int *incy) +void zsymm(char *side, char *uplo, int *m, int *n, z *alpha, z *a, int *lda, z *b, int *ldb, z *beta, z *c, int *ldc) +void zsyr2k(char *uplo, char *trans, int *n, int *k, z *alpha, z *a, int *lda, z *b, int *ldb, z *beta, z *c, int *ldc) +void zsyrk(char *uplo, char *trans, int *n, int *k, z *alpha, z *a, int *lda, z *beta, z *c, int *ldc) +void ztbmv(char *uplo, char *trans, char *diag, int *n, int *k, z *a, int *lda, z *x, int *incx) +void ztbsv(char *uplo, char *trans, char *diag, int *n, int *k, z *a, int *lda, z *x, int *incx) +void ztpmv(char *uplo, char *trans, char *diag, int *n, z *ap, z *x, int *incx) +void ztpsv(char *uplo, char *trans, char *diag, int *n, z *ap, z *x, int *incx) +void ztrmm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, z *alpha, z *a, int *lda, z *b, int *ldb) +void ztrmv(char *uplo, char *trans, char *diag, int *n, z *a, int *lda, z *x, int *incx) +void ztrsm(char *side, char *uplo, char *transa, char *diag, int *m, int *n, z *alpha, z *a, int *lda, z *b, int *ldb) +void ztrsv(char *uplo, char *trans, char *diag, int *n, z *a, int *lda, z *x, int *incx) diff --git a/slycot/scipy-openblas-symbols/cython_lapack_signatures.txt b/slycot/scipy-openblas-symbols/cython_lapack_signatures.txt new file mode 100644 index 00000000..5f6c82a4 --- /dev/null +++ b/slycot/scipy-openblas-symbols/cython_lapack_signatures.txt @@ -0,0 +1,1502 @@ +# Taken from Scipy 1.17.1 source tarball at https://github.com/scipy/scipy/archive/refs/tags/v1.17.1.tar.gz +# file cython_lapack_signatures.txt + +# This file was generated by _cython_signature_generator.py. +# Do not edit this file directly. + +void cbbcsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, int *m, int *p, int *q, s *theta, s *phi, c *u1, int *ldu1, c *u2, int *ldu2, c *v1t, int *ldv1t, c *v2t, int *ldv2t, s *b11d, s *b11e, s *b12d, s *b12e, s *b21d, s *b21e, s *b22d, s *b22e, s *rwork, int *lrwork, int *info) +void cbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, s *d, s *e, c *vt, int *ldvt, c *u, int *ldu, c *c, int *ldc, s *rwork, int *info) +void cgbbrd(char *vect, int *m, int *n, int *ncc, int *kl, int *ku, c *ab, int *ldab, s *d, s *e, c *q, int *ldq, c *pt, int *ldpt, c *c, int *ldc, c *work, s *rwork, int *info) +void cgbcon(char *norm, int *n, int *kl, int *ku, c *ab, int *ldab, int *ipiv, s *anorm, s *rcond, c *work, s *rwork, int *info) +void cgbequ(int *m, int *n, int *kl, int *ku, c *ab, int *ldab, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void cgbequb(int *m, int *n, int *kl, int *ku, c *ab, int *ldab, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void cgbrfs(char *trans, int *n, int *kl, int *ku, int *nrhs, c *ab, int *ldab, c *afb, int *ldafb, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cgbsv(int *n, int *kl, int *ku, int *nrhs, c *ab, int *ldab, int *ipiv, c *b, int *ldb, int *info) +void cgbsvx(char *fact, char *trans, int *n, int *kl, int *ku, int *nrhs, c *ab, int *ldab, c *afb, int *ldafb, int *ipiv, char *equed, s *r, s *c, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void cgbtf2(int *m, int *n, int *kl, int *ku, c *ab, int *ldab, int *ipiv, int *info) +void cgbtrf(int *m, int *n, int *kl, int *ku, c *ab, int *ldab, int *ipiv, int *info) +void cgbtrs(char *trans, int *n, int *kl, int *ku, int *nrhs, c *ab, int *ldab, int *ipiv, c *b, int *ldb, int *info) +void cgebak(char *job, char *side, int *n, int *ilo, int *ihi, s *scale, int *m, c *v, int *ldv, int *info) +void cgebal(char *job, int *n, c *a, int *lda, int *ilo, int *ihi, s *scale, int *info) +void cgebd2(int *m, int *n, c *a, int *lda, s *d, s *e, c *tauq, c *taup, c *work, int *info) +void cgebrd(int *m, int *n, c *a, int *lda, s *d, s *e, c *tauq, c *taup, c *work, int *lwork, int *info) +void cgecon(char *norm, int *n, c *a, int *lda, s *anorm, s *rcond, c *work, s *rwork, int *info) +void cgeequ(int *m, int *n, c *a, int *lda, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void cgeequb(int *m, int *n, c *a, int *lda, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void cgees(char *jobvs, char *sort, cselect1 *select, int *n, c *a, int *lda, int *sdim, c *w, c *vs, int *ldvs, c *work, int *lwork, s *rwork, bint *bwork, int *info) +void cgeesx(char *jobvs, char *sort, cselect1 *select, char *sense, int *n, c *a, int *lda, int *sdim, c *w, c *vs, int *ldvs, s *rconde, s *rcondv, c *work, int *lwork, s *rwork, bint *bwork, int *info) +void cgeev(char *jobvl, char *jobvr, int *n, c *a, int *lda, c *w, c *vl, int *ldvl, c *vr, int *ldvr, c *work, int *lwork, s *rwork, int *info) +void cgeevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, c *a, int *lda, c *w, c *vl, int *ldvl, c *vr, int *ldvr, int *ilo, int *ihi, s *scale, s *abnrm, s *rconde, s *rcondv, c *work, int *lwork, s *rwork, int *info) +void cgehd2(int *n, int *ilo, int *ihi, c *a, int *lda, c *tau, c *work, int *info) +void cgehrd(int *n, int *ilo, int *ihi, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cgelq2(int *m, int *n, c *a, int *lda, c *tau, c *work, int *info) +void cgelqf(int *m, int *n, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cgels(char *trans, int *m, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, c *work, int *lwork, int *info) +void cgelsd(int *m, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, s *s, s *rcond, int *rank, c *work, int *lwork, s *rwork, int *iwork, int *info) +void cgelss(int *m, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, s *s, s *rcond, int *rank, c *work, int *lwork, s *rwork, int *info) +void cgelsy(int *m, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, int *jpvt, s *rcond, int *rank, c *work, int *lwork, s *rwork, int *info) +void cgemqrt(char *side, char *trans, int *m, int *n, int *k, int *nb, c *v, int *ldv, c *t, int *ldt, c *c, int *ldc, c *work, int *info) +void cgeql2(int *m, int *n, c *a, int *lda, c *tau, c *work, int *info) +void cgeqlf(int *m, int *n, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cgeqp3(int *m, int *n, c *a, int *lda, int *jpvt, c *tau, c *work, int *lwork, s *rwork, int *info) +void cgeqr2(int *m, int *n, c *a, int *lda, c *tau, c *work, int *info) +void cgeqr2p(int *m, int *n, c *a, int *lda, c *tau, c *work, int *info) +void cgeqrf(int *m, int *n, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cgeqrfp(int *m, int *n, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cgeqrt(int *m, int *n, int *nb, c *a, int *lda, c *t, int *ldt, c *work, int *info) +void cgeqrt2(int *m, int *n, c *a, int *lda, c *t, int *ldt, int *info) +void cgeqrt3(int *m, int *n, c *a, int *lda, c *t, int *ldt, int *info) +void cgerfs(char *trans, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cgerq2(int *m, int *n, c *a, int *lda, c *tau, c *work, int *info) +void cgerqf(int *m, int *n, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cgesc2(int *n, c *a, int *lda, c *rhs, int *ipiv, int *jpiv, s *scale) +void cgesdd(char *jobz, int *m, int *n, c *a, int *lda, s *s, c *u, int *ldu, c *vt, int *ldvt, c *work, int *lwork, s *rwork, int *iwork, int *info) +void cgesv(int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, int *info) +void cgesvd(char *jobu, char *jobvt, int *m, int *n, c *a, int *lda, s *s, c *u, int *ldu, c *vt, int *ldvt, c *work, int *lwork, s *rwork, int *info) +void cgesvx(char *fact, char *trans, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, int *ipiv, char *equed, s *r, s *c, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void cgetc2(int *n, c *a, int *lda, int *ipiv, int *jpiv, int *info) +void cgetf2(int *m, int *n, c *a, int *lda, int *ipiv, int *info) +void cgetrf(int *m, int *n, c *a, int *lda, int *ipiv, int *info) +void cgetri(int *n, c *a, int *lda, int *ipiv, c *work, int *lwork, int *info) +void cgetrs(char *trans, int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, int *info) +void cggbak(char *job, char *side, int *n, int *ilo, int *ihi, s *lscale, s *rscale, int *m, c *v, int *ldv, int *info) +void cggbal(char *job, int *n, c *a, int *lda, c *b, int *ldb, int *ilo, int *ihi, s *lscale, s *rscale, s *work, int *info) +void cgges(char *jobvsl, char *jobvsr, char *sort, cselect2 *selctg, int *n, c *a, int *lda, c *b, int *ldb, int *sdim, c *alpha, c *beta, c *vsl, int *ldvsl, c *vsr, int *ldvsr, c *work, int *lwork, s *rwork, bint *bwork, int *info) +void cggesx(char *jobvsl, char *jobvsr, char *sort, cselect2 *selctg, char *sense, int *n, c *a, int *lda, c *b, int *ldb, int *sdim, c *alpha, c *beta, c *vsl, int *ldvsl, c *vsr, int *ldvsr, s *rconde, s *rcondv, c *work, int *lwork, s *rwork, int *iwork, int *liwork, bint *bwork, int *info) +void cggev(char *jobvl, char *jobvr, int *n, c *a, int *lda, c *b, int *ldb, c *alpha, c *beta, c *vl, int *ldvl, c *vr, int *ldvr, c *work, int *lwork, s *rwork, int *info) +void cggevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, c *a, int *lda, c *b, int *ldb, c *alpha, c *beta, c *vl, int *ldvl, c *vr, int *ldvr, int *ilo, int *ihi, s *lscale, s *rscale, s *abnrm, s *bbnrm, s *rconde, s *rcondv, c *work, int *lwork, s *rwork, int *iwork, bint *bwork, int *info) +void cggglm(int *n, int *m, int *p, c *a, int *lda, c *b, int *ldb, c *d, c *x, c *y, c *work, int *lwork, int *info) +void cgghrd(char *compq, char *compz, int *n, int *ilo, int *ihi, c *a, int *lda, c *b, int *ldb, c *q, int *ldq, c *z, int *ldz, int *info) +void cgglse(int *m, int *n, int *p, c *a, int *lda, c *b, int *ldb, c *c, c *d, c *x, c *work, int *lwork, int *info) +void cggqrf(int *n, int *m, int *p, c *a, int *lda, c *taua, c *b, int *ldb, c *taub, c *work, int *lwork, int *info) +void cggrqf(int *m, int *p, int *n, c *a, int *lda, c *taua, c *b, int *ldb, c *taub, c *work, int *lwork, int *info) +void cgtcon(char *norm, int *n, c *dl, c *d, c *du, c *du2, int *ipiv, s *anorm, s *rcond, c *work, int *info) +void cgtrfs(char *trans, int *n, int *nrhs, c *dl, c *d, c *du, c *dlf, c *df, c *duf, c *du2, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cgtsv(int *n, int *nrhs, c *dl, c *d, c *du, c *b, int *ldb, int *info) +void cgtsvx(char *fact, char *trans, int *n, int *nrhs, c *dl, c *d, c *du, c *dlf, c *df, c *duf, c *du2, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void cgttrf(int *n, c *dl, c *d, c *du, c *du2, int *ipiv, int *info) +void cgttrs(char *trans, int *n, int *nrhs, c *dl, c *d, c *du, c *du2, int *ipiv, c *b, int *ldb, int *info) +void cgtts2(int *itrans, int *n, int *nrhs, c *dl, c *d, c *du, c *du2, int *ipiv, c *b, int *ldb) +void chbev(char *jobz, char *uplo, int *n, int *kd, c *ab, int *ldab, s *w, c *z, int *ldz, c *work, s *rwork, int *info) +void chbevd(char *jobz, char *uplo, int *n, int *kd, c *ab, int *ldab, s *w, c *z, int *ldz, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void chbevx(char *jobz, char *range, char *uplo, int *n, int *kd, c *ab, int *ldab, c *q, int *ldq, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, c *work, s *rwork, int *iwork, int *ifail, int *info) +void chbgst(char *vect, char *uplo, int *n, int *ka, int *kb, c *ab, int *ldab, c *bb, int *ldbb, c *x, int *ldx, c *work, s *rwork, int *info) +void chbgv(char *jobz, char *uplo, int *n, int *ka, int *kb, c *ab, int *ldab, c *bb, int *ldbb, s *w, c *z, int *ldz, c *work, s *rwork, int *info) +void chbgvd(char *jobz, char *uplo, int *n, int *ka, int *kb, c *ab, int *ldab, c *bb, int *ldbb, s *w, c *z, int *ldz, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void chbgvx(char *jobz, char *range, char *uplo, int *n, int *ka, int *kb, c *ab, int *ldab, c *bb, int *ldbb, c *q, int *ldq, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, c *work, s *rwork, int *iwork, int *ifail, int *info) +void chbtrd(char *vect, char *uplo, int *n, int *kd, c *ab, int *ldab, s *d, s *e, c *q, int *ldq, c *work, int *info) +void checon(char *uplo, int *n, c *a, int *lda, int *ipiv, s *anorm, s *rcond, c *work, int *info) +void cheequb(char *uplo, int *n, c *a, int *lda, s *s, s *scond, s *amax, c *work, int *info) +void cheev(char *jobz, char *uplo, int *n, c *a, int *lda, s *w, c *work, int *lwork, s *rwork, int *info) +void cheevd(char *jobz, char *uplo, int *n, c *a, int *lda, s *w, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void cheevr(char *jobz, char *range, char *uplo, int *n, c *a, int *lda, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, int *isuppz, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void cheevx(char *jobz, char *range, char *uplo, int *n, c *a, int *lda, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, c *work, int *lwork, s *rwork, int *iwork, int *ifail, int *info) +void chegs2(int *itype, char *uplo, int *n, c *a, int *lda, c *b, int *ldb, int *info) +void chegst(int *itype, char *uplo, int *n, c *a, int *lda, c *b, int *ldb, int *info) +void chegv(int *itype, char *jobz, char *uplo, int *n, c *a, int *lda, c *b, int *ldb, s *w, c *work, int *lwork, s *rwork, int *info) +void chegvd(int *itype, char *jobz, char *uplo, int *n, c *a, int *lda, c *b, int *ldb, s *w, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void chegvx(int *itype, char *jobz, char *range, char *uplo, int *n, c *a, int *lda, c *b, int *ldb, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, c *work, int *lwork, s *rwork, int *iwork, int *ifail, int *info) +void cherfs(char *uplo, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void chesv(char *uplo, int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, c *work, int *lwork, int *info) +void chesvx(char *fact, char *uplo, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, int *lwork, s *rwork, int *info) +void cheswapr(char *uplo, int *n, c *a, int *lda, int *i1, int *i2) +void chetd2(char *uplo, int *n, c *a, int *lda, s *d, s *e, c *tau, int *info) +void chetf2(char *uplo, int *n, c *a, int *lda, int *ipiv, int *info) +void chetrd(char *uplo, int *n, c *a, int *lda, s *d, s *e, c *tau, c *work, int *lwork, int *info) +void chetrf(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *lwork, int *info) +void chetri(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *info) +void chetri2(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *lwork, int *info) +void chetri2x(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *nb, int *info) +void chetrs(char *uplo, int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, int *info) +void chetrs2(char *uplo, int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, c *work, int *info) +void chfrk(char *transr, char *uplo, char *trans, int *n, int *k, s *alpha, c *a, int *lda, s *beta, c *c) +void chgeqz(char *job, char *compq, char *compz, int *n, int *ilo, int *ihi, c *h, int *ldh, c *t, int *ldt, c *alpha, c *beta, c *q, int *ldq, c *z, int *ldz, c *work, int *lwork, s *rwork, int *info) +char chla_transtype(int *trans) +void chpcon(char *uplo, int *n, c *ap, int *ipiv, s *anorm, s *rcond, c *work, int *info) +void chpev(char *jobz, char *uplo, int *n, c *ap, s *w, c *z, int *ldz, c *work, s *rwork, int *info) +void chpevd(char *jobz, char *uplo, int *n, c *ap, s *w, c *z, int *ldz, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void chpevx(char *jobz, char *range, char *uplo, int *n, c *ap, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, c *work, s *rwork, int *iwork, int *ifail, int *info) +void chpgst(int *itype, char *uplo, int *n, c *ap, c *bp, int *info) +void chpgv(int *itype, char *jobz, char *uplo, int *n, c *ap, c *bp, s *w, c *z, int *ldz, c *work, s *rwork, int *info) +void chpgvd(int *itype, char *jobz, char *uplo, int *n, c *ap, c *bp, s *w, c *z, int *ldz, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void chpgvx(int *itype, char *jobz, char *range, char *uplo, int *n, c *ap, c *bp, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, c *work, s *rwork, int *iwork, int *ifail, int *info) +void chprfs(char *uplo, int *n, int *nrhs, c *ap, c *afp, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void chpsv(char *uplo, int *n, int *nrhs, c *ap, int *ipiv, c *b, int *ldb, int *info) +void chpsvx(char *fact, char *uplo, int *n, int *nrhs, c *ap, c *afp, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void chptrd(char *uplo, int *n, c *ap, s *d, s *e, c *tau, int *info) +void chptrf(char *uplo, int *n, c *ap, int *ipiv, int *info) +void chptri(char *uplo, int *n, c *ap, int *ipiv, c *work, int *info) +void chptrs(char *uplo, int *n, int *nrhs, c *ap, int *ipiv, c *b, int *ldb, int *info) +void chsein(char *side, char *eigsrc, char *initv, bint *select, int *n, c *h, int *ldh, c *w, c *vl, int *ldvl, c *vr, int *ldvr, int *mm, int *m, c *work, s *rwork, int *ifaill, int *ifailr, int *info) +void chseqr(char *job, char *compz, int *n, int *ilo, int *ihi, c *h, int *ldh, c *w, c *z, int *ldz, c *work, int *lwork, int *info) +void clabrd(int *m, int *n, int *nb, c *a, int *lda, s *d, s *e, c *tauq, c *taup, c *x, int *ldx, c *y, int *ldy) +void clacgv(int *n, c *x, int *incx) +void clacn2(int *n, c *v, c *x, s *est, int *kase, int *isave) +void clacon(int *n, c *v, c *x, s *est, int *kase) +void clacp2(char *uplo, int *m, int *n, s *a, int *lda, c *b, int *ldb) +void clacpy(char *uplo, int *m, int *n, c *a, int *lda, c *b, int *ldb) +void clacrm(int *m, int *n, c *a, int *lda, s *b, int *ldb, c *c, int *ldc, s *rwork) +void clacrt(int *n, c *cx, int *incx, c *cy, int *incy, c *c, c *s) +c cladiv(c *x, c *y) +void claed0(int *qsiz, int *n, s *d, s *e, c *q, int *ldq, c *qstore, int *ldqs, s *rwork, int *iwork, int *info) +void claed7(int *n, int *cutpnt, int *qsiz, int *tlvls, int *curlvl, int *curpbm, s *d, c *q, int *ldq, s *rho, int *indxq, s *qstore, int *qptr, int *prmptr, int *perm, int *givptr, int *givcol, s *givnum, c *work, s *rwork, int *iwork, int *info) +void claed8(int *k, int *n, int *qsiz, c *q, int *ldq, s *d, s *rho, int *cutpnt, s *z, s *dlamda, c *q2, int *ldq2, s *w, int *indxp, int *indx, int *indxq, int *perm, int *givptr, int *givcol, s *givnum, int *info) +void claein(bint *rightv, bint *noinit, int *n, c *h, int *ldh, c *w, c *v, c *b, int *ldb, s *rwork, s *eps3, s *smlnum, int *info) +void claesy(c *a, c *b, c *c, c *rt1, c *rt2, c *evscal, c *cs1, c *sn1) +void claev2(c *a, c *b, c *c, s *rt1, s *rt2, s *cs1, c *sn1) +void clag2z(int *m, int *n, c *sa, int *ldsa, z *a, int *lda, int *info) +void clags2(bint *upper, s *a1, c *a2, s *a3, s *b1, c *b2, s *b3, s *csu, c *snu, s *csv, c *snv, s *csq, c *snq) +void clagtm(char *trans, int *n, int *nrhs, s *alpha, c *dl, c *d, c *du, c *x, int *ldx, s *beta, c *b, int *ldb) +void clahef(char *uplo, int *n, int *nb, int *kb, c *a, int *lda, int *ipiv, c *w, int *ldw, int *info) +void clahqr(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, c *h, int *ldh, c *w, int *iloz, int *ihiz, c *z, int *ldz, int *info) +void clahr2(int *n, int *k, int *nb, c *a, int *lda, c *tau, c *t, int *ldt, c *y, int *ldy) +void claic1(int *job, int *j, c *x, s *sest, c *w, c *gamma, s *sestpr, c *s, c *c) +void clals0(int *icompq, int *nl, int *nr, int *sqre, int *nrhs, c *b, int *ldb, c *bx, int *ldbx, int *perm, int *givptr, int *givcol, int *ldgcol, s *givnum, int *ldgnum, s *poles, s *difl, s *difr, s *z, int *k, s *c, s *s, s *rwork, int *info) +void clalsa(int *icompq, int *smlsiz, int *n, int *nrhs, c *b, int *ldb, c *bx, int *ldbx, s *u, int *ldu, s *vt, int *k, s *difl, s *difr, s *z, s *poles, int *givptr, int *givcol, int *ldgcol, int *perm, s *givnum, s *c, s *s, s *rwork, int *iwork, int *info) +void clalsd(char *uplo, int *smlsiz, int *n, int *nrhs, s *d, s *e, c *b, int *ldb, s *rcond, int *rank, c *work, s *rwork, int *iwork, int *info) +s clangb(char *norm, int *n, int *kl, int *ku, c *ab, int *ldab, s *work) +s clange(char *norm, int *m, int *n, c *a, int *lda, s *work) +s clangt(char *norm, int *n, c *dl, c *d, c *du) +s clanhb(char *norm, char *uplo, int *n, int *k, c *ab, int *ldab, s *work) +s clanhe(char *norm, char *uplo, int *n, c *a, int *lda, s *work) +s clanhf(char *norm, char *transr, char *uplo, int *n, c *a, s *work) +s clanhp(char *norm, char *uplo, int *n, c *ap, s *work) +s clanhs(char *norm, int *n, c *a, int *lda, s *work) +s clanht(char *norm, int *n, s *d, c *e) +s clansb(char *norm, char *uplo, int *n, int *k, c *ab, int *ldab, s *work) +s clansp(char *norm, char *uplo, int *n, c *ap, s *work) +s clansy(char *norm, char *uplo, int *n, c *a, int *lda, s *work) +s clantb(char *norm, char *uplo, char *diag, int *n, int *k, c *ab, int *ldab, s *work) +s clantp(char *norm, char *uplo, char *diag, int *n, c *ap, s *work) +s clantr(char *norm, char *uplo, char *diag, int *m, int *n, c *a, int *lda, s *work) +void clapll(int *n, c *x, int *incx, c *y, int *incy, s *ssmin) +void clapmr(bint *forwrd, int *m, int *n, c *x, int *ldx, int *k) +void clapmt(bint *forwrd, int *m, int *n, c *x, int *ldx, int *k) +void claqgb(int *m, int *n, int *kl, int *ku, c *ab, int *ldab, s *r, s *c, s *rowcnd, s *colcnd, s *amax, char *equed) +void claqge(int *m, int *n, c *a, int *lda, s *r, s *c, s *rowcnd, s *colcnd, s *amax, char *equed) +void claqhb(char *uplo, int *n, int *kd, c *ab, int *ldab, s *s, s *scond, s *amax, char *equed) +void claqhe(char *uplo, int *n, c *a, int *lda, s *s, s *scond, s *amax, char *equed) +void claqhp(char *uplo, int *n, c *ap, s *s, s *scond, s *amax, char *equed) +void claqp2(int *m, int *n, int *offset, c *a, int *lda, int *jpvt, c *tau, s *vn1, s *vn2, c *work) +void claqps(int *m, int *n, int *offset, int *nb, int *kb, c *a, int *lda, int *jpvt, c *tau, s *vn1, s *vn2, c *auxv, c *f, int *ldf) +void claqr0(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, c *h, int *ldh, c *w, int *iloz, int *ihiz, c *z, int *ldz, c *work, int *lwork, int *info) +void claqr1(int *n, c *h, int *ldh, c *s1, c *s2, c *v) +void claqr2(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, c *h, int *ldh, int *iloz, int *ihiz, c *z, int *ldz, int *ns, int *nd, c *sh, c *v, int *ldv, int *nh, c *t, int *ldt, int *nv, c *wv, int *ldwv, c *work, int *lwork) +void claqr3(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, c *h, int *ldh, int *iloz, int *ihiz, c *z, int *ldz, int *ns, int *nd, c *sh, c *v, int *ldv, int *nh, c *t, int *ldt, int *nv, c *wv, int *ldwv, c *work, int *lwork) +void claqr4(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, c *h, int *ldh, c *w, int *iloz, int *ihiz, c *z, int *ldz, c *work, int *lwork, int *info) +void claqr5(bint *wantt, bint *wantz, int *kacc22, int *n, int *ktop, int *kbot, int *nshfts, c *s, c *h, int *ldh, int *iloz, int *ihiz, c *z, int *ldz, c *v, int *ldv, c *u, int *ldu, int *nv, c *wv, int *ldwv, int *nh, c *wh, int *ldwh) +void claqsb(char *uplo, int *n, int *kd, c *ab, int *ldab, s *s, s *scond, s *amax, char *equed) +void claqsp(char *uplo, int *n, c *ap, s *s, s *scond, s *amax, char *equed) +void claqsy(char *uplo, int *n, c *a, int *lda, s *s, s *scond, s *amax, char *equed) +void clar1v(int *n, int *b1, int *bn, s *lambda, s *d, s *l, s *ld, s *lld, s *pivmin, s *gaptol, c *z, bint *wantnc, int *negcnt, s *ztz, s *mingma, int *r, int *isuppz, s *nrminv, s *resid, s *rqcorr, s *work) +void clar2v(int *n, c *x, c *y, c *z, int *incx, s *c, c *s, int *incc) +void clarcm(int *m, int *n, s *a, int *lda, c *b, int *ldb, c *c, int *ldc, s *rwork) +void clarf(char *side, int *m, int *n, c *v, int *incv, c *tau, c *c, int *ldc, c *work) +void clarfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, c *v, int *ldv, c *t, int *ldt, c *c, int *ldc, c *work, int *ldwork) +void clarfg(int *n, c *alpha, c *x, int *incx, c *tau) +void clarfgp(int *n, c *alpha, c *x, int *incx, c *tau) +void clarft(char *direct, char *storev, int *n, int *k, c *v, int *ldv, c *tau, c *t, int *ldt) +void clarfx(char *side, int *m, int *n, c *v, c *tau, c *c, int *ldc, c *work) +void clargv(int *n, c *x, int *incx, c *y, int *incy, s *c, int *incc) +void clarnv(int *idist, int *iseed, int *n, c *x) +void clarrv(int *n, s *vl, s *vu, s *d, s *l, s *pivmin, int *isplit, int *m, int *dol, int *dou, s *minrgp, s *rtol1, s *rtol2, s *w, s *werr, s *wgap, int *iblock, int *indexw, s *gers, c *z, int *ldz, int *isuppz, s *work, int *iwork, int *info) +void clartg(c *f, c *g, s *cs, c *sn, c *r) +void clartv(int *n, c *x, int *incx, c *y, int *incy, s *c, c *s, int *incc) +void clarz(char *side, int *m, int *n, int *l, c *v, int *incv, c *tau, c *c, int *ldc, c *work) +void clarzb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, c *v, int *ldv, c *t, int *ldt, c *c, int *ldc, c *work, int *ldwork) +void clarzt(char *direct, char *storev, int *n, int *k, c *v, int *ldv, c *tau, c *t, int *ldt) +void clascl(char *type_bn, int *kl, int *ku, s *cfrom, s *cto, int *m, int *n, c *a, int *lda, int *info) +void claset(char *uplo, int *m, int *n, c *alpha, c *beta, c *a, int *lda) +void clasr(char *side, char *pivot, char *direct, int *m, int *n, s *c, s *s, c *a, int *lda) +void classq(int *n, c *x, int *incx, s *scale, s *sumsq) +void claswp(int *n, c *a, int *lda, int *k1, int *k2, int *ipiv, int *incx) +void clasyf(char *uplo, int *n, int *nb, int *kb, c *a, int *lda, int *ipiv, c *w, int *ldw, int *info) +void clatbs(char *uplo, char *trans, char *diag, char *normin, int *n, int *kd, c *ab, int *ldab, c *x, s *scale, s *cnorm, int *info) +void clatdf(int *ijob, int *n, c *z, int *ldz, c *rhs, s *rdsum, s *rdscal, int *ipiv, int *jpiv) +void clatps(char *uplo, char *trans, char *diag, char *normin, int *n, c *ap, c *x, s *scale, s *cnorm, int *info) +void clatrd(char *uplo, int *n, int *nb, c *a, int *lda, s *e, c *tau, c *w, int *ldw) +void clatrs(char *uplo, char *trans, char *diag, char *normin, int *n, c *a, int *lda, c *x, s *scale, s *cnorm, int *info) +void clatrz(int *m, int *n, int *l, c *a, int *lda, c *tau, c *work) +void clauu2(char *uplo, int *n, c *a, int *lda, int *info) +void clauum(char *uplo, int *n, c *a, int *lda, int *info) +void cpbcon(char *uplo, int *n, int *kd, c *ab, int *ldab, s *anorm, s *rcond, c *work, s *rwork, int *info) +void cpbequ(char *uplo, int *n, int *kd, c *ab, int *ldab, s *s, s *scond, s *amax, int *info) +void cpbrfs(char *uplo, int *n, int *kd, int *nrhs, c *ab, int *ldab, c *afb, int *ldafb, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cpbstf(char *uplo, int *n, int *kd, c *ab, int *ldab, int *info) +void cpbsv(char *uplo, int *n, int *kd, int *nrhs, c *ab, int *ldab, c *b, int *ldb, int *info) +void cpbsvx(char *fact, char *uplo, int *n, int *kd, int *nrhs, c *ab, int *ldab, c *afb, int *ldafb, char *equed, s *s, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void cpbtf2(char *uplo, int *n, int *kd, c *ab, int *ldab, int *info) +void cpbtrf(char *uplo, int *n, int *kd, c *ab, int *ldab, int *info) +void cpbtrs(char *uplo, int *n, int *kd, int *nrhs, c *ab, int *ldab, c *b, int *ldb, int *info) +void cpftrf(char *transr, char *uplo, int *n, c *a, int *info) +void cpftri(char *transr, char *uplo, int *n, c *a, int *info) +void cpftrs(char *transr, char *uplo, int *n, int *nrhs, c *a, c *b, int *ldb, int *info) +void cpocon(char *uplo, int *n, c *a, int *lda, s *anorm, s *rcond, c *work, s *rwork, int *info) +void cpoequ(int *n, c *a, int *lda, s *s, s *scond, s *amax, int *info) +void cpoequb(int *n, c *a, int *lda, s *s, s *scond, s *amax, int *info) +void cporfs(char *uplo, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cposv(char *uplo, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, int *info) +void cposvx(char *fact, char *uplo, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, char *equed, s *s, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void cpotf2(char *uplo, int *n, c *a, int *lda, int *info) +void cpotrf(char *uplo, int *n, c *a, int *lda, int *info) +void cpotri(char *uplo, int *n, c *a, int *lda, int *info) +void cpotrs(char *uplo, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, int *info) +void cppcon(char *uplo, int *n, c *ap, s *anorm, s *rcond, c *work, s *rwork, int *info) +void cppequ(char *uplo, int *n, c *ap, s *s, s *scond, s *amax, int *info) +void cpprfs(char *uplo, int *n, int *nrhs, c *ap, c *afp, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cppsv(char *uplo, int *n, int *nrhs, c *ap, c *b, int *ldb, int *info) +void cppsvx(char *fact, char *uplo, int *n, int *nrhs, c *ap, c *afp, char *equed, s *s, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void cpptrf(char *uplo, int *n, c *ap, int *info) +void cpptri(char *uplo, int *n, c *ap, int *info) +void cpptrs(char *uplo, int *n, int *nrhs, c *ap, c *b, int *ldb, int *info) +void cpstf2(char *uplo, int *n, c *a, int *lda, int *piv, int *rank, s *tol, s *work, int *info) +void cpstrf(char *uplo, int *n, c *a, int *lda, int *piv, int *rank, s *tol, s *work, int *info) +void cptcon(int *n, s *d, c *e, s *anorm, s *rcond, s *rwork, int *info) +void cpteqr(char *compz, int *n, s *d, s *e, c *z, int *ldz, s *work, int *info) +void cptrfs(char *uplo, int *n, int *nrhs, s *d, c *e, s *df, c *ef, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cptsv(int *n, int *nrhs, s *d, c *e, c *b, int *ldb, int *info) +void cptsvx(char *fact, int *n, int *nrhs, s *d, c *e, s *df, c *ef, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void cpttrf(int *n, s *d, c *e, int *info) +void cpttrs(char *uplo, int *n, int *nrhs, s *d, c *e, c *b, int *ldb, int *info) +void cptts2(int *iuplo, int *n, int *nrhs, s *d, c *e, c *b, int *ldb) +void crot(int *n, c *cx, int *incx, c *cy, int *incy, s *c, c *s) +void cspcon(char *uplo, int *n, c *ap, int *ipiv, s *anorm, s *rcond, c *work, int *info) +void cspmv(char *uplo, int *n, c *alpha, c *ap, c *x, int *incx, c *beta, c *y, int *incy) +void cspr(char *uplo, int *n, c *alpha, c *x, int *incx, c *ap) +void csprfs(char *uplo, int *n, int *nrhs, c *ap, c *afp, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void cspsv(char *uplo, int *n, int *nrhs, c *ap, int *ipiv, c *b, int *ldb, int *info) +void cspsvx(char *fact, char *uplo, int *n, int *nrhs, c *ap, c *afp, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, s *rwork, int *info) +void csptrf(char *uplo, int *n, c *ap, int *ipiv, int *info) +void csptri(char *uplo, int *n, c *ap, int *ipiv, c *work, int *info) +void csptrs(char *uplo, int *n, int *nrhs, c *ap, int *ipiv, c *b, int *ldb, int *info) +void csrscl(int *n, s *sa, c *sx, int *incx) +void cstedc(char *compz, int *n, s *d, s *e, c *z, int *ldz, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void cstegr(char *jobz, char *range, int *n, s *d, s *e, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, c *z, int *ldz, int *isuppz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void cstein(int *n, s *d, s *e, int *m, s *w, int *iblock, int *isplit, c *z, int *ldz, s *work, int *iwork, int *ifail, int *info) +void cstemr(char *jobz, char *range, int *n, s *d, s *e, s *vl, s *vu, int *il, int *iu, int *m, s *w, c *z, int *ldz, int *nzc, int *isuppz, bint *tryrac, s *work, int *lwork, int *iwork, int *liwork, int *info) +void csteqr(char *compz, int *n, s *d, s *e, c *z, int *ldz, s *work, int *info) +void csycon(char *uplo, int *n, c *a, int *lda, int *ipiv, s *anorm, s *rcond, c *work, int *info) +void csyconv(char *uplo, char *way, int *n, c *a, int *lda, int *ipiv, c *work, int *info) +void csyequb(char *uplo, int *n, c *a, int *lda, s *s, s *scond, s *amax, c *work, int *info) +void csymv(char *uplo, int *n, c *alpha, c *a, int *lda, c *x, int *incx, c *beta, c *y, int *incy) +void csyr(char *uplo, int *n, c *alpha, c *x, int *incx, c *a, int *lda) +void csyrfs(char *uplo, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void csysv(char *uplo, int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, c *work, int *lwork, int *info) +void csysvx(char *fact, char *uplo, int *n, int *nrhs, c *a, int *lda, c *af, int *ldaf, int *ipiv, c *b, int *ldb, c *x, int *ldx, s *rcond, s *ferr, s *berr, c *work, int *lwork, s *rwork, int *info) +void csyswapr(char *uplo, int *n, c *a, int *lda, int *i1, int *i2) +void csytf2(char *uplo, int *n, c *a, int *lda, int *ipiv, int *info) +void csytrf(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *lwork, int *info) +void csytri(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *info) +void csytri2(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *lwork, int *info) +void csytri2x(char *uplo, int *n, c *a, int *lda, int *ipiv, c *work, int *nb, int *info) +void csytrs(char *uplo, int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, int *info) +void csytrs2(char *uplo, int *n, int *nrhs, c *a, int *lda, int *ipiv, c *b, int *ldb, c *work, int *info) +void ctbcon(char *norm, char *uplo, char *diag, int *n, int *kd, c *ab, int *ldab, s *rcond, c *work, s *rwork, int *info) +void ctbrfs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, c *ab, int *ldab, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void ctbtrs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, c *ab, int *ldab, c *b, int *ldb, int *info) +void ctfsm(char *transr, char *side, char *uplo, char *trans, char *diag, int *m, int *n, c *alpha, c *a, c *b, int *ldb) +void ctftri(char *transr, char *uplo, char *diag, int *n, c *a, int *info) +void ctfttp(char *transr, char *uplo, int *n, c *arf, c *ap, int *info) +void ctfttr(char *transr, char *uplo, int *n, c *arf, c *a, int *lda, int *info) +void ctgevc(char *side, char *howmny, bint *select, int *n, c *s, int *lds, c *p, int *ldp, c *vl, int *ldvl, c *vr, int *ldvr, int *mm, int *m, c *work, s *rwork, int *info) +void ctgex2(bint *wantq, bint *wantz, int *n, c *a, int *lda, c *b, int *ldb, c *q, int *ldq, c *z, int *ldz, int *j1, int *info) +void ctgexc(bint *wantq, bint *wantz, int *n, c *a, int *lda, c *b, int *ldb, c *q, int *ldq, c *z, int *ldz, int *ifst, int *ilst, int *info) +void ctgsen(int *ijob, bint *wantq, bint *wantz, bint *select, int *n, c *a, int *lda, c *b, int *ldb, c *alpha, c *beta, c *q, int *ldq, c *z, int *ldz, int *m, s *pl, s *pr, s *dif, c *work, int *lwork, int *iwork, int *liwork, int *info) +void ctgsja(char *jobu, char *jobv, char *jobq, int *m, int *p, int *n, int *k, int *l, c *a, int *lda, c *b, int *ldb, s *tola, s *tolb, s *alpha, s *beta, c *u, int *ldu, c *v, int *ldv, c *q, int *ldq, c *work, int *ncycle, int *info) +void ctgsna(char *job, char *howmny, bint *select, int *n, c *a, int *lda, c *b, int *ldb, c *vl, int *ldvl, c *vr, int *ldvr, s *s, s *dif, int *mm, int *m, c *work, int *lwork, int *iwork, int *info) +void ctgsy2(char *trans, int *ijob, int *m, int *n, c *a, int *lda, c *b, int *ldb, c *c, int *ldc, c *d, int *ldd, c *e, int *lde, c *f, int *ldf, s *scale, s *rdsum, s *rdscal, int *info) +void ctgsyl(char *trans, int *ijob, int *m, int *n, c *a, int *lda, c *b, int *ldb, c *c, int *ldc, c *d, int *ldd, c *e, int *lde, c *f, int *ldf, s *scale, s *dif, c *work, int *lwork, int *iwork, int *info) +void ctpcon(char *norm, char *uplo, char *diag, int *n, c *ap, s *rcond, c *work, s *rwork, int *info) +void ctpmqrt(char *side, char *trans, int *m, int *n, int *k, int *l, int *nb, c *v, int *ldv, c *t, int *ldt, c *a, int *lda, c *b, int *ldb, c *work, int *info) +void ctpqrt(int *m, int *n, int *l, int *nb, c *a, int *lda, c *b, int *ldb, c *t, int *ldt, c *work, int *info) +void ctpqrt2(int *m, int *n, int *l, c *a, int *lda, c *b, int *ldb, c *t, int *ldt, int *info) +void ctprfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, c *v, int *ldv, c *t, int *ldt, c *a, int *lda, c *b, int *ldb, c *work, int *ldwork) +void ctprfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, c *ap, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void ctptri(char *uplo, char *diag, int *n, c *ap, int *info) +void ctptrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, c *ap, c *b, int *ldb, int *info) +void ctpttf(char *transr, char *uplo, int *n, c *ap, c *arf, int *info) +void ctpttr(char *uplo, int *n, c *ap, c *a, int *lda, int *info) +void ctrcon(char *norm, char *uplo, char *diag, int *n, c *a, int *lda, s *rcond, c *work, s *rwork, int *info) +void ctrevc(char *side, char *howmny, bint *select, int *n, c *t, int *ldt, c *vl, int *ldvl, c *vr, int *ldvr, int *mm, int *m, c *work, s *rwork, int *info) +void ctrexc(char *compq, int *n, c *t, int *ldt, c *q, int *ldq, int *ifst, int *ilst, int *info) +void ctrrfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, c *x, int *ldx, s *ferr, s *berr, c *work, s *rwork, int *info) +void ctrsen(char *job, char *compq, bint *select, int *n, c *t, int *ldt, c *q, int *ldq, c *w, int *m, s *s, s *sep, c *work, int *lwork, int *info) +void ctrsna(char *job, char *howmny, bint *select, int *n, c *t, int *ldt, c *vl, int *ldvl, c *vr, int *ldvr, s *s, s *sep, int *mm, int *m, c *work, int *ldwork, s *rwork, int *info) +void ctrsyl(char *trana, char *tranb, int *isgn, int *m, int *n, c *a, int *lda, c *b, int *ldb, c *c, int *ldc, s *scale, int *info) +void ctrti2(char *uplo, char *diag, int *n, c *a, int *lda, int *info) +void ctrtri(char *uplo, char *diag, int *n, c *a, int *lda, int *info) +void ctrtrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, c *a, int *lda, c *b, int *ldb, int *info) +void ctrttf(char *transr, char *uplo, int *n, c *a, int *lda, c *arf, int *info) +void ctrttp(char *uplo, int *n, c *a, int *lda, c *ap, int *info) +void ctzrzf(int *m, int *n, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cunbdb(char *trans, char *signs, int *m, int *p, int *q, c *x11, int *ldx11, c *x12, int *ldx12, c *x21, int *ldx21, c *x22, int *ldx22, s *theta, s *phi, c *taup1, c *taup2, c *tauq1, c *tauq2, c *work, int *lwork, int *info) +void cuncsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, char *signs, int *m, int *p, int *q, c *x11, int *ldx11, c *x12, int *ldx12, c *x21, int *ldx21, c *x22, int *ldx22, s *theta, c *u1, int *ldu1, c *u2, int *ldu2, c *v1t, int *ldv1t, c *v2t, int *ldv2t, c *work, int *lwork, s *rwork, int *lrwork, int *iwork, int *info) +void cung2l(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *info) +void cung2r(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *info) +void cungbr(char *vect, int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cunghr(int *n, int *ilo, int *ihi, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cungl2(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *info) +void cunglq(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cungql(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cungqr(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cungr2(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *info) +void cungrq(int *m, int *n, int *k, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cungtr(char *uplo, int *n, c *a, int *lda, c *tau, c *work, int *lwork, int *info) +void cunm2l(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *info) +void cunm2r(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *info) +void cunmbr(char *vect, char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cunmhr(char *side, char *trans, int *m, int *n, int *ilo, int *ihi, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cunml2(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *info) +void cunmlq(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cunmql(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cunmqr(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cunmr2(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *info) +void cunmr3(char *side, char *trans, int *m, int *n, int *k, int *l, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *info) +void cunmrq(char *side, char *trans, int *m, int *n, int *k, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cunmrz(char *side, char *trans, int *m, int *n, int *k, int *l, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cunmtr(char *side, char *uplo, char *trans, int *m, int *n, c *a, int *lda, c *tau, c *c, int *ldc, c *work, int *lwork, int *info) +void cupgtr(char *uplo, int *n, c *ap, c *tau, c *q, int *ldq, c *work, int *info) +void cupmtr(char *side, char *uplo, char *trans, int *m, int *n, c *ap, c *tau, c *c, int *ldc, c *work, int *info) +void dbbcsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, int *m, int *p, int *q, d *theta, d *phi, d *u1, int *ldu1, d *u2, int *ldu2, d *v1t, int *ldv1t, d *v2t, int *ldv2t, d *b11d, d *b11e, d *b12d, d *b12e, d *b21d, d *b21e, d *b22d, d *b22e, d *work, int *lwork, int *info) +void dbdsdc(char *uplo, char *compq, int *n, d *d, d *e, d *u, int *ldu, d *vt, int *ldvt, d *q, int *iq, d *work, int *iwork, int *info) +void dbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, d *d, d *e, d *vt, int *ldvt, d *u, int *ldu, d *c, int *ldc, d *work, int *info) +void ddisna(char *job, int *m, int *n, d *d, d *sep, int *info) +void dgbbrd(char *vect, int *m, int *n, int *ncc, int *kl, int *ku, d *ab, int *ldab, d *d, d *e, d *q, int *ldq, d *pt, int *ldpt, d *c, int *ldc, d *work, int *info) +void dgbcon(char *norm, int *n, int *kl, int *ku, d *ab, int *ldab, int *ipiv, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dgbequ(int *m, int *n, int *kl, int *ku, d *ab, int *ldab, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void dgbequb(int *m, int *n, int *kl, int *ku, d *ab, int *ldab, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void dgbrfs(char *trans, int *n, int *kl, int *ku, int *nrhs, d *ab, int *ldab, d *afb, int *ldafb, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dgbsv(int *n, int *kl, int *ku, int *nrhs, d *ab, int *ldab, int *ipiv, d *b, int *ldb, int *info) +void dgbsvx(char *fact, char *trans, int *n, int *kl, int *ku, int *nrhs, d *ab, int *ldab, d *afb, int *ldafb, int *ipiv, char *equed, d *r, d *c, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *iwork, int *info) +void dgbtf2(int *m, int *n, int *kl, int *ku, d *ab, int *ldab, int *ipiv, int *info) +void dgbtrf(int *m, int *n, int *kl, int *ku, d *ab, int *ldab, int *ipiv, int *info) +void dgbtrs(char *trans, int *n, int *kl, int *ku, int *nrhs, d *ab, int *ldab, int *ipiv, d *b, int *ldb, int *info) +void dgebak(char *job, char *side, int *n, int *ilo, int *ihi, d *scale, int *m, d *v, int *ldv, int *info) +void dgebal(char *job, int *n, d *a, int *lda, int *ilo, int *ihi, d *scale, int *info) +void dgebd2(int *m, int *n, d *a, int *lda, d *d, d *e, d *tauq, d *taup, d *work, int *info) +void dgebrd(int *m, int *n, d *a, int *lda, d *d, d *e, d *tauq, d *taup, d *work, int *lwork, int *info) +void dgecon(char *norm, int *n, d *a, int *lda, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dgeequ(int *m, int *n, d *a, int *lda, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void dgeequb(int *m, int *n, d *a, int *lda, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void dgees(char *jobvs, char *sort, dselect2 *select, int *n, d *a, int *lda, int *sdim, d *wr, d *wi, d *vs, int *ldvs, d *work, int *lwork, bint *bwork, int *info) +void dgeesx(char *jobvs, char *sort, dselect2 *select, char *sense, int *n, d *a, int *lda, int *sdim, d *wr, d *wi, d *vs, int *ldvs, d *rconde, d *rcondv, d *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info) +void dgeev(char *jobvl, char *jobvr, int *n, d *a, int *lda, d *wr, d *wi, d *vl, int *ldvl, d *vr, int *ldvr, d *work, int *lwork, int *info) +void dgeevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, d *a, int *lda, d *wr, d *wi, d *vl, int *ldvl, d *vr, int *ldvr, int *ilo, int *ihi, d *scale, d *abnrm, d *rconde, d *rcondv, d *work, int *lwork, int *iwork, int *info) +void dgehd2(int *n, int *ilo, int *ihi, d *a, int *lda, d *tau, d *work, int *info) +void dgehrd(int *n, int *ilo, int *ihi, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dgejsv(char *joba, char *jobu, char *jobv, char *jobr, char *jobt, char *jobp, int *m, int *n, d *a, int *lda, d *sva, d *u, int *ldu, d *v, int *ldv, d *work, int *lwork, int *iwork, int *info) +void dgelq2(int *m, int *n, d *a, int *lda, d *tau, d *work, int *info) +void dgelqf(int *m, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dgels(char *trans, int *m, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, d *work, int *lwork, int *info) +void dgelsd(int *m, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, d *s, d *rcond, int *rank, d *work, int *lwork, int *iwork, int *info) +void dgelss(int *m, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, d *s, d *rcond, int *rank, d *work, int *lwork, int *info) +void dgelsy(int *m, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, int *jpvt, d *rcond, int *rank, d *work, int *lwork, int *info) +void dgemqrt(char *side, char *trans, int *m, int *n, int *k, int *nb, d *v, int *ldv, d *t, int *ldt, d *c, int *ldc, d *work, int *info) +void dgeql2(int *m, int *n, d *a, int *lda, d *tau, d *work, int *info) +void dgeqlf(int *m, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dgeqp3(int *m, int *n, d *a, int *lda, int *jpvt, d *tau, d *work, int *lwork, int *info) +void dgeqr2(int *m, int *n, d *a, int *lda, d *tau, d *work, int *info) +void dgeqr2p(int *m, int *n, d *a, int *lda, d *tau, d *work, int *info) +void dgeqrf(int *m, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dgeqrfp(int *m, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dgeqrt(int *m, int *n, int *nb, d *a, int *lda, d *t, int *ldt, d *work, int *info) +void dgeqrt2(int *m, int *n, d *a, int *lda, d *t, int *ldt, int *info) +void dgeqrt3(int *m, int *n, d *a, int *lda, d *t, int *ldt, int *info) +void dgerfs(char *trans, int *n, int *nrhs, d *a, int *lda, d *af, int *ldaf, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dgerq2(int *m, int *n, d *a, int *lda, d *tau, d *work, int *info) +void dgerqf(int *m, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dgesc2(int *n, d *a, int *lda, d *rhs, int *ipiv, int *jpiv, d *scale) +void dgesdd(char *jobz, int *m, int *n, d *a, int *lda, d *s, d *u, int *ldu, d *vt, int *ldvt, d *work, int *lwork, int *iwork, int *info) +void dgesv(int *n, int *nrhs, d *a, int *lda, int *ipiv, d *b, int *ldb, int *info) +void dgesvd(char *jobu, char *jobvt, int *m, int *n, d *a, int *lda, d *s, d *u, int *ldu, d *vt, int *ldvt, d *work, int *lwork, int *info) +void dgesvj(char *joba, char *jobu, char *jobv, int *m, int *n, d *a, int *lda, d *sva, int *mv, d *v, int *ldv, d *work, int *lwork, int *info) +void dgesvx(char *fact, char *trans, int *n, int *nrhs, d *a, int *lda, d *af, int *ldaf, int *ipiv, char *equed, d *r, d *c, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *iwork, int *info) +void dgetc2(int *n, d *a, int *lda, int *ipiv, int *jpiv, int *info) +void dgetf2(int *m, int *n, d *a, int *lda, int *ipiv, int *info) +void dgetrf(int *m, int *n, d *a, int *lda, int *ipiv, int *info) +void dgetri(int *n, d *a, int *lda, int *ipiv, d *work, int *lwork, int *info) +void dgetrs(char *trans, int *n, int *nrhs, d *a, int *lda, int *ipiv, d *b, int *ldb, int *info) +void dggbak(char *job, char *side, int *n, int *ilo, int *ihi, d *lscale, d *rscale, int *m, d *v, int *ldv, int *info) +void dggbal(char *job, int *n, d *a, int *lda, d *b, int *ldb, int *ilo, int *ihi, d *lscale, d *rscale, d *work, int *info) +void dgges(char *jobvsl, char *jobvsr, char *sort, dselect3 *selctg, int *n, d *a, int *lda, d *b, int *ldb, int *sdim, d *alphar, d *alphai, d *beta, d *vsl, int *ldvsl, d *vsr, int *ldvsr, d *work, int *lwork, bint *bwork, int *info) +void dggesx(char *jobvsl, char *jobvsr, char *sort, dselect3 *selctg, char *sense, int *n, d *a, int *lda, d *b, int *ldb, int *sdim, d *alphar, d *alphai, d *beta, d *vsl, int *ldvsl, d *vsr, int *ldvsr, d *rconde, d *rcondv, d *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info) +void dggev(char *jobvl, char *jobvr, int *n, d *a, int *lda, d *b, int *ldb, d *alphar, d *alphai, d *beta, d *vl, int *ldvl, d *vr, int *ldvr, d *work, int *lwork, int *info) +void dggevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, d *a, int *lda, d *b, int *ldb, d *alphar, d *alphai, d *beta, d *vl, int *ldvl, d *vr, int *ldvr, int *ilo, int *ihi, d *lscale, d *rscale, d *abnrm, d *bbnrm, d *rconde, d *rcondv, d *work, int *lwork, int *iwork, bint *bwork, int *info) +void dggglm(int *n, int *m, int *p, d *a, int *lda, d *b, int *ldb, d *d, d *x, d *y, d *work, int *lwork, int *info) +void dgghrd(char *compq, char *compz, int *n, int *ilo, int *ihi, d *a, int *lda, d *b, int *ldb, d *q, int *ldq, d *z, int *ldz, int *info) +void dgglse(int *m, int *n, int *p, d *a, int *lda, d *b, int *ldb, d *c, d *d, d *x, d *work, int *lwork, int *info) +void dggqrf(int *n, int *m, int *p, d *a, int *lda, d *taua, d *b, int *ldb, d *taub, d *work, int *lwork, int *info) +void dggrqf(int *m, int *p, int *n, d *a, int *lda, d *taua, d *b, int *ldb, d *taub, d *work, int *lwork, int *info) +void dgsvj0(char *jobv, int *m, int *n, d *a, int *lda, d *d, d *sva, int *mv, d *v, int *ldv, d *eps, d *sfmin, d *tol, int *nsweep, d *work, int *lwork, int *info) +void dgsvj1(char *jobv, int *m, int *n, int *n1, d *a, int *lda, d *d, d *sva, int *mv, d *v, int *ldv, d *eps, d *sfmin, d *tol, int *nsweep, d *work, int *lwork, int *info) +void dgtcon(char *norm, int *n, d *dl, d *d, d *du, d *du2, int *ipiv, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dgtrfs(char *trans, int *n, int *nrhs, d *dl, d *d, d *du, d *dlf, d *df, d *duf, d *du2, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dgtsv(int *n, int *nrhs, d *dl, d *d, d *du, d *b, int *ldb, int *info) +void dgtsvx(char *fact, char *trans, int *n, int *nrhs, d *dl, d *d, d *du, d *dlf, d *df, d *duf, d *du2, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *iwork, int *info) +void dgttrf(int *n, d *dl, d *d, d *du, d *du2, int *ipiv, int *info) +void dgttrs(char *trans, int *n, int *nrhs, d *dl, d *d, d *du, d *du2, int *ipiv, d *b, int *ldb, int *info) +void dgtts2(int *itrans, int *n, int *nrhs, d *dl, d *d, d *du, d *du2, int *ipiv, d *b, int *ldb) +void dhgeqz(char *job, char *compq, char *compz, int *n, int *ilo, int *ihi, d *h, int *ldh, d *t, int *ldt, d *alphar, d *alphai, d *beta, d *q, int *ldq, d *z, int *ldz, d *work, int *lwork, int *info) +void dhsein(char *side, char *eigsrc, char *initv, bint *select, int *n, d *h, int *ldh, d *wr, d *wi, d *vl, int *ldvl, d *vr, int *ldvr, int *mm, int *m, d *work, int *ifaill, int *ifailr, int *info) +void dhseqr(char *job, char *compz, int *n, int *ilo, int *ihi, d *h, int *ldh, d *wr, d *wi, d *z, int *ldz, d *work, int *lwork, int *info) +bint disnan(d *din) +void dlabad(d *small, d *large) +void dlabrd(int *m, int *n, int *nb, d *a, int *lda, d *d, d *e, d *tauq, d *taup, d *x, int *ldx, d *y, int *ldy) +void dlacn2(int *n, d *v, d *x, int *isgn, d *est, int *kase, int *isave) +void dlacon(int *n, d *v, d *x, int *isgn, d *est, int *kase) +void dlacpy(char *uplo, int *m, int *n, d *a, int *lda, d *b, int *ldb) +void dladiv(d *a, d *b, d *c, d *d, d *p, d *q) +void dlae2(d *a, d *b, d *c, d *rt1, d *rt2) +void dlaebz(int *ijob, int *nitmax, int *n, int *mmax, int *minp, int *nbmin, d *abstol, d *reltol, d *pivmin, d *d, d *e, d *e2, int *nval, d *ab, d *c, int *mout, int *nab, d *work, int *iwork, int *info) +void dlaed0(int *icompq, int *qsiz, int *n, d *d, d *e, d *q, int *ldq, d *qstore, int *ldqs, d *work, int *iwork, int *info) +void dlaed1(int *n, d *d, d *q, int *ldq, int *indxq, d *rho, int *cutpnt, d *work, int *iwork, int *info) +void dlaed2(int *k, int *n, int *n1, d *d, d *q, int *ldq, int *indxq, d *rho, d *z, d *dlamda, d *w, d *q2, int *indx, int *indxc, int *indxp, int *coltyp, int *info) +void dlaed3(int *k, int *n, int *n1, d *d, d *q, int *ldq, d *rho, d *dlamda, d *q2, int *indx, int *ctot, d *w, d *s, int *info) +void dlaed4(int *n, int *i, d *d, d *z, d *delta, d *rho, d *dlam, int *info) +void dlaed5(int *i, d *d, d *z, d *delta, d *rho, d *dlam) +void dlaed6(int *kniter, bint *orgati, d *rho, d *d, d *z, d *finit, d *tau, int *info) +void dlaed7(int *icompq, int *n, int *qsiz, int *tlvls, int *curlvl, int *curpbm, d *d, d *q, int *ldq, int *indxq, d *rho, int *cutpnt, d *qstore, int *qptr, int *prmptr, int *perm, int *givptr, int *givcol, d *givnum, d *work, int *iwork, int *info) +void dlaed8(int *icompq, int *k, int *n, int *qsiz, d *d, d *q, int *ldq, int *indxq, d *rho, int *cutpnt, d *z, d *dlamda, d *q2, int *ldq2, d *w, int *perm, int *givptr, int *givcol, d *givnum, int *indxp, int *indx, int *info) +void dlaed9(int *k, int *kstart, int *kstop, int *n, d *d, d *q, int *ldq, d *rho, d *dlamda, d *w, d *s, int *lds, int *info) +void dlaeda(int *n, int *tlvls, int *curlvl, int *curpbm, int *prmptr, int *perm, int *givptr, int *givcol, d *givnum, d *q, int *qptr, d *z, d *ztemp, int *info) +void dlaein(bint *rightv, bint *noinit, int *n, d *h, int *ldh, d *wr, d *wi, d *vr, d *vi, d *b, int *ldb, d *work, d *eps3, d *smlnum, d *bignum, int *info) +void dlaev2(d *a, d *b, d *c, d *rt1, d *rt2, d *cs1, d *sn1) +void dlaexc(bint *wantq, int *n, d *t, int *ldt, d *q, int *ldq, int *j1, int *n1, int *n2, d *work, int *info) +void dlag2(d *a, int *lda, d *b, int *ldb, d *safmin, d *scale1, d *scale2, d *wr1, d *wr2, d *wi) +void dlag2s(int *m, int *n, d *a, int *lda, s *sa, int *ldsa, int *info) +void dlags2(bint *upper, d *a1, d *a2, d *a3, d *b1, d *b2, d *b3, d *csu, d *snu, d *csv, d *snv, d *csq, d *snq) +void dlagtf(int *n, d *a, d *lambda, d *b, d *c, d *tol, d *d, int *in, int *info) +void dlagtm(char *trans, int *n, int *nrhs, d *alpha, d *dl, d *d, d *du, d *x, int *ldx, d *beta, d *b, int *ldb) +void dlagts(int *job, int *n, d *a, d *b, d *c, d *d, int *in, d *y, d *tol, int *info) +void dlagv2(d *a, int *lda, d *b, int *ldb, d *alphar, d *alphai, d *beta, d *csl, d *snl, d *csr, d *snr) +void dlahqr(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, d *h, int *ldh, d *wr, d *wi, int *iloz, int *ihiz, d *z, int *ldz, int *info) +void dlahr2(int *n, int *k, int *nb, d *a, int *lda, d *tau, d *t, int *ldt, d *y, int *ldy) +void dlaic1(int *job, int *j, d *x, d *sest, d *w, d *gamma, d *sestpr, d *s, d *c) +void dlaln2(bint *ltrans, int *na, int *nw, d *smin, d *ca, d *a, int *lda, d *d1, d *d2, d *b, int *ldb, d *wr, d *wi, d *x, int *ldx, d *scale, d *xnorm, int *info) +void dlals0(int *icompq, int *nl, int *nr, int *sqre, int *nrhs, d *b, int *ldb, d *bx, int *ldbx, int *perm, int *givptr, int *givcol, int *ldgcol, d *givnum, int *ldgnum, d *poles, d *difl, d *difr, d *z, int *k, d *c, d *s, d *work, int *info) +void dlalsa(int *icompq, int *smlsiz, int *n, int *nrhs, d *b, int *ldb, d *bx, int *ldbx, d *u, int *ldu, d *vt, int *k, d *difl, d *difr, d *z, d *poles, int *givptr, int *givcol, int *ldgcol, int *perm, d *givnum, d *c, d *s, d *work, int *iwork, int *info) +void dlalsd(char *uplo, int *smlsiz, int *n, int *nrhs, d *d, d *e, d *b, int *ldb, d *rcond, int *rank, d *work, int *iwork, int *info) +d dlamch(char *cmach) +void dlamrg(int *n1, int *n2, d *a, int *dtrd1, int *dtrd2, int *index_bn) +int dlaneg(int *n, d *d, d *lld, d *sigma, d *pivmin, int *r) +d dlangb(char *norm, int *n, int *kl, int *ku, d *ab, int *ldab, d *work) +d dlange(char *norm, int *m, int *n, d *a, int *lda, d *work) +d dlangt(char *norm, int *n, d *dl, d *d, d *du) +d dlanhs(char *norm, int *n, d *a, int *lda, d *work) +d dlansb(char *norm, char *uplo, int *n, int *k, d *ab, int *ldab, d *work) +d dlansf(char *norm, char *transr, char *uplo, int *n, d *a, d *work) +d dlansp(char *norm, char *uplo, int *n, d *ap, d *work) +d dlanst(char *norm, int *n, d *d, d *e) +d dlansy(char *norm, char *uplo, int *n, d *a, int *lda, d *work) +d dlantb(char *norm, char *uplo, char *diag, int *n, int *k, d *ab, int *ldab, d *work) +d dlantp(char *norm, char *uplo, char *diag, int *n, d *ap, d *work) +d dlantr(char *norm, char *uplo, char *diag, int *m, int *n, d *a, int *lda, d *work) +void dlanv2(d *a, d *b, d *c, d *d, d *rt1r, d *rt1i, d *rt2r, d *rt2i, d *cs, d *sn) +void dlapll(int *n, d *x, int *incx, d *y, int *incy, d *ssmin) +void dlapmr(bint *forwrd, int *m, int *n, d *x, int *ldx, int *k) +void dlapmt(bint *forwrd, int *m, int *n, d *x, int *ldx, int *k) +d dlapy2(d *x, d *y) +d dlapy3(d *x, d *y, d *z) +void dlaqgb(int *m, int *n, int *kl, int *ku, d *ab, int *ldab, d *r, d *c, d *rowcnd, d *colcnd, d *amax, char *equed) +void dlaqge(int *m, int *n, d *a, int *lda, d *r, d *c, d *rowcnd, d *colcnd, d *amax, char *equed) +void dlaqp2(int *m, int *n, int *offset, d *a, int *lda, int *jpvt, d *tau, d *vn1, d *vn2, d *work) +void dlaqps(int *m, int *n, int *offset, int *nb, int *kb, d *a, int *lda, int *jpvt, d *tau, d *vn1, d *vn2, d *auxv, d *f, int *ldf) +void dlaqr0(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, d *h, int *ldh, d *wr, d *wi, int *iloz, int *ihiz, d *z, int *ldz, d *work, int *lwork, int *info) +void dlaqr1(int *n, d *h, int *ldh, d *sr1, d *si1, d *sr2, d *si2, d *v) +void dlaqr2(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, d *h, int *ldh, int *iloz, int *ihiz, d *z, int *ldz, int *ns, int *nd, d *sr, d *si, d *v, int *ldv, int *nh, d *t, int *ldt, int *nv, d *wv, int *ldwv, d *work, int *lwork) +void dlaqr3(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, d *h, int *ldh, int *iloz, int *ihiz, d *z, int *ldz, int *ns, int *nd, d *sr, d *si, d *v, int *ldv, int *nh, d *t, int *ldt, int *nv, d *wv, int *ldwv, d *work, int *lwork) +void dlaqr4(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, d *h, int *ldh, d *wr, d *wi, int *iloz, int *ihiz, d *z, int *ldz, d *work, int *lwork, int *info) +void dlaqr5(bint *wantt, bint *wantz, int *kacc22, int *n, int *ktop, int *kbot, int *nshfts, d *sr, d *si, d *h, int *ldh, int *iloz, int *ihiz, d *z, int *ldz, d *v, int *ldv, d *u, int *ldu, int *nv, d *wv, int *ldwv, int *nh, d *wh, int *ldwh) +void dlaqsb(char *uplo, int *n, int *kd, d *ab, int *ldab, d *s, d *scond, d *amax, char *equed) +void dlaqsp(char *uplo, int *n, d *ap, d *s, d *scond, d *amax, char *equed) +void dlaqsy(char *uplo, int *n, d *a, int *lda, d *s, d *scond, d *amax, char *equed) +void dlaqtr(bint *ltran, bint *lreal, int *n, d *t, int *ldt, d *b, d *w, d *scale, d *x, d *work, int *info) +void dlar1v(int *n, int *b1, int *bn, d *lambda, d *d, d *l, d *ld, d *lld, d *pivmin, d *gaptol, d *z, bint *wantnc, int *negcnt, d *ztz, d *mingma, int *r, int *isuppz, d *nrminv, d *resid, d *rqcorr, d *work) +void dlar2v(int *n, d *x, d *y, d *z, int *incx, d *c, d *s, int *incc) +void dlarf(char *side, int *m, int *n, d *v, int *incv, d *tau, d *c, int *ldc, d *work) +void dlarfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, d *v, int *ldv, d *t, int *ldt, d *c, int *ldc, d *work, int *ldwork) +void dlarfg(int *n, d *alpha, d *x, int *incx, d *tau) +void dlarfgp(int *n, d *alpha, d *x, int *incx, d *tau) +void dlarft(char *direct, char *storev, int *n, int *k, d *v, int *ldv, d *tau, d *t, int *ldt) +void dlarfx(char *side, int *m, int *n, d *v, d *tau, d *c, int *ldc, d *work) +void dlargv(int *n, d *x, int *incx, d *y, int *incy, d *c, int *incc) +void dlarnv(int *idist, int *iseed, int *n, d *x) +void dlarra(int *n, d *d, d *e, d *e2, d *spltol, d *tnrm, int *nsplit, int *isplit, int *info) +void dlarrb(int *n, d *d, d *lld, int *ifirst, int *ilast, d *rtol1, d *rtol2, int *offset, d *w, d *wgap, d *werr, d *work, int *iwork, d *pivmin, d *spdiam, int *twist, int *info) +void dlarrc(char *jobt, int *n, d *vl, d *vu, d *d, d *e, d *pivmin, int *eigcnt, int *lcnt, int *rcnt, int *info) +void dlarrd(char *range, char *order, int *n, d *vl, d *vu, int *il, int *iu, d *gers, d *reltol, d *d, d *e, d *e2, d *pivmin, int *nsplit, int *isplit, int *m, d *w, d *werr, d *wl, d *wu, int *iblock, int *indexw, d *work, int *iwork, int *info) +void dlarre(char *range, int *n, d *vl, d *vu, int *il, int *iu, d *d, d *e, d *e2, d *rtol1, d *rtol2, d *spltol, int *nsplit, int *isplit, int *m, d *w, d *werr, d *wgap, int *iblock, int *indexw, d *gers, d *pivmin, d *work, int *iwork, int *info) +void dlarrf(int *n, d *d, d *l, d *ld, int *clstrt, int *clend, d *w, d *wgap, d *werr, d *spdiam, d *clgapl, d *clgapr, d *pivmin, d *sigma, d *dplus, d *lplus, d *work, int *info) +void dlarrj(int *n, d *d, d *e2, int *ifirst, int *ilast, d *rtol, int *offset, d *w, d *werr, d *work, int *iwork, d *pivmin, d *spdiam, int *info) +void dlarrk(int *n, int *iw, d *gl, d *gu, d *d, d *e2, d *pivmin, d *reltol, d *w, d *werr, int *info) +void dlarrr(int *n, d *d, d *e, int *info) +void dlarrv(int *n, d *vl, d *vu, d *d, d *l, d *pivmin, int *isplit, int *m, int *dol, int *dou, d *minrgp, d *rtol1, d *rtol2, d *w, d *werr, d *wgap, int *iblock, int *indexw, d *gers, d *z, int *ldz, int *isuppz, d *work, int *iwork, int *info) +void dlartg(d *f, d *g, d *cs, d *sn, d *r) +void dlartgp(d *f, d *g, d *cs, d *sn, d *r) +void dlartgs(d *x, d *y, d *sigma, d *cs, d *sn) +void dlartv(int *n, d *x, int *incx, d *y, int *incy, d *c, d *s, int *incc) +void dlaruv(int *iseed, int *n, d *x) +void dlarz(char *side, int *m, int *n, int *l, d *v, int *incv, d *tau, d *c, int *ldc, d *work) +void dlarzb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, d *v, int *ldv, d *t, int *ldt, d *c, int *ldc, d *work, int *ldwork) +void dlarzt(char *direct, char *storev, int *n, int *k, d *v, int *ldv, d *tau, d *t, int *ldt) +void dlas2(d *f, d *g, d *h, d *ssmin, d *ssmax) +void dlascl(char *type_bn, int *kl, int *ku, d *cfrom, d *cto, int *m, int *n, d *a, int *lda, int *info) +void dlasd0(int *n, int *sqre, d *d, d *e, d *u, int *ldu, d *vt, int *ldvt, int *smlsiz, int *iwork, d *work, int *info) +void dlasd1(int *nl, int *nr, int *sqre, d *d, d *alpha, d *beta, d *u, int *ldu, d *vt, int *ldvt, int *idxq, int *iwork, d *work, int *info) +void dlasd2(int *nl, int *nr, int *sqre, int *k, d *d, d *z, d *alpha, d *beta, d *u, int *ldu, d *vt, int *ldvt, d *dsigma, d *u2, int *ldu2, d *vt2, int *ldvt2, int *idxp, int *idx, int *idxc, int *idxq, int *coltyp, int *info) +void dlasd3(int *nl, int *nr, int *sqre, int *k, d *d, d *q, int *ldq, d *dsigma, d *u, int *ldu, d *u2, int *ldu2, d *vt, int *ldvt, d *vt2, int *ldvt2, int *idxc, int *ctot, d *z, int *info) +void dlasd4(int *n, int *i, d *d, d *z, d *delta, d *rho, d *sigma, d *work, int *info) +void dlasd5(int *i, d *d, d *z, d *delta, d *rho, d *dsigma, d *work) +void dlasd6(int *icompq, int *nl, int *nr, int *sqre, d *d, d *vf, d *vl, d *alpha, d *beta, int *idxq, int *perm, int *givptr, int *givcol, int *ldgcol, d *givnum, int *ldgnum, d *poles, d *difl, d *difr, d *z, int *k, d *c, d *s, d *work, int *iwork, int *info) +void dlasd7(int *icompq, int *nl, int *nr, int *sqre, int *k, d *d, d *z, d *zw, d *vf, d *vfw, d *vl, d *vlw, d *alpha, d *beta, d *dsigma, int *idx, int *idxp, int *idxq, int *perm, int *givptr, int *givcol, int *ldgcol, d *givnum, int *ldgnum, d *c, d *s, int *info) +void dlasd8(int *icompq, int *k, d *d, d *z, d *vf, d *vl, d *difl, d *difr, int *lddifr, d *dsigma, d *work, int *info) +void dlasda(int *icompq, int *smlsiz, int *n, int *sqre, d *d, d *e, d *u, int *ldu, d *vt, int *k, d *difl, d *difr, d *z, d *poles, int *givptr, int *givcol, int *ldgcol, int *perm, d *givnum, d *c, d *s, d *work, int *iwork, int *info) +void dlasdq(char *uplo, int *sqre, int *n, int *ncvt, int *nru, int *ncc, d *d, d *e, d *vt, int *ldvt, d *u, int *ldu, d *c, int *ldc, d *work, int *info) +void dlasdt(int *n, int *lvl, int *nd, int *inode, int *ndiml, int *ndimr, int *msub) +void dlaset(char *uplo, int *m, int *n, d *alpha, d *beta, d *a, int *lda) +void dlasq1(int *n, d *d, d *e, d *work, int *info) +void dlasq2(int *n, d *z, int *info) +void dlasq3(int *i0, int *n0, d *z, int *pp, d *dmin, d *sigma, d *desig, d *qmax, int *nfail, int *iter, int *ndiv, bint *ieee, int *ttype, d *dmin1, d *dmin2, d *dn, d *dn1, d *dn2, d *g, d *tau) +void dlasq4(int *i0, int *n0, d *z, int *pp, int *n0in, d *dmin, d *dmin1, d *dmin2, d *dn, d *dn1, d *dn2, d *tau, int *ttype, d *g) +void dlasq6(int *i0, int *n0, d *z, int *pp, d *dmin, d *dmin1, d *dmin2, d *dn, d *dnm1, d *dnm2) +void dlasr(char *side, char *pivot, char *direct, int *m, int *n, d *c, d *s, d *a, int *lda) +void dlasrt(char *id, int *n, d *d, int *info) +void dlassq(int *n, d *x, int *incx, d *scale, d *sumsq) +void dlasv2(d *f, d *g, d *h, d *ssmin, d *ssmax, d *snr, d *csr, d *snl, d *csl) +void dlaswp(int *n, d *a, int *lda, int *k1, int *k2, int *ipiv, int *incx) +void dlasy2(bint *ltranl, bint *ltranr, int *isgn, int *n1, int *n2, d *tl, int *ldtl, d *tr, int *ldtr, d *b, int *ldb, d *scale, d *x, int *ldx, d *xnorm, int *info) +void dlasyf(char *uplo, int *n, int *nb, int *kb, d *a, int *lda, int *ipiv, d *w, int *ldw, int *info) +void dlat2s(char *uplo, int *n, d *a, int *lda, s *sa, int *ldsa, int *info) +void dlatbs(char *uplo, char *trans, char *diag, char *normin, int *n, int *kd, d *ab, int *ldab, d *x, d *scale, d *cnorm, int *info) +void dlatdf(int *ijob, int *n, d *z, int *ldz, d *rhs, d *rdsum, d *rdscal, int *ipiv, int *jpiv) +void dlatps(char *uplo, char *trans, char *diag, char *normin, int *n, d *ap, d *x, d *scale, d *cnorm, int *info) +void dlatrd(char *uplo, int *n, int *nb, d *a, int *lda, d *e, d *tau, d *w, int *ldw) +void dlatrs(char *uplo, char *trans, char *diag, char *normin, int *n, d *a, int *lda, d *x, d *scale, d *cnorm, int *info) +void dlatrz(int *m, int *n, int *l, d *a, int *lda, d *tau, d *work) +void dlauu2(char *uplo, int *n, d *a, int *lda, int *info) +void dlauum(char *uplo, int *n, d *a, int *lda, int *info) +void dopgtr(char *uplo, int *n, d *ap, d *tau, d *q, int *ldq, d *work, int *info) +void dopmtr(char *side, char *uplo, char *trans, int *m, int *n, d *ap, d *tau, d *c, int *ldc, d *work, int *info) +void dorbdb(char *trans, char *signs, int *m, int *p, int *q, d *x11, int *ldx11, d *x12, int *ldx12, d *x21, int *ldx21, d *x22, int *ldx22, d *theta, d *phi, d *taup1, d *taup2, d *tauq1, d *tauq2, d *work, int *lwork, int *info) +void dorcsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, char *signs, int *m, int *p, int *q, d *x11, int *ldx11, d *x12, int *ldx12, d *x21, int *ldx21, d *x22, int *ldx22, d *theta, d *u1, int *ldu1, d *u2, int *ldu2, d *v1t, int *ldv1t, d *v2t, int *ldv2t, d *work, int *lwork, int *iwork, int *info) +void dorg2l(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *info) +void dorg2r(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *info) +void dorgbr(char *vect, int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dorghr(int *n, int *ilo, int *ihi, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dorgl2(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *info) +void dorglq(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dorgql(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dorgqr(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dorgr2(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *info) +void dorgrq(int *m, int *n, int *k, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dorgtr(char *uplo, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +void dorm2l(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *info) +void dorm2r(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *info) +void dormbr(char *vect, char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dormhr(char *side, char *trans, int *m, int *n, int *ilo, int *ihi, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dorml2(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *info) +void dormlq(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dormql(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dormqr(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dormr2(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *info) +void dormr3(char *side, char *trans, int *m, int *n, int *k, int *l, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *info) +void dormrq(char *side, char *trans, int *m, int *n, int *k, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dormrz(char *side, char *trans, int *m, int *n, int *k, int *l, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dormtr(char *side, char *uplo, char *trans, int *m, int *n, d *a, int *lda, d *tau, d *c, int *ldc, d *work, int *lwork, int *info) +void dpbcon(char *uplo, int *n, int *kd, d *ab, int *ldab, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dpbequ(char *uplo, int *n, int *kd, d *ab, int *ldab, d *s, d *scond, d *amax, int *info) +void dpbrfs(char *uplo, int *n, int *kd, int *nrhs, d *ab, int *ldab, d *afb, int *ldafb, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dpbstf(char *uplo, int *n, int *kd, d *ab, int *ldab, int *info) +void dpbsv(char *uplo, int *n, int *kd, int *nrhs, d *ab, int *ldab, d *b, int *ldb, int *info) +void dpbsvx(char *fact, char *uplo, int *n, int *kd, int *nrhs, d *ab, int *ldab, d *afb, int *ldafb, char *equed, d *s, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *iwork, int *info) +void dpbtf2(char *uplo, int *n, int *kd, d *ab, int *ldab, int *info) +void dpbtrf(char *uplo, int *n, int *kd, d *ab, int *ldab, int *info) +void dpbtrs(char *uplo, int *n, int *kd, int *nrhs, d *ab, int *ldab, d *b, int *ldb, int *info) +void dpftrf(char *transr, char *uplo, int *n, d *a, int *info) +void dpftri(char *transr, char *uplo, int *n, d *a, int *info) +void dpftrs(char *transr, char *uplo, int *n, int *nrhs, d *a, d *b, int *ldb, int *info) +void dpocon(char *uplo, int *n, d *a, int *lda, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dpoequ(int *n, d *a, int *lda, d *s, d *scond, d *amax, int *info) +void dpoequb(int *n, d *a, int *lda, d *s, d *scond, d *amax, int *info) +void dporfs(char *uplo, int *n, int *nrhs, d *a, int *lda, d *af, int *ldaf, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dposv(char *uplo, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, int *info) +void dposvx(char *fact, char *uplo, int *n, int *nrhs, d *a, int *lda, d *af, int *ldaf, char *equed, d *s, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *iwork, int *info) +void dpotf2(char *uplo, int *n, d *a, int *lda, int *info) +void dpotrf(char *uplo, int *n, d *a, int *lda, int *info) +void dpotri(char *uplo, int *n, d *a, int *lda, int *info) +void dpotrs(char *uplo, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, int *info) +void dppcon(char *uplo, int *n, d *ap, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dppequ(char *uplo, int *n, d *ap, d *s, d *scond, d *amax, int *info) +void dpprfs(char *uplo, int *n, int *nrhs, d *ap, d *afp, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dppsv(char *uplo, int *n, int *nrhs, d *ap, d *b, int *ldb, int *info) +void dppsvx(char *fact, char *uplo, int *n, int *nrhs, d *ap, d *afp, char *equed, d *s, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *iwork, int *info) +void dpptrf(char *uplo, int *n, d *ap, int *info) +void dpptri(char *uplo, int *n, d *ap, int *info) +void dpptrs(char *uplo, int *n, int *nrhs, d *ap, d *b, int *ldb, int *info) +void dpstf2(char *uplo, int *n, d *a, int *lda, int *piv, int *rank, d *tol, d *work, int *info) +void dpstrf(char *uplo, int *n, d *a, int *lda, int *piv, int *rank, d *tol, d *work, int *info) +void dptcon(int *n, d *d, d *e, d *anorm, d *rcond, d *work, int *info) +void dpteqr(char *compz, int *n, d *d, d *e, d *z, int *ldz, d *work, int *info) +void dptrfs(int *n, int *nrhs, d *d, d *e, d *df, d *ef, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *info) +void dptsv(int *n, int *nrhs, d *d, d *e, d *b, int *ldb, int *info) +void dptsvx(char *fact, int *n, int *nrhs, d *d, d *e, d *df, d *ef, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *info) +void dpttrf(int *n, d *d, d *e, int *info) +void dpttrs(int *n, int *nrhs, d *d, d *e, d *b, int *ldb, int *info) +void dptts2(int *n, int *nrhs, d *d, d *e, d *b, int *ldb) +void drscl(int *n, d *sa, d *sx, int *incx) +void dsbev(char *jobz, char *uplo, int *n, int *kd, d *ab, int *ldab, d *w, d *z, int *ldz, d *work, int *info) +void dsbevd(char *jobz, char *uplo, int *n, int *kd, d *ab, int *ldab, d *w, d *z, int *ldz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dsbevx(char *jobz, char *range, char *uplo, int *n, int *kd, d *ab, int *ldab, d *q, int *ldq, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, d *work, int *iwork, int *ifail, int *info) +void dsbgst(char *vect, char *uplo, int *n, int *ka, int *kb, d *ab, int *ldab, d *bb, int *ldbb, d *x, int *ldx, d *work, int *info) +void dsbgv(char *jobz, char *uplo, int *n, int *ka, int *kb, d *ab, int *ldab, d *bb, int *ldbb, d *w, d *z, int *ldz, d *work, int *info) +void dsbgvd(char *jobz, char *uplo, int *n, int *ka, int *kb, d *ab, int *ldab, d *bb, int *ldbb, d *w, d *z, int *ldz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dsbgvx(char *jobz, char *range, char *uplo, int *n, int *ka, int *kb, d *ab, int *ldab, d *bb, int *ldbb, d *q, int *ldq, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, d *work, int *iwork, int *ifail, int *info) +void dsbtrd(char *vect, char *uplo, int *n, int *kd, d *ab, int *ldab, d *d, d *e, d *q, int *ldq, d *work, int *info) +void dsfrk(char *transr, char *uplo, char *trans, int *n, int *k, d *alpha, d *a, int *lda, d *beta, d *c) +void dsgesv(int *n, int *nrhs, d *a, int *lda, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *work, s *swork, int *iter, int *info) +void dspcon(char *uplo, int *n, d *ap, int *ipiv, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dspev(char *jobz, char *uplo, int *n, d *ap, d *w, d *z, int *ldz, d *work, int *info) +void dspevd(char *jobz, char *uplo, int *n, d *ap, d *w, d *z, int *ldz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dspevx(char *jobz, char *range, char *uplo, int *n, d *ap, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, d *work, int *iwork, int *ifail, int *info) +void dspgst(int *itype, char *uplo, int *n, d *ap, d *bp, int *info) +void dspgv(int *itype, char *jobz, char *uplo, int *n, d *ap, d *bp, d *w, d *z, int *ldz, d *work, int *info) +void dspgvd(int *itype, char *jobz, char *uplo, int *n, d *ap, d *bp, d *w, d *z, int *ldz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dspgvx(int *itype, char *jobz, char *range, char *uplo, int *n, d *ap, d *bp, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, d *work, int *iwork, int *ifail, int *info) +void dsposv(char *uplo, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, d *x, int *ldx, d *work, s *swork, int *iter, int *info) +void dsprfs(char *uplo, int *n, int *nrhs, d *ap, d *afp, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dspsv(char *uplo, int *n, int *nrhs, d *ap, int *ipiv, d *b, int *ldb, int *info) +void dspsvx(char *fact, char *uplo, int *n, int *nrhs, d *ap, d *afp, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *iwork, int *info) +void dsptrd(char *uplo, int *n, d *ap, d *d, d *e, d *tau, int *info) +void dsptrf(char *uplo, int *n, d *ap, int *ipiv, int *info) +void dsptri(char *uplo, int *n, d *ap, int *ipiv, d *work, int *info) +void dsptrs(char *uplo, int *n, int *nrhs, d *ap, int *ipiv, d *b, int *ldb, int *info) +void dstebz(char *range, char *order, int *n, d *vl, d *vu, int *il, int *iu, d *abstol, d *d, d *e, int *m, int *nsplit, d *w, int *iblock, int *isplit, d *work, int *iwork, int *info) +void dstedc(char *compz, int *n, d *d, d *e, d *z, int *ldz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dstegr(char *jobz, char *range, int *n, d *d, d *e, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, int *isuppz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dstein(int *n, d *d, d *e, int *m, d *w, int *iblock, int *isplit, d *z, int *ldz, d *work, int *iwork, int *ifail, int *info) +void dstemr(char *jobz, char *range, int *n, d *d, d *e, d *vl, d *vu, int *il, int *iu, int *m, d *w, d *z, int *ldz, int *nzc, int *isuppz, bint *tryrac, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dsteqr(char *compz, int *n, d *d, d *e, d *z, int *ldz, d *work, int *info) +void dsterf(int *n, d *d, d *e, int *info) +void dstev(char *jobz, int *n, d *d, d *e, d *z, int *ldz, d *work, int *info) +void dstevd(char *jobz, int *n, d *d, d *e, d *z, int *ldz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dstevr(char *jobz, char *range, int *n, d *d, d *e, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, int *isuppz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dstevx(char *jobz, char *range, int *n, d *d, d *e, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, d *work, int *iwork, int *ifail, int *info) +void dsycon(char *uplo, int *n, d *a, int *lda, int *ipiv, d *anorm, d *rcond, d *work, int *iwork, int *info) +void dsyconv(char *uplo, char *way, int *n, d *a, int *lda, int *ipiv, d *work, int *info) +void dsyequb(char *uplo, int *n, d *a, int *lda, d *s, d *scond, d *amax, d *work, int *info) +void dsyev(char *jobz, char *uplo, int *n, d *a, int *lda, d *w, d *work, int *lwork, int *info) +void dsyevd(char *jobz, char *uplo, int *n, d *a, int *lda, d *w, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dsyevr(char *jobz, char *range, char *uplo, int *n, d *a, int *lda, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, int *isuppz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dsyevx(char *jobz, char *range, char *uplo, int *n, d *a, int *lda, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, d *work, int *lwork, int *iwork, int *ifail, int *info) +void dsygs2(int *itype, char *uplo, int *n, d *a, int *lda, d *b, int *ldb, int *info) +void dsygst(int *itype, char *uplo, int *n, d *a, int *lda, d *b, int *ldb, int *info) +void dsygv(int *itype, char *jobz, char *uplo, int *n, d *a, int *lda, d *b, int *ldb, d *w, d *work, int *lwork, int *info) +void dsygvd(int *itype, char *jobz, char *uplo, int *n, d *a, int *lda, d *b, int *ldb, d *w, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dsygvx(int *itype, char *jobz, char *range, char *uplo, int *n, d *a, int *lda, d *b, int *ldb, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, d *z, int *ldz, d *work, int *lwork, int *iwork, int *ifail, int *info) +void dsyrfs(char *uplo, int *n, int *nrhs, d *a, int *lda, d *af, int *ldaf, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dsysv(char *uplo, int *n, int *nrhs, d *a, int *lda, int *ipiv, d *b, int *ldb, d *work, int *lwork, int *info) +void dsysvx(char *fact, char *uplo, int *n, int *nrhs, d *a, int *lda, d *af, int *ldaf, int *ipiv, d *b, int *ldb, d *x, int *ldx, d *rcond, d *ferr, d *berr, d *work, int *lwork, int *iwork, int *info) +void dsyswapr(char *uplo, int *n, d *a, int *lda, int *i1, int *i2) +void dsytd2(char *uplo, int *n, d *a, int *lda, d *d, d *e, d *tau, int *info) +void dsytf2(char *uplo, int *n, d *a, int *lda, int *ipiv, int *info) +void dsytrd(char *uplo, int *n, d *a, int *lda, d *d, d *e, d *tau, d *work, int *lwork, int *info) +void dsytrf(char *uplo, int *n, d *a, int *lda, int *ipiv, d *work, int *lwork, int *info) +void dsytri(char *uplo, int *n, d *a, int *lda, int *ipiv, d *work, int *info) +void dsytri2(char *uplo, int *n, d *a, int *lda, int *ipiv, d *work, int *lwork, int *info) +void dsytri2x(char *uplo, int *n, d *a, int *lda, int *ipiv, d *work, int *nb, int *info) +void dsytrs(char *uplo, int *n, int *nrhs, d *a, int *lda, int *ipiv, d *b, int *ldb, int *info) +void dsytrs2(char *uplo, int *n, int *nrhs, d *a, int *lda, int *ipiv, d *b, int *ldb, d *work, int *info) +void dtbcon(char *norm, char *uplo, char *diag, int *n, int *kd, d *ab, int *ldab, d *rcond, d *work, int *iwork, int *info) +void dtbrfs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, d *ab, int *ldab, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dtbtrs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, d *ab, int *ldab, d *b, int *ldb, int *info) +void dtfsm(char *transr, char *side, char *uplo, char *trans, char *diag, int *m, int *n, d *alpha, d *a, d *b, int *ldb) +void dtftri(char *transr, char *uplo, char *diag, int *n, d *a, int *info) +void dtfttp(char *transr, char *uplo, int *n, d *arf, d *ap, int *info) +void dtfttr(char *transr, char *uplo, int *n, d *arf, d *a, int *lda, int *info) +void dtgevc(char *side, char *howmny, bint *select, int *n, d *s, int *lds, d *p, int *ldp, d *vl, int *ldvl, d *vr, int *ldvr, int *mm, int *m, d *work, int *info) +void dtgex2(bint *wantq, bint *wantz, int *n, d *a, int *lda, d *b, int *ldb, d *q, int *ldq, d *z, int *ldz, int *j1, int *n1, int *n2, d *work, int *lwork, int *info) +void dtgexc(bint *wantq, bint *wantz, int *n, d *a, int *lda, d *b, int *ldb, d *q, int *ldq, d *z, int *ldz, int *ifst, int *ilst, d *work, int *lwork, int *info) +void dtgsen(int *ijob, bint *wantq, bint *wantz, bint *select, int *n, d *a, int *lda, d *b, int *ldb, d *alphar, d *alphai, d *beta, d *q, int *ldq, d *z, int *ldz, int *m, d *pl, d *pr, d *dif, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dtgsja(char *jobu, char *jobv, char *jobq, int *m, int *p, int *n, int *k, int *l, d *a, int *lda, d *b, int *ldb, d *tola, d *tolb, d *alpha, d *beta, d *u, int *ldu, d *v, int *ldv, d *q, int *ldq, d *work, int *ncycle, int *info) +void dtgsna(char *job, char *howmny, bint *select, int *n, d *a, int *lda, d *b, int *ldb, d *vl, int *ldvl, d *vr, int *ldvr, d *s, d *dif, int *mm, int *m, d *work, int *lwork, int *iwork, int *info) +void dtgsy2(char *trans, int *ijob, int *m, int *n, d *a, int *lda, d *b, int *ldb, d *c, int *ldc, d *d, int *ldd, d *e, int *lde, d *f, int *ldf, d *scale, d *rdsum, d *rdscal, int *iwork, int *pq, int *info) +void dtgsyl(char *trans, int *ijob, int *m, int *n, d *a, int *lda, d *b, int *ldb, d *c, int *ldc, d *d, int *ldd, d *e, int *lde, d *f, int *ldf, d *scale, d *dif, d *work, int *lwork, int *iwork, int *info) +void dtpcon(char *norm, char *uplo, char *diag, int *n, d *ap, d *rcond, d *work, int *iwork, int *info) +void dtpmqrt(char *side, char *trans, int *m, int *n, int *k, int *l, int *nb, d *v, int *ldv, d *t, int *ldt, d *a, int *lda, d *b, int *ldb, d *work, int *info) +void dtpqrt(int *m, int *n, int *l, int *nb, d *a, int *lda, d *b, int *ldb, d *t, int *ldt, d *work, int *info) +void dtpqrt2(int *m, int *n, int *l, d *a, int *lda, d *b, int *ldb, d *t, int *ldt, int *info) +void dtprfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, d *v, int *ldv, d *t, int *ldt, d *a, int *lda, d *b, int *ldb, d *work, int *ldwork) +void dtprfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, d *ap, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dtptri(char *uplo, char *diag, int *n, d *ap, int *info) +void dtptrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, d *ap, d *b, int *ldb, int *info) +void dtpttf(char *transr, char *uplo, int *n, d *ap, d *arf, int *info) +void dtpttr(char *uplo, int *n, d *ap, d *a, int *lda, int *info) +void dtrcon(char *norm, char *uplo, char *diag, int *n, d *a, int *lda, d *rcond, d *work, int *iwork, int *info) +void dtrevc(char *side, char *howmny, bint *select, int *n, d *t, int *ldt, d *vl, int *ldvl, d *vr, int *ldvr, int *mm, int *m, d *work, int *info) +void dtrexc(char *compq, int *n, d *t, int *ldt, d *q, int *ldq, int *ifst, int *ilst, d *work, int *info) +void dtrrfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, d *x, int *ldx, d *ferr, d *berr, d *work, int *iwork, int *info) +void dtrsen(char *job, char *compq, bint *select, int *n, d *t, int *ldt, d *q, int *ldq, d *wr, d *wi, int *m, d *s, d *sep, d *work, int *lwork, int *iwork, int *liwork, int *info) +void dtrsna(char *job, char *howmny, bint *select, int *n, d *t, int *ldt, d *vl, int *ldvl, d *vr, int *ldvr, d *s, d *sep, int *mm, int *m, d *work, int *ldwork, int *iwork, int *info) +void dtrsyl(char *trana, char *tranb, int *isgn, int *m, int *n, d *a, int *lda, d *b, int *ldb, d *c, int *ldc, d *scale, int *info) +void dtrti2(char *uplo, char *diag, int *n, d *a, int *lda, int *info) +void dtrtri(char *uplo, char *diag, int *n, d *a, int *lda, int *info) +void dtrtrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, d *a, int *lda, d *b, int *ldb, int *info) +void dtrttf(char *transr, char *uplo, int *n, d *a, int *lda, d *arf, int *info) +void dtrttp(char *uplo, int *n, d *a, int *lda, d *ap, int *info) +void dtzrzf(int *m, int *n, d *a, int *lda, d *tau, d *work, int *lwork, int *info) +d dzsum1(int *n, z *cx, int *incx) +int icmax1(int *n, c *cx, int *incx) +int ieeeck(int *ispec, s *zero, s *one) +int ilaclc(int *m, int *n, c *a, int *lda) +int ilaclr(int *m, int *n, c *a, int *lda) +int iladiag(char *diag) +int iladlc(int *m, int *n, d *a, int *lda) +int iladlr(int *m, int *n, d *a, int *lda) +int ilaprec(char *prec) +int ilaslc(int *m, int *n, s *a, int *lda) +int ilaslr(int *m, int *n, s *a, int *lda) +int ilatrans(char *trans) +int ilauplo(char *uplo) +void ilaver(int *vers_major, int *vers_minor, int *vers_patch) +int ilazlc(int *m, int *n, z *a, int *lda) +int ilazlr(int *m, int *n, z *a, int *lda) +int izmax1(int *n, z *cx, int *incx) +void sbbcsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, int *m, int *p, int *q, s *theta, s *phi, s *u1, int *ldu1, s *u2, int *ldu2, s *v1t, int *ldv1t, s *v2t, int *ldv2t, s *b11d, s *b11e, s *b12d, s *b12e, s *b21d, s *b21e, s *b22d, s *b22e, s *work, int *lwork, int *info) +void sbdsdc(char *uplo, char *compq, int *n, s *d, s *e, s *u, int *ldu, s *vt, int *ldvt, s *q, int *iq, s *work, int *iwork, int *info) +void sbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, s *d, s *e, s *vt, int *ldvt, s *u, int *ldu, s *c, int *ldc, s *work, int *info) +s scsum1(int *n, c *cx, int *incx) +void sdisna(char *job, int *m, int *n, s *d, s *sep, int *info) +void sgbbrd(char *vect, int *m, int *n, int *ncc, int *kl, int *ku, s *ab, int *ldab, s *d, s *e, s *q, int *ldq, s *pt, int *ldpt, s *c, int *ldc, s *work, int *info) +void sgbcon(char *norm, int *n, int *kl, int *ku, s *ab, int *ldab, int *ipiv, s *anorm, s *rcond, s *work, int *iwork, int *info) +void sgbequ(int *m, int *n, int *kl, int *ku, s *ab, int *ldab, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void sgbequb(int *m, int *n, int *kl, int *ku, s *ab, int *ldab, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void sgbrfs(char *trans, int *n, int *kl, int *ku, int *nrhs, s *ab, int *ldab, s *afb, int *ldafb, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void sgbsv(int *n, int *kl, int *ku, int *nrhs, s *ab, int *ldab, int *ipiv, s *b, int *ldb, int *info) +void sgbsvx(char *fact, char *trans, int *n, int *kl, int *ku, int *nrhs, s *ab, int *ldab, s *afb, int *ldafb, int *ipiv, char *equed, s *r, s *c, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *iwork, int *info) +void sgbtf2(int *m, int *n, int *kl, int *ku, s *ab, int *ldab, int *ipiv, int *info) +void sgbtrf(int *m, int *n, int *kl, int *ku, s *ab, int *ldab, int *ipiv, int *info) +void sgbtrs(char *trans, int *n, int *kl, int *ku, int *nrhs, s *ab, int *ldab, int *ipiv, s *b, int *ldb, int *info) +void sgebak(char *job, char *side, int *n, int *ilo, int *ihi, s *scale, int *m, s *v, int *ldv, int *info) +void sgebal(char *job, int *n, s *a, int *lda, int *ilo, int *ihi, s *scale, int *info) +void sgebd2(int *m, int *n, s *a, int *lda, s *d, s *e, s *tauq, s *taup, s *work, int *info) +void sgebrd(int *m, int *n, s *a, int *lda, s *d, s *e, s *tauq, s *taup, s *work, int *lwork, int *info) +void sgecon(char *norm, int *n, s *a, int *lda, s *anorm, s *rcond, s *work, int *iwork, int *info) +void sgeequ(int *m, int *n, s *a, int *lda, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void sgeequb(int *m, int *n, s *a, int *lda, s *r, s *c, s *rowcnd, s *colcnd, s *amax, int *info) +void sgees(char *jobvs, char *sort, sselect2 *select, int *n, s *a, int *lda, int *sdim, s *wr, s *wi, s *vs, int *ldvs, s *work, int *lwork, bint *bwork, int *info) +void sgeesx(char *jobvs, char *sort, sselect2 *select, char *sense, int *n, s *a, int *lda, int *sdim, s *wr, s *wi, s *vs, int *ldvs, s *rconde, s *rcondv, s *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info) +void sgeev(char *jobvl, char *jobvr, int *n, s *a, int *lda, s *wr, s *wi, s *vl, int *ldvl, s *vr, int *ldvr, s *work, int *lwork, int *info) +void sgeevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, s *a, int *lda, s *wr, s *wi, s *vl, int *ldvl, s *vr, int *ldvr, int *ilo, int *ihi, s *scale, s *abnrm, s *rconde, s *rcondv, s *work, int *lwork, int *iwork, int *info) +void sgehd2(int *n, int *ilo, int *ihi, s *a, int *lda, s *tau, s *work, int *info) +void sgehrd(int *n, int *ilo, int *ihi, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sgejsv(char *joba, char *jobu, char *jobv, char *jobr, char *jobt, char *jobp, int *m, int *n, s *a, int *lda, s *sva, s *u, int *ldu, s *v, int *ldv, s *work, int *lwork, int *iwork, int *info) +void sgelq2(int *m, int *n, s *a, int *lda, s *tau, s *work, int *info) +void sgelqf(int *m, int *n, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sgels(char *trans, int *m, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, s *work, int *lwork, int *info) +void sgelsd(int *m, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, s *s, s *rcond, int *rank, s *work, int *lwork, int *iwork, int *info) +void sgelss(int *m, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, s *s, s *rcond, int *rank, s *work, int *lwork, int *info) +void sgelsy(int *m, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, int *jpvt, s *rcond, int *rank, s *work, int *lwork, int *info) +void sgemqrt(char *side, char *trans, int *m, int *n, int *k, int *nb, s *v, int *ldv, s *t, int *ldt, s *c, int *ldc, s *work, int *info) +void sgeql2(int *m, int *n, s *a, int *lda, s *tau, s *work, int *info) +void sgeqlf(int *m, int *n, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sgeqp3(int *m, int *n, s *a, int *lda, int *jpvt, s *tau, s *work, int *lwork, int *info) +void sgeqr2(int *m, int *n, s *a, int *lda, s *tau, s *work, int *info) +void sgeqr2p(int *m, int *n, s *a, int *lda, s *tau, s *work, int *info) +void sgeqrf(int *m, int *n, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sgeqrfp(int *m, int *n, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sgeqrt(int *m, int *n, int *nb, s *a, int *lda, s *t, int *ldt, s *work, int *info) +void sgeqrt2(int *m, int *n, s *a, int *lda, s *t, int *ldt, int *info) +void sgeqrt3(int *m, int *n, s *a, int *lda, s *t, int *ldt, int *info) +void sgerfs(char *trans, int *n, int *nrhs, s *a, int *lda, s *af, int *ldaf, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void sgerq2(int *m, int *n, s *a, int *lda, s *tau, s *work, int *info) +void sgerqf(int *m, int *n, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sgesc2(int *n, s *a, int *lda, s *rhs, int *ipiv, int *jpiv, s *scale) +void sgesdd(char *jobz, int *m, int *n, s *a, int *lda, s *s, s *u, int *ldu, s *vt, int *ldvt, s *work, int *lwork, int *iwork, int *info) +void sgesv(int *n, int *nrhs, s *a, int *lda, int *ipiv, s *b, int *ldb, int *info) +void sgesvd(char *jobu, char *jobvt, int *m, int *n, s *a, int *lda, s *s, s *u, int *ldu, s *vt, int *ldvt, s *work, int *lwork, int *info) +void sgesvj(char *joba, char *jobu, char *jobv, int *m, int *n, s *a, int *lda, s *sva, int *mv, s *v, int *ldv, s *work, int *lwork, int *info) +void sgesvx(char *fact, char *trans, int *n, int *nrhs, s *a, int *lda, s *af, int *ldaf, int *ipiv, char *equed, s *r, s *c, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *iwork, int *info) +void sgetc2(int *n, s *a, int *lda, int *ipiv, int *jpiv, int *info) +void sgetf2(int *m, int *n, s *a, int *lda, int *ipiv, int *info) +void sgetrf(int *m, int *n, s *a, int *lda, int *ipiv, int *info) +void sgetri(int *n, s *a, int *lda, int *ipiv, s *work, int *lwork, int *info) +void sgetrs(char *trans, int *n, int *nrhs, s *a, int *lda, int *ipiv, s *b, int *ldb, int *info) +void sggbak(char *job, char *side, int *n, int *ilo, int *ihi, s *lscale, s *rscale, int *m, s *v, int *ldv, int *info) +void sggbal(char *job, int *n, s *a, int *lda, s *b, int *ldb, int *ilo, int *ihi, s *lscale, s *rscale, s *work, int *info) +void sgges(char *jobvsl, char *jobvsr, char *sort, sselect3 *selctg, int *n, s *a, int *lda, s *b, int *ldb, int *sdim, s *alphar, s *alphai, s *beta, s *vsl, int *ldvsl, s *vsr, int *ldvsr, s *work, int *lwork, bint *bwork, int *info) +void sggesx(char *jobvsl, char *jobvsr, char *sort, sselect3 *selctg, char *sense, int *n, s *a, int *lda, s *b, int *ldb, int *sdim, s *alphar, s *alphai, s *beta, s *vsl, int *ldvsl, s *vsr, int *ldvsr, s *rconde, s *rcondv, s *work, int *lwork, int *iwork, int *liwork, bint *bwork, int *info) +void sggev(char *jobvl, char *jobvr, int *n, s *a, int *lda, s *b, int *ldb, s *alphar, s *alphai, s *beta, s *vl, int *ldvl, s *vr, int *ldvr, s *work, int *lwork, int *info) +void sggevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, s *a, int *lda, s *b, int *ldb, s *alphar, s *alphai, s *beta, s *vl, int *ldvl, s *vr, int *ldvr, int *ilo, int *ihi, s *lscale, s *rscale, s *abnrm, s *bbnrm, s *rconde, s *rcondv, s *work, int *lwork, int *iwork, bint *bwork, int *info) +void sggglm(int *n, int *m, int *p, s *a, int *lda, s *b, int *ldb, s *d, s *x, s *y, s *work, int *lwork, int *info) +void sgghrd(char *compq, char *compz, int *n, int *ilo, int *ihi, s *a, int *lda, s *b, int *ldb, s *q, int *ldq, s *z, int *ldz, int *info) +void sgglse(int *m, int *n, int *p, s *a, int *lda, s *b, int *ldb, s *c, s *d, s *x, s *work, int *lwork, int *info) +void sggqrf(int *n, int *m, int *p, s *a, int *lda, s *taua, s *b, int *ldb, s *taub, s *work, int *lwork, int *info) +void sggrqf(int *m, int *p, int *n, s *a, int *lda, s *taua, s *b, int *ldb, s *taub, s *work, int *lwork, int *info) +void sgsvj0(char *jobv, int *m, int *n, s *a, int *lda, s *d, s *sva, int *mv, s *v, int *ldv, s *eps, s *sfmin, s *tol, int *nsweep, s *work, int *lwork, int *info) +void sgsvj1(char *jobv, int *m, int *n, int *n1, s *a, int *lda, s *d, s *sva, int *mv, s *v, int *ldv, s *eps, s *sfmin, s *tol, int *nsweep, s *work, int *lwork, int *info) +void sgtcon(char *norm, int *n, s *dl, s *d, s *du, s *du2, int *ipiv, s *anorm, s *rcond, s *work, int *iwork, int *info) +void sgtrfs(char *trans, int *n, int *nrhs, s *dl, s *d, s *du, s *dlf, s *df, s *duf, s *du2, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void sgtsv(int *n, int *nrhs, s *dl, s *d, s *du, s *b, int *ldb, int *info) +void sgtsvx(char *fact, char *trans, int *n, int *nrhs, s *dl, s *d, s *du, s *dlf, s *df, s *duf, s *du2, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *iwork, int *info) +void sgttrf(int *n, s *dl, s *d, s *du, s *du2, int *ipiv, int *info) +void sgttrs(char *trans, int *n, int *nrhs, s *dl, s *d, s *du, s *du2, int *ipiv, s *b, int *ldb, int *info) +void sgtts2(int *itrans, int *n, int *nrhs, s *dl, s *d, s *du, s *du2, int *ipiv, s *b, int *ldb) +void shgeqz(char *job, char *compq, char *compz, int *n, int *ilo, int *ihi, s *h, int *ldh, s *t, int *ldt, s *alphar, s *alphai, s *beta, s *q, int *ldq, s *z, int *ldz, s *work, int *lwork, int *info) +void shsein(char *side, char *eigsrc, char *initv, bint *select, int *n, s *h, int *ldh, s *wr, s *wi, s *vl, int *ldvl, s *vr, int *ldvr, int *mm, int *m, s *work, int *ifaill, int *ifailr, int *info) +void shseqr(char *job, char *compz, int *n, int *ilo, int *ihi, s *h, int *ldh, s *wr, s *wi, s *z, int *ldz, s *work, int *lwork, int *info) +void slabad(s *small, s *large) +void slabrd(int *m, int *n, int *nb, s *a, int *lda, s *d, s *e, s *tauq, s *taup, s *x, int *ldx, s *y, int *ldy) +void slacn2(int *n, s *v, s *x, int *isgn, s *est, int *kase, int *isave) +void slacon(int *n, s *v, s *x, int *isgn, s *est, int *kase) +void slacpy(char *uplo, int *m, int *n, s *a, int *lda, s *b, int *ldb) +void sladiv(s *a, s *b, s *c, s *d, s *p, s *q) +void slae2(s *a, s *b, s *c, s *rt1, s *rt2) +void slaebz(int *ijob, int *nitmax, int *n, int *mmax, int *minp, int *nbmin, s *abstol, s *reltol, s *pivmin, s *d, s *e, s *e2, int *nval, s *ab, s *c, int *mout, int *nab, s *work, int *iwork, int *info) +void slaed0(int *icompq, int *qsiz, int *n, s *d, s *e, s *q, int *ldq, s *qstore, int *ldqs, s *work, int *iwork, int *info) +void slaed1(int *n, s *d, s *q, int *ldq, int *indxq, s *rho, int *cutpnt, s *work, int *iwork, int *info) +void slaed2(int *k, int *n, int *n1, s *d, s *q, int *ldq, int *indxq, s *rho, s *z, s *dlamda, s *w, s *q2, int *indx, int *indxc, int *indxp, int *coltyp, int *info) +void slaed3(int *k, int *n, int *n1, s *d, s *q, int *ldq, s *rho, s *dlamda, s *q2, int *indx, int *ctot, s *w, s *s, int *info) +void slaed4(int *n, int *i, s *d, s *z, s *delta, s *rho, s *dlam, int *info) +void slaed5(int *i, s *d, s *z, s *delta, s *rho, s *dlam) +void slaed6(int *kniter, bint *orgati, s *rho, s *d, s *z, s *finit, s *tau, int *info) +void slaed7(int *icompq, int *n, int *qsiz, int *tlvls, int *curlvl, int *curpbm, s *d, s *q, int *ldq, int *indxq, s *rho, int *cutpnt, s *qstore, int *qptr, int *prmptr, int *perm, int *givptr, int *givcol, s *givnum, s *work, int *iwork, int *info) +void slaed8(int *icompq, int *k, int *n, int *qsiz, s *d, s *q, int *ldq, int *indxq, s *rho, int *cutpnt, s *z, s *dlamda, s *q2, int *ldq2, s *w, int *perm, int *givptr, int *givcol, s *givnum, int *indxp, int *indx, int *info) +void slaed9(int *k, int *kstart, int *kstop, int *n, s *d, s *q, int *ldq, s *rho, s *dlamda, s *w, s *s, int *lds, int *info) +void slaeda(int *n, int *tlvls, int *curlvl, int *curpbm, int *prmptr, int *perm, int *givptr, int *givcol, s *givnum, s *q, int *qptr, s *z, s *ztemp, int *info) +void slaein(bint *rightv, bint *noinit, int *n, s *h, int *ldh, s *wr, s *wi, s *vr, s *vi, s *b, int *ldb, s *work, s *eps3, s *smlnum, s *bignum, int *info) +void slaev2(s *a, s *b, s *c, s *rt1, s *rt2, s *cs1, s *sn1) +void slaexc(bint *wantq, int *n, s *t, int *ldt, s *q, int *ldq, int *j1, int *n1, int *n2, s *work, int *info) +void slag2(s *a, int *lda, s *b, int *ldb, s *safmin, s *scale1, s *scale2, s *wr1, s *wr2, s *wi) +void slag2d(int *m, int *n, s *sa, int *ldsa, d *a, int *lda, int *info) +void slags2(bint *upper, s *a1, s *a2, s *a3, s *b1, s *b2, s *b3, s *csu, s *snu, s *csv, s *snv, s *csq, s *snq) +void slagtf(int *n, s *a, s *lambda, s *b, s *c, s *tol, s *d, int *in, int *info) +void slagtm(char *trans, int *n, int *nrhs, s *alpha, s *dl, s *d, s *du, s *x, int *ldx, s *beta, s *b, int *ldb) +void slagts(int *job, int *n, s *a, s *b, s *c, s *d, int *in, s *y, s *tol, int *info) +void slagv2(s *a, int *lda, s *b, int *ldb, s *alphar, s *alphai, s *beta, s *csl, s *snl, s *csr, s *snr) +void slahqr(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, s *h, int *ldh, s *wr, s *wi, int *iloz, int *ihiz, s *z, int *ldz, int *info) +void slahr2(int *n, int *k, int *nb, s *a, int *lda, s *tau, s *t, int *ldt, s *y, int *ldy) +void slaic1(int *job, int *j, s *x, s *sest, s *w, s *gamma, s *sestpr, s *s, s *c) +void slaln2(bint *ltrans, int *na, int *nw, s *smin, s *ca, s *a, int *lda, s *d1, s *d2, s *b, int *ldb, s *wr, s *wi, s *x, int *ldx, s *scale, s *xnorm, int *info) +void slals0(int *icompq, int *nl, int *nr, int *sqre, int *nrhs, s *b, int *ldb, s *bx, int *ldbx, int *perm, int *givptr, int *givcol, int *ldgcol, s *givnum, int *ldgnum, s *poles, s *difl, s *difr, s *z, int *k, s *c, s *s, s *work, int *info) +void slalsa(int *icompq, int *smlsiz, int *n, int *nrhs, s *b, int *ldb, s *bx, int *ldbx, s *u, int *ldu, s *vt, int *k, s *difl, s *difr, s *z, s *poles, int *givptr, int *givcol, int *ldgcol, int *perm, s *givnum, s *c, s *s, s *work, int *iwork, int *info) +void slalsd(char *uplo, int *smlsiz, int *n, int *nrhs, s *d, s *e, s *b, int *ldb, s *rcond, int *rank, s *work, int *iwork, int *info) +s slamch(char *cmach) +void slamrg(int *n1, int *n2, s *a, int *strd1, int *strd2, int *index_bn) +s slangb(char *norm, int *n, int *kl, int *ku, s *ab, int *ldab, s *work) +s slange(char *norm, int *m, int *n, s *a, int *lda, s *work) +s slangt(char *norm, int *n, s *dl, s *d, s *du) +s slanhs(char *norm, int *n, s *a, int *lda, s *work) +s slansb(char *norm, char *uplo, int *n, int *k, s *ab, int *ldab, s *work) +s slansf(char *norm, char *transr, char *uplo, int *n, s *a, s *work) +s slansp(char *norm, char *uplo, int *n, s *ap, s *work) +s slanst(char *norm, int *n, s *d, s *e) +s slansy(char *norm, char *uplo, int *n, s *a, int *lda, s *work) +s slantb(char *norm, char *uplo, char *diag, int *n, int *k, s *ab, int *ldab, s *work) +s slantp(char *norm, char *uplo, char *diag, int *n, s *ap, s *work) +s slantr(char *norm, char *uplo, char *diag, int *m, int *n, s *a, int *lda, s *work) +void slanv2(s *a, s *b, s *c, s *d, s *rt1r, s *rt1i, s *rt2r, s *rt2i, s *cs, s *sn) +void slapll(int *n, s *x, int *incx, s *y, int *incy, s *ssmin) +void slapmr(bint *forwrd, int *m, int *n, s *x, int *ldx, int *k) +void slapmt(bint *forwrd, int *m, int *n, s *x, int *ldx, int *k) +s slapy2(s *x, s *y) +s slapy3(s *x, s *y, s *z) +void slaqgb(int *m, int *n, int *kl, int *ku, s *ab, int *ldab, s *r, s *c, s *rowcnd, s *colcnd, s *amax, char *equed) +void slaqge(int *m, int *n, s *a, int *lda, s *r, s *c, s *rowcnd, s *colcnd, s *amax, char *equed) +void slaqp2(int *m, int *n, int *offset, s *a, int *lda, int *jpvt, s *tau, s *vn1, s *vn2, s *work) +void slaqps(int *m, int *n, int *offset, int *nb, int *kb, s *a, int *lda, int *jpvt, s *tau, s *vn1, s *vn2, s *auxv, s *f, int *ldf) +void slaqr0(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, s *h, int *ldh, s *wr, s *wi, int *iloz, int *ihiz, s *z, int *ldz, s *work, int *lwork, int *info) +void slaqr1(int *n, s *h, int *ldh, s *sr1, s *si1, s *sr2, s *si2, s *v) +void slaqr2(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, s *h, int *ldh, int *iloz, int *ihiz, s *z, int *ldz, int *ns, int *nd, s *sr, s *si, s *v, int *ldv, int *nh, s *t, int *ldt, int *nv, s *wv, int *ldwv, s *work, int *lwork) +void slaqr3(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, s *h, int *ldh, int *iloz, int *ihiz, s *z, int *ldz, int *ns, int *nd, s *sr, s *si, s *v, int *ldv, int *nh, s *t, int *ldt, int *nv, s *wv, int *ldwv, s *work, int *lwork) +void slaqr4(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, s *h, int *ldh, s *wr, s *wi, int *iloz, int *ihiz, s *z, int *ldz, s *work, int *lwork, int *info) +void slaqr5(bint *wantt, bint *wantz, int *kacc22, int *n, int *ktop, int *kbot, int *nshfts, s *sr, s *si, s *h, int *ldh, int *iloz, int *ihiz, s *z, int *ldz, s *v, int *ldv, s *u, int *ldu, int *nv, s *wv, int *ldwv, int *nh, s *wh, int *ldwh) +void slaqsb(char *uplo, int *n, int *kd, s *ab, int *ldab, s *s, s *scond, s *amax, char *equed) +void slaqsp(char *uplo, int *n, s *ap, s *s, s *scond, s *amax, char *equed) +void slaqsy(char *uplo, int *n, s *a, int *lda, s *s, s *scond, s *amax, char *equed) +void slaqtr(bint *ltran, bint *lreal, int *n, s *t, int *ldt, s *b, s *w, s *scale, s *x, s *work, int *info) +void slar1v(int *n, int *b1, int *bn, s *lambda, s *d, s *l, s *ld, s *lld, s *pivmin, s *gaptol, s *z, bint *wantnc, int *negcnt, s *ztz, s *mingma, int *r, int *isuppz, s *nrminv, s *resid, s *rqcorr, s *work) +void slar2v(int *n, s *x, s *y, s *z, int *incx, s *c, s *s, int *incc) +void slarf(char *side, int *m, int *n, s *v, int *incv, s *tau, s *c, int *ldc, s *work) +void slarfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, s *v, int *ldv, s *t, int *ldt, s *c, int *ldc, s *work, int *ldwork) +void slarfg(int *n, s *alpha, s *x, int *incx, s *tau) +void slarfgp(int *n, s *alpha, s *x, int *incx, s *tau) +void slarft(char *direct, char *storev, int *n, int *k, s *v, int *ldv, s *tau, s *t, int *ldt) +void slarfx(char *side, int *m, int *n, s *v, s *tau, s *c, int *ldc, s *work) +void slargv(int *n, s *x, int *incx, s *y, int *incy, s *c, int *incc) +void slarnv(int *idist, int *iseed, int *n, s *x) +void slarra(int *n, s *d, s *e, s *e2, s *spltol, s *tnrm, int *nsplit, int *isplit, int *info) +void slarrb(int *n, s *d, s *lld, int *ifirst, int *ilast, s *rtol1, s *rtol2, int *offset, s *w, s *wgap, s *werr, s *work, int *iwork, s *pivmin, s *spdiam, int *twist, int *info) +void slarrc(char *jobt, int *n, s *vl, s *vu, s *d, s *e, s *pivmin, int *eigcnt, int *lcnt, int *rcnt, int *info) +void slarrd(char *range, char *order, int *n, s *vl, s *vu, int *il, int *iu, s *gers, s *reltol, s *d, s *e, s *e2, s *pivmin, int *nsplit, int *isplit, int *m, s *w, s *werr, s *wl, s *wu, int *iblock, int *indexw, s *work, int *iwork, int *info) +void slarre(char *range, int *n, s *vl, s *vu, int *il, int *iu, s *d, s *e, s *e2, s *rtol1, s *rtol2, s *spltol, int *nsplit, int *isplit, int *m, s *w, s *werr, s *wgap, int *iblock, int *indexw, s *gers, s *pivmin, s *work, int *iwork, int *info) +void slarrf(int *n, s *d, s *l, s *ld, int *clstrt, int *clend, s *w, s *wgap, s *werr, s *spdiam, s *clgapl, s *clgapr, s *pivmin, s *sigma, s *dplus, s *lplus, s *work, int *info) +void slarrj(int *n, s *d, s *e2, int *ifirst, int *ilast, s *rtol, int *offset, s *w, s *werr, s *work, int *iwork, s *pivmin, s *spdiam, int *info) +void slarrk(int *n, int *iw, s *gl, s *gu, s *d, s *e2, s *pivmin, s *reltol, s *w, s *werr, int *info) +void slarrr(int *n, s *d, s *e, int *info) +void slarrv(int *n, s *vl, s *vu, s *d, s *l, s *pivmin, int *isplit, int *m, int *dol, int *dou, s *minrgp, s *rtol1, s *rtol2, s *w, s *werr, s *wgap, int *iblock, int *indexw, s *gers, s *z, int *ldz, int *isuppz, s *work, int *iwork, int *info) +void slartg(s *f, s *g, s *cs, s *sn, s *r) +void slartgp(s *f, s *g, s *cs, s *sn, s *r) +void slartgs(s *x, s *y, s *sigma, s *cs, s *sn) +void slartv(int *n, s *x, int *incx, s *y, int *incy, s *c, s *s, int *incc) +void slaruv(int *iseed, int *n, s *x) +void slarz(char *side, int *m, int *n, int *l, s *v, int *incv, s *tau, s *c, int *ldc, s *work) +void slarzb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, s *v, int *ldv, s *t, int *ldt, s *c, int *ldc, s *work, int *ldwork) +void slarzt(char *direct, char *storev, int *n, int *k, s *v, int *ldv, s *tau, s *t, int *ldt) +void slas2(s *f, s *g, s *h, s *ssmin, s *ssmax) +void slascl(char *type_bn, int *kl, int *ku, s *cfrom, s *cto, int *m, int *n, s *a, int *lda, int *info) +void slasd0(int *n, int *sqre, s *d, s *e, s *u, int *ldu, s *vt, int *ldvt, int *smlsiz, int *iwork, s *work, int *info) +void slasd1(int *nl, int *nr, int *sqre, s *d, s *alpha, s *beta, s *u, int *ldu, s *vt, int *ldvt, int *idxq, int *iwork, s *work, int *info) +void slasd2(int *nl, int *nr, int *sqre, int *k, s *d, s *z, s *alpha, s *beta, s *u, int *ldu, s *vt, int *ldvt, s *dsigma, s *u2, int *ldu2, s *vt2, int *ldvt2, int *idxp, int *idx, int *idxc, int *idxq, int *coltyp, int *info) +void slasd3(int *nl, int *nr, int *sqre, int *k, s *d, s *q, int *ldq, s *dsigma, s *u, int *ldu, s *u2, int *ldu2, s *vt, int *ldvt, s *vt2, int *ldvt2, int *idxc, int *ctot, s *z, int *info) +void slasd4(int *n, int *i, s *d, s *z, s *delta, s *rho, s *sigma, s *work, int *info) +void slasd5(int *i, s *d, s *z, s *delta, s *rho, s *dsigma, s *work) +void slasd6(int *icompq, int *nl, int *nr, int *sqre, s *d, s *vf, s *vl, s *alpha, s *beta, int *idxq, int *perm, int *givptr, int *givcol, int *ldgcol, s *givnum, int *ldgnum, s *poles, s *difl, s *difr, s *z, int *k, s *c, s *s, s *work, int *iwork, int *info) +void slasd7(int *icompq, int *nl, int *nr, int *sqre, int *k, s *d, s *z, s *zw, s *vf, s *vfw, s *vl, s *vlw, s *alpha, s *beta, s *dsigma, int *idx, int *idxp, int *idxq, int *perm, int *givptr, int *givcol, int *ldgcol, s *givnum, int *ldgnum, s *c, s *s, int *info) +void slasd8(int *icompq, int *k, s *d, s *z, s *vf, s *vl, s *difl, s *difr, int *lddifr, s *dsigma, s *work, int *info) +void slasda(int *icompq, int *smlsiz, int *n, int *sqre, s *d, s *e, s *u, int *ldu, s *vt, int *k, s *difl, s *difr, s *z, s *poles, int *givptr, int *givcol, int *ldgcol, int *perm, s *givnum, s *c, s *s, s *work, int *iwork, int *info) +void slasdq(char *uplo, int *sqre, int *n, int *ncvt, int *nru, int *ncc, s *d, s *e, s *vt, int *ldvt, s *u, int *ldu, s *c, int *ldc, s *work, int *info) +void slasdt(int *n, int *lvl, int *nd, int *inode, int *ndiml, int *ndimr, int *msub) +void slaset(char *uplo, int *m, int *n, s *alpha, s *beta, s *a, int *lda) +void slasq1(int *n, s *d, s *e, s *work, int *info) +void slasq2(int *n, s *z, int *info) +void slasq3(int *i0, int *n0, s *z, int *pp, s *dmin, s *sigma, s *desig, s *qmax, int *nfail, int *iter, int *ndiv, bint *ieee, int *ttype, s *dmin1, s *dmin2, s *dn, s *dn1, s *dn2, s *g, s *tau) +void slasq4(int *i0, int *n0, s *z, int *pp, int *n0in, s *dmin, s *dmin1, s *dmin2, s *dn, s *dn1, s *dn2, s *tau, int *ttype, s *g) +void slasq6(int *i0, int *n0, s *z, int *pp, s *dmin, s *dmin1, s *dmin2, s *dn, s *dnm1, s *dnm2) +void slasr(char *side, char *pivot, char *direct, int *m, int *n, s *c, s *s, s *a, int *lda) +void slasrt(char *id, int *n, s *d, int *info) +void slassq(int *n, s *x, int *incx, s *scale, s *sumsq) +void slasv2(s *f, s *g, s *h, s *ssmin, s *ssmax, s *snr, s *csr, s *snl, s *csl) +void slaswp(int *n, s *a, int *lda, int *k1, int *k2, int *ipiv, int *incx) +void slasy2(bint *ltranl, bint *ltranr, int *isgn, int *n1, int *n2, s *tl, int *ldtl, s *tr, int *ldtr, s *b, int *ldb, s *scale, s *x, int *ldx, s *xnorm, int *info) +void slasyf(char *uplo, int *n, int *nb, int *kb, s *a, int *lda, int *ipiv, s *w, int *ldw, int *info) +void slatbs(char *uplo, char *trans, char *diag, char *normin, int *n, int *kd, s *ab, int *ldab, s *x, s *scale, s *cnorm, int *info) +void slatdf(int *ijob, int *n, s *z, int *ldz, s *rhs, s *rdsum, s *rdscal, int *ipiv, int *jpiv) +void slatps(char *uplo, char *trans, char *diag, char *normin, int *n, s *ap, s *x, s *scale, s *cnorm, int *info) +void slatrd(char *uplo, int *n, int *nb, s *a, int *lda, s *e, s *tau, s *w, int *ldw) +void slatrs(char *uplo, char *trans, char *diag, char *normin, int *n, s *a, int *lda, s *x, s *scale, s *cnorm, int *info) +void slatrz(int *m, int *n, int *l, s *a, int *lda, s *tau, s *work) +void slauu2(char *uplo, int *n, s *a, int *lda, int *info) +void slauum(char *uplo, int *n, s *a, int *lda, int *info) +void sopgtr(char *uplo, int *n, s *ap, s *tau, s *q, int *ldq, s *work, int *info) +void sopmtr(char *side, char *uplo, char *trans, int *m, int *n, s *ap, s *tau, s *c, int *ldc, s *work, int *info) +void sorbdb(char *trans, char *signs, int *m, int *p, int *q, s *x11, int *ldx11, s *x12, int *ldx12, s *x21, int *ldx21, s *x22, int *ldx22, s *theta, s *phi, s *taup1, s *taup2, s *tauq1, s *tauq2, s *work, int *lwork, int *info) +void sorcsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, char *signs, int *m, int *p, int *q, s *x11, int *ldx11, s *x12, int *ldx12, s *x21, int *ldx21, s *x22, int *ldx22, s *theta, s *u1, int *ldu1, s *u2, int *ldu2, s *v1t, int *ldv1t, s *v2t, int *ldv2t, s *work, int *lwork, int *iwork, int *info) +void sorg2l(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *info) +void sorg2r(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *info) +void sorgbr(char *vect, int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sorghr(int *n, int *ilo, int *ihi, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sorgl2(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *info) +void sorglq(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sorgql(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sorgqr(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sorgr2(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *info) +void sorgrq(int *m, int *n, int *k, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sorgtr(char *uplo, int *n, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void sorm2l(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *info) +void sorm2r(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *info) +void sormbr(char *vect, char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void sormhr(char *side, char *trans, int *m, int *n, int *ilo, int *ihi, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void sorml2(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *info) +void sormlq(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void sormql(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void sormqr(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void sormr2(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *info) +void sormr3(char *side, char *trans, int *m, int *n, int *k, int *l, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *info) +void sormrq(char *side, char *trans, int *m, int *n, int *k, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void sormrz(char *side, char *trans, int *m, int *n, int *k, int *l, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void sormtr(char *side, char *uplo, char *trans, int *m, int *n, s *a, int *lda, s *tau, s *c, int *ldc, s *work, int *lwork, int *info) +void spbcon(char *uplo, int *n, int *kd, s *ab, int *ldab, s *anorm, s *rcond, s *work, int *iwork, int *info) +void spbequ(char *uplo, int *n, int *kd, s *ab, int *ldab, s *s, s *scond, s *amax, int *info) +void spbrfs(char *uplo, int *n, int *kd, int *nrhs, s *ab, int *ldab, s *afb, int *ldafb, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void spbstf(char *uplo, int *n, int *kd, s *ab, int *ldab, int *info) +void spbsv(char *uplo, int *n, int *kd, int *nrhs, s *ab, int *ldab, s *b, int *ldb, int *info) +void spbsvx(char *fact, char *uplo, int *n, int *kd, int *nrhs, s *ab, int *ldab, s *afb, int *ldafb, char *equed, s *s, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *iwork, int *info) +void spbtf2(char *uplo, int *n, int *kd, s *ab, int *ldab, int *info) +void spbtrf(char *uplo, int *n, int *kd, s *ab, int *ldab, int *info) +void spbtrs(char *uplo, int *n, int *kd, int *nrhs, s *ab, int *ldab, s *b, int *ldb, int *info) +void spftrf(char *transr, char *uplo, int *n, s *a, int *info) +void spftri(char *transr, char *uplo, int *n, s *a, int *info) +void spftrs(char *transr, char *uplo, int *n, int *nrhs, s *a, s *b, int *ldb, int *info) +void spocon(char *uplo, int *n, s *a, int *lda, s *anorm, s *rcond, s *work, int *iwork, int *info) +void spoequ(int *n, s *a, int *lda, s *s, s *scond, s *amax, int *info) +void spoequb(int *n, s *a, int *lda, s *s, s *scond, s *amax, int *info) +void sporfs(char *uplo, int *n, int *nrhs, s *a, int *lda, s *af, int *ldaf, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void sposv(char *uplo, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, int *info) +void sposvx(char *fact, char *uplo, int *n, int *nrhs, s *a, int *lda, s *af, int *ldaf, char *equed, s *s, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *iwork, int *info) +void spotf2(char *uplo, int *n, s *a, int *lda, int *info) +void spotrf(char *uplo, int *n, s *a, int *lda, int *info) +void spotri(char *uplo, int *n, s *a, int *lda, int *info) +void spotrs(char *uplo, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, int *info) +void sppcon(char *uplo, int *n, s *ap, s *anorm, s *rcond, s *work, int *iwork, int *info) +void sppequ(char *uplo, int *n, s *ap, s *s, s *scond, s *amax, int *info) +void spprfs(char *uplo, int *n, int *nrhs, s *ap, s *afp, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void sppsv(char *uplo, int *n, int *nrhs, s *ap, s *b, int *ldb, int *info) +void sppsvx(char *fact, char *uplo, int *n, int *nrhs, s *ap, s *afp, char *equed, s *s, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *iwork, int *info) +void spptrf(char *uplo, int *n, s *ap, int *info) +void spptri(char *uplo, int *n, s *ap, int *info) +void spptrs(char *uplo, int *n, int *nrhs, s *ap, s *b, int *ldb, int *info) +void spstf2(char *uplo, int *n, s *a, int *lda, int *piv, int *rank, s *tol, s *work, int *info) +void spstrf(char *uplo, int *n, s *a, int *lda, int *piv, int *rank, s *tol, s *work, int *info) +void sptcon(int *n, s *d, s *e, s *anorm, s *rcond, s *work, int *info) +void spteqr(char *compz, int *n, s *d, s *e, s *z, int *ldz, s *work, int *info) +void sptrfs(int *n, int *nrhs, s *d, s *e, s *df, s *ef, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *info) +void sptsv(int *n, int *nrhs, s *d, s *e, s *b, int *ldb, int *info) +void sptsvx(char *fact, int *n, int *nrhs, s *d, s *e, s *df, s *ef, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *info) +void spttrf(int *n, s *d, s *e, int *info) +void spttrs(int *n, int *nrhs, s *d, s *e, s *b, int *ldb, int *info) +void sptts2(int *n, int *nrhs, s *d, s *e, s *b, int *ldb) +void srscl(int *n, s *sa, s *sx, int *incx) +void ssbev(char *jobz, char *uplo, int *n, int *kd, s *ab, int *ldab, s *w, s *z, int *ldz, s *work, int *info) +void ssbevd(char *jobz, char *uplo, int *n, int *kd, s *ab, int *ldab, s *w, s *z, int *ldz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void ssbevx(char *jobz, char *range, char *uplo, int *n, int *kd, s *ab, int *ldab, s *q, int *ldq, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, s *work, int *iwork, int *ifail, int *info) +void ssbgst(char *vect, char *uplo, int *n, int *ka, int *kb, s *ab, int *ldab, s *bb, int *ldbb, s *x, int *ldx, s *work, int *info) +void ssbgv(char *jobz, char *uplo, int *n, int *ka, int *kb, s *ab, int *ldab, s *bb, int *ldbb, s *w, s *z, int *ldz, s *work, int *info) +void ssbgvd(char *jobz, char *uplo, int *n, int *ka, int *kb, s *ab, int *ldab, s *bb, int *ldbb, s *w, s *z, int *ldz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void ssbgvx(char *jobz, char *range, char *uplo, int *n, int *ka, int *kb, s *ab, int *ldab, s *bb, int *ldbb, s *q, int *ldq, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, s *work, int *iwork, int *ifail, int *info) +void ssbtrd(char *vect, char *uplo, int *n, int *kd, s *ab, int *ldab, s *d, s *e, s *q, int *ldq, s *work, int *info) +void ssfrk(char *transr, char *uplo, char *trans, int *n, int *k, s *alpha, s *a, int *lda, s *beta, s *c) +void sspcon(char *uplo, int *n, s *ap, int *ipiv, s *anorm, s *rcond, s *work, int *iwork, int *info) +void sspev(char *jobz, char *uplo, int *n, s *ap, s *w, s *z, int *ldz, s *work, int *info) +void sspevd(char *jobz, char *uplo, int *n, s *ap, s *w, s *z, int *ldz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void sspevx(char *jobz, char *range, char *uplo, int *n, s *ap, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, s *work, int *iwork, int *ifail, int *info) +void sspgst(int *itype, char *uplo, int *n, s *ap, s *bp, int *info) +void sspgv(int *itype, char *jobz, char *uplo, int *n, s *ap, s *bp, s *w, s *z, int *ldz, s *work, int *info) +void sspgvd(int *itype, char *jobz, char *uplo, int *n, s *ap, s *bp, s *w, s *z, int *ldz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void sspgvx(int *itype, char *jobz, char *range, char *uplo, int *n, s *ap, s *bp, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, s *work, int *iwork, int *ifail, int *info) +void ssprfs(char *uplo, int *n, int *nrhs, s *ap, s *afp, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void sspsv(char *uplo, int *n, int *nrhs, s *ap, int *ipiv, s *b, int *ldb, int *info) +void sspsvx(char *fact, char *uplo, int *n, int *nrhs, s *ap, s *afp, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *iwork, int *info) +void ssptrd(char *uplo, int *n, s *ap, s *d, s *e, s *tau, int *info) +void ssptrf(char *uplo, int *n, s *ap, int *ipiv, int *info) +void ssptri(char *uplo, int *n, s *ap, int *ipiv, s *work, int *info) +void ssptrs(char *uplo, int *n, int *nrhs, s *ap, int *ipiv, s *b, int *ldb, int *info) +void sstebz(char *range, char *order, int *n, s *vl, s *vu, int *il, int *iu, s *abstol, s *d, s *e, int *m, int *nsplit, s *w, int *iblock, int *isplit, s *work, int *iwork, int *info) +void sstedc(char *compz, int *n, s *d, s *e, s *z, int *ldz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void sstegr(char *jobz, char *range, int *n, s *d, s *e, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, int *isuppz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void sstein(int *n, s *d, s *e, int *m, s *w, int *iblock, int *isplit, s *z, int *ldz, s *work, int *iwork, int *ifail, int *info) +void sstemr(char *jobz, char *range, int *n, s *d, s *e, s *vl, s *vu, int *il, int *iu, int *m, s *w, s *z, int *ldz, int *nzc, int *isuppz, bint *tryrac, s *work, int *lwork, int *iwork, int *liwork, int *info) +void ssteqr(char *compz, int *n, s *d, s *e, s *z, int *ldz, s *work, int *info) +void ssterf(int *n, s *d, s *e, int *info) +void sstev(char *jobz, int *n, s *d, s *e, s *z, int *ldz, s *work, int *info) +void sstevd(char *jobz, int *n, s *d, s *e, s *z, int *ldz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void sstevr(char *jobz, char *range, int *n, s *d, s *e, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, int *isuppz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void sstevx(char *jobz, char *range, int *n, s *d, s *e, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, s *work, int *iwork, int *ifail, int *info) +void ssycon(char *uplo, int *n, s *a, int *lda, int *ipiv, s *anorm, s *rcond, s *work, int *iwork, int *info) +void ssyconv(char *uplo, char *way, int *n, s *a, int *lda, int *ipiv, s *work, int *info) +void ssyequb(char *uplo, int *n, s *a, int *lda, s *s, s *scond, s *amax, s *work, int *info) +void ssyev(char *jobz, char *uplo, int *n, s *a, int *lda, s *w, s *work, int *lwork, int *info) +void ssyevd(char *jobz, char *uplo, int *n, s *a, int *lda, s *w, s *work, int *lwork, int *iwork, int *liwork, int *info) +void ssyevr(char *jobz, char *range, char *uplo, int *n, s *a, int *lda, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, int *isuppz, s *work, int *lwork, int *iwork, int *liwork, int *info) +void ssyevx(char *jobz, char *range, char *uplo, int *n, s *a, int *lda, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, s *work, int *lwork, int *iwork, int *ifail, int *info) +void ssygs2(int *itype, char *uplo, int *n, s *a, int *lda, s *b, int *ldb, int *info) +void ssygst(int *itype, char *uplo, int *n, s *a, int *lda, s *b, int *ldb, int *info) +void ssygv(int *itype, char *jobz, char *uplo, int *n, s *a, int *lda, s *b, int *ldb, s *w, s *work, int *lwork, int *info) +void ssygvd(int *itype, char *jobz, char *uplo, int *n, s *a, int *lda, s *b, int *ldb, s *w, s *work, int *lwork, int *iwork, int *liwork, int *info) +void ssygvx(int *itype, char *jobz, char *range, char *uplo, int *n, s *a, int *lda, s *b, int *ldb, s *vl, s *vu, int *il, int *iu, s *abstol, int *m, s *w, s *z, int *ldz, s *work, int *lwork, int *iwork, int *ifail, int *info) +void ssyrfs(char *uplo, int *n, int *nrhs, s *a, int *lda, s *af, int *ldaf, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void ssysv(char *uplo, int *n, int *nrhs, s *a, int *lda, int *ipiv, s *b, int *ldb, s *work, int *lwork, int *info) +void ssysvx(char *fact, char *uplo, int *n, int *nrhs, s *a, int *lda, s *af, int *ldaf, int *ipiv, s *b, int *ldb, s *x, int *ldx, s *rcond, s *ferr, s *berr, s *work, int *lwork, int *iwork, int *info) +void ssyswapr(char *uplo, int *n, s *a, int *lda, int *i1, int *i2) +void ssytd2(char *uplo, int *n, s *a, int *lda, s *d, s *e, s *tau, int *info) +void ssytf2(char *uplo, int *n, s *a, int *lda, int *ipiv, int *info) +void ssytrd(char *uplo, int *n, s *a, int *lda, s *d, s *e, s *tau, s *work, int *lwork, int *info) +void ssytrf(char *uplo, int *n, s *a, int *lda, int *ipiv, s *work, int *lwork, int *info) +void ssytri(char *uplo, int *n, s *a, int *lda, int *ipiv, s *work, int *info) +void ssytri2(char *uplo, int *n, s *a, int *lda, int *ipiv, s *work, int *lwork, int *info) +void ssytri2x(char *uplo, int *n, s *a, int *lda, int *ipiv, s *work, int *nb, int *info) +void ssytrs(char *uplo, int *n, int *nrhs, s *a, int *lda, int *ipiv, s *b, int *ldb, int *info) +void ssytrs2(char *uplo, int *n, int *nrhs, s *a, int *lda, int *ipiv, s *b, int *ldb, s *work, int *info) +void stbcon(char *norm, char *uplo, char *diag, int *n, int *kd, s *ab, int *ldab, s *rcond, s *work, int *iwork, int *info) +void stbrfs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, s *ab, int *ldab, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void stbtrs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, s *ab, int *ldab, s *b, int *ldb, int *info) +void stfsm(char *transr, char *side, char *uplo, char *trans, char *diag, int *m, int *n, s *alpha, s *a, s *b, int *ldb) +void stftri(char *transr, char *uplo, char *diag, int *n, s *a, int *info) +void stfttp(char *transr, char *uplo, int *n, s *arf, s *ap, int *info) +void stfttr(char *transr, char *uplo, int *n, s *arf, s *a, int *lda, int *info) +void stgevc(char *side, char *howmny, bint *select, int *n, s *s, int *lds, s *p, int *ldp, s *vl, int *ldvl, s *vr, int *ldvr, int *mm, int *m, s *work, int *info) +void stgex2(bint *wantq, bint *wantz, int *n, s *a, int *lda, s *b, int *ldb, s *q, int *ldq, s *z, int *ldz, int *j1, int *n1, int *n2, s *work, int *lwork, int *info) +void stgexc(bint *wantq, bint *wantz, int *n, s *a, int *lda, s *b, int *ldb, s *q, int *ldq, s *z, int *ldz, int *ifst, int *ilst, s *work, int *lwork, int *info) +void stgsen(int *ijob, bint *wantq, bint *wantz, bint *select, int *n, s *a, int *lda, s *b, int *ldb, s *alphar, s *alphai, s *beta, s *q, int *ldq, s *z, int *ldz, int *m, s *pl, s *pr, s *dif, s *work, int *lwork, int *iwork, int *liwork, int *info) +void stgsja(char *jobu, char *jobv, char *jobq, int *m, int *p, int *n, int *k, int *l, s *a, int *lda, s *b, int *ldb, s *tola, s *tolb, s *alpha, s *beta, s *u, int *ldu, s *v, int *ldv, s *q, int *ldq, s *work, int *ncycle, int *info) +void stgsna(char *job, char *howmny, bint *select, int *n, s *a, int *lda, s *b, int *ldb, s *vl, int *ldvl, s *vr, int *ldvr, s *s, s *dif, int *mm, int *m, s *work, int *lwork, int *iwork, int *info) +void stgsy2(char *trans, int *ijob, int *m, int *n, s *a, int *lda, s *b, int *ldb, s *c, int *ldc, s *d, int *ldd, s *e, int *lde, s *f, int *ldf, s *scale, s *rdsum, s *rdscal, int *iwork, int *pq, int *info) +void stgsyl(char *trans, int *ijob, int *m, int *n, s *a, int *lda, s *b, int *ldb, s *c, int *ldc, s *d, int *ldd, s *e, int *lde, s *f, int *ldf, s *scale, s *dif, s *work, int *lwork, int *iwork, int *info) +void stpcon(char *norm, char *uplo, char *diag, int *n, s *ap, s *rcond, s *work, int *iwork, int *info) +void stpmqrt(char *side, char *trans, int *m, int *n, int *k, int *l, int *nb, s *v, int *ldv, s *t, int *ldt, s *a, int *lda, s *b, int *ldb, s *work, int *info) +void stpqrt(int *m, int *n, int *l, int *nb, s *a, int *lda, s *b, int *ldb, s *t, int *ldt, s *work, int *info) +void stpqrt2(int *m, int *n, int *l, s *a, int *lda, s *b, int *ldb, s *t, int *ldt, int *info) +void stprfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, s *v, int *ldv, s *t, int *ldt, s *a, int *lda, s *b, int *ldb, s *work, int *ldwork) +void stprfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, s *ap, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void stptri(char *uplo, char *diag, int *n, s *ap, int *info) +void stptrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, s *ap, s *b, int *ldb, int *info) +void stpttf(char *transr, char *uplo, int *n, s *ap, s *arf, int *info) +void stpttr(char *uplo, int *n, s *ap, s *a, int *lda, int *info) +void strcon(char *norm, char *uplo, char *diag, int *n, s *a, int *lda, s *rcond, s *work, int *iwork, int *info) +void strevc(char *side, char *howmny, bint *select, int *n, s *t, int *ldt, s *vl, int *ldvl, s *vr, int *ldvr, int *mm, int *m, s *work, int *info) +void strexc(char *compq, int *n, s *t, int *ldt, s *q, int *ldq, int *ifst, int *ilst, s *work, int *info) +void strrfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, s *x, int *ldx, s *ferr, s *berr, s *work, int *iwork, int *info) +void strsen(char *job, char *compq, bint *select, int *n, s *t, int *ldt, s *q, int *ldq, s *wr, s *wi, int *m, s *s, s *sep, s *work, int *lwork, int *iwork, int *liwork, int *info) +void strsna(char *job, char *howmny, bint *select, int *n, s *t, int *ldt, s *vl, int *ldvl, s *vr, int *ldvr, s *s, s *sep, int *mm, int *m, s *work, int *ldwork, int *iwork, int *info) +void strsyl(char *trana, char *tranb, int *isgn, int *m, int *n, s *a, int *lda, s *b, int *ldb, s *c, int *ldc, s *scale, int *info) +void strti2(char *uplo, char *diag, int *n, s *a, int *lda, int *info) +void strtri(char *uplo, char *diag, int *n, s *a, int *lda, int *info) +void strtrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, s *a, int *lda, s *b, int *ldb, int *info) +void strttf(char *transr, char *uplo, int *n, s *a, int *lda, s *arf, int *info) +void strttp(char *uplo, int *n, s *a, int *lda, s *ap, int *info) +void stzrzf(int *m, int *n, s *a, int *lda, s *tau, s *work, int *lwork, int *info) +void xerbla_array(char *srname_array, int *srname_len, int *info) +void zbbcsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, int *m, int *p, int *q, d *theta, d *phi, z *u1, int *ldu1, z *u2, int *ldu2, z *v1t, int *ldv1t, z *v2t, int *ldv2t, d *b11d, d *b11e, d *b12d, d *b12e, d *b21d, d *b21e, d *b22d, d *b22e, d *rwork, int *lrwork, int *info) +void zbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, d *d, d *e, z *vt, int *ldvt, z *u, int *ldu, z *c, int *ldc, d *rwork, int *info) +void zcgesv(int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, z *x, int *ldx, z *work, c *swork, d *rwork, int *iter, int *info) +void zcposv(char *uplo, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, z *x, int *ldx, z *work, c *swork, d *rwork, int *iter, int *info) +void zdrscl(int *n, d *sa, z *sx, int *incx) +void zgbbrd(char *vect, int *m, int *n, int *ncc, int *kl, int *ku, z *ab, int *ldab, d *d, d *e, z *q, int *ldq, z *pt, int *ldpt, z *c, int *ldc, z *work, d *rwork, int *info) +void zgbcon(char *norm, int *n, int *kl, int *ku, z *ab, int *ldab, int *ipiv, d *anorm, d *rcond, z *work, d *rwork, int *info) +void zgbequ(int *m, int *n, int *kl, int *ku, z *ab, int *ldab, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void zgbequb(int *m, int *n, int *kl, int *ku, z *ab, int *ldab, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void zgbrfs(char *trans, int *n, int *kl, int *ku, int *nrhs, z *ab, int *ldab, z *afb, int *ldafb, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zgbsv(int *n, int *kl, int *ku, int *nrhs, z *ab, int *ldab, int *ipiv, z *b, int *ldb, int *info) +void zgbsvx(char *fact, char *trans, int *n, int *kl, int *ku, int *nrhs, z *ab, int *ldab, z *afb, int *ldafb, int *ipiv, char *equed, d *r, d *c, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zgbtf2(int *m, int *n, int *kl, int *ku, z *ab, int *ldab, int *ipiv, int *info) +void zgbtrf(int *m, int *n, int *kl, int *ku, z *ab, int *ldab, int *ipiv, int *info) +void zgbtrs(char *trans, int *n, int *kl, int *ku, int *nrhs, z *ab, int *ldab, int *ipiv, z *b, int *ldb, int *info) +void zgebak(char *job, char *side, int *n, int *ilo, int *ihi, d *scale, int *m, z *v, int *ldv, int *info) +void zgebal(char *job, int *n, z *a, int *lda, int *ilo, int *ihi, d *scale, int *info) +void zgebd2(int *m, int *n, z *a, int *lda, d *d, d *e, z *tauq, z *taup, z *work, int *info) +void zgebrd(int *m, int *n, z *a, int *lda, d *d, d *e, z *tauq, z *taup, z *work, int *lwork, int *info) +void zgecon(char *norm, int *n, z *a, int *lda, d *anorm, d *rcond, z *work, d *rwork, int *info) +void zgeequ(int *m, int *n, z *a, int *lda, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void zgeequb(int *m, int *n, z *a, int *lda, d *r, d *c, d *rowcnd, d *colcnd, d *amax, int *info) +void zgees(char *jobvs, char *sort, zselect1 *select, int *n, z *a, int *lda, int *sdim, z *w, z *vs, int *ldvs, z *work, int *lwork, d *rwork, bint *bwork, int *info) +void zgeesx(char *jobvs, char *sort, zselect1 *select, char *sense, int *n, z *a, int *lda, int *sdim, z *w, z *vs, int *ldvs, d *rconde, d *rcondv, z *work, int *lwork, d *rwork, bint *bwork, int *info) +void zgeev(char *jobvl, char *jobvr, int *n, z *a, int *lda, z *w, z *vl, int *ldvl, z *vr, int *ldvr, z *work, int *lwork, d *rwork, int *info) +void zgeevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, z *a, int *lda, z *w, z *vl, int *ldvl, z *vr, int *ldvr, int *ilo, int *ihi, d *scale, d *abnrm, d *rconde, d *rcondv, z *work, int *lwork, d *rwork, int *info) +void zgehd2(int *n, int *ilo, int *ihi, z *a, int *lda, z *tau, z *work, int *info) +void zgehrd(int *n, int *ilo, int *ihi, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zgelq2(int *m, int *n, z *a, int *lda, z *tau, z *work, int *info) +void zgelqf(int *m, int *n, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zgels(char *trans, int *m, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, z *work, int *lwork, int *info) +void zgelsd(int *m, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, d *s, d *rcond, int *rank, z *work, int *lwork, d *rwork, int *iwork, int *info) +void zgelss(int *m, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, d *s, d *rcond, int *rank, z *work, int *lwork, d *rwork, int *info) +void zgelsy(int *m, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, int *jpvt, d *rcond, int *rank, z *work, int *lwork, d *rwork, int *info) +void zgemqrt(char *side, char *trans, int *m, int *n, int *k, int *nb, z *v, int *ldv, z *t, int *ldt, z *c, int *ldc, z *work, int *info) +void zgeql2(int *m, int *n, z *a, int *lda, z *tau, z *work, int *info) +void zgeqlf(int *m, int *n, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zgeqp3(int *m, int *n, z *a, int *lda, int *jpvt, z *tau, z *work, int *lwork, d *rwork, int *info) +void zgeqr2(int *m, int *n, z *a, int *lda, z *tau, z *work, int *info) +void zgeqr2p(int *m, int *n, z *a, int *lda, z *tau, z *work, int *info) +void zgeqrf(int *m, int *n, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zgeqrfp(int *m, int *n, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zgeqrt(int *m, int *n, int *nb, z *a, int *lda, z *t, int *ldt, z *work, int *info) +void zgeqrt2(int *m, int *n, z *a, int *lda, z *t, int *ldt, int *info) +void zgeqrt3(int *m, int *n, z *a, int *lda, z *t, int *ldt, int *info) +void zgerfs(char *trans, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zgerq2(int *m, int *n, z *a, int *lda, z *tau, z *work, int *info) +void zgerqf(int *m, int *n, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zgesc2(int *n, z *a, int *lda, z *rhs, int *ipiv, int *jpiv, d *scale) +void zgesdd(char *jobz, int *m, int *n, z *a, int *lda, d *s, z *u, int *ldu, z *vt, int *ldvt, z *work, int *lwork, d *rwork, int *iwork, int *info) +void zgesv(int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, int *info) +void zgesvd(char *jobu, char *jobvt, int *m, int *n, z *a, int *lda, d *s, z *u, int *ldu, z *vt, int *ldvt, z *work, int *lwork, d *rwork, int *info) +void zgesvx(char *fact, char *trans, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, int *ipiv, char *equed, d *r, d *c, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zgetc2(int *n, z *a, int *lda, int *ipiv, int *jpiv, int *info) +void zgetf2(int *m, int *n, z *a, int *lda, int *ipiv, int *info) +void zgetrf(int *m, int *n, z *a, int *lda, int *ipiv, int *info) +void zgetri(int *n, z *a, int *lda, int *ipiv, z *work, int *lwork, int *info) +void zgetrs(char *trans, int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, int *info) +void zggbak(char *job, char *side, int *n, int *ilo, int *ihi, d *lscale, d *rscale, int *m, z *v, int *ldv, int *info) +void zggbal(char *job, int *n, z *a, int *lda, z *b, int *ldb, int *ilo, int *ihi, d *lscale, d *rscale, d *work, int *info) +void zgges(char *jobvsl, char *jobvsr, char *sort, zselect2 *selctg, int *n, z *a, int *lda, z *b, int *ldb, int *sdim, z *alpha, z *beta, z *vsl, int *ldvsl, z *vsr, int *ldvsr, z *work, int *lwork, d *rwork, bint *bwork, int *info) +void zggesx(char *jobvsl, char *jobvsr, char *sort, zselect2 *selctg, char *sense, int *n, z *a, int *lda, z *b, int *ldb, int *sdim, z *alpha, z *beta, z *vsl, int *ldvsl, z *vsr, int *ldvsr, d *rconde, d *rcondv, z *work, int *lwork, d *rwork, int *iwork, int *liwork, bint *bwork, int *info) +void zggev(char *jobvl, char *jobvr, int *n, z *a, int *lda, z *b, int *ldb, z *alpha, z *beta, z *vl, int *ldvl, z *vr, int *ldvr, z *work, int *lwork, d *rwork, int *info) +void zggevx(char *balanc, char *jobvl, char *jobvr, char *sense, int *n, z *a, int *lda, z *b, int *ldb, z *alpha, z *beta, z *vl, int *ldvl, z *vr, int *ldvr, int *ilo, int *ihi, d *lscale, d *rscale, d *abnrm, d *bbnrm, d *rconde, d *rcondv, z *work, int *lwork, d *rwork, int *iwork, bint *bwork, int *info) +void zggglm(int *n, int *m, int *p, z *a, int *lda, z *b, int *ldb, z *d, z *x, z *y, z *work, int *lwork, int *info) +void zgghrd(char *compq, char *compz, int *n, int *ilo, int *ihi, z *a, int *lda, z *b, int *ldb, z *q, int *ldq, z *z, int *ldz, int *info) +void zgglse(int *m, int *n, int *p, z *a, int *lda, z *b, int *ldb, z *c, z *d, z *x, z *work, int *lwork, int *info) +void zggqrf(int *n, int *m, int *p, z *a, int *lda, z *taua, z *b, int *ldb, z *taub, z *work, int *lwork, int *info) +void zggrqf(int *m, int *p, int *n, z *a, int *lda, z *taua, z *b, int *ldb, z *taub, z *work, int *lwork, int *info) +void zgtcon(char *norm, int *n, z *dl, z *d, z *du, z *du2, int *ipiv, d *anorm, d *rcond, z *work, int *info) +void zgtrfs(char *trans, int *n, int *nrhs, z *dl, z *d, z *du, z *dlf, z *df, z *duf, z *du2, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zgtsv(int *n, int *nrhs, z *dl, z *d, z *du, z *b, int *ldb, int *info) +void zgtsvx(char *fact, char *trans, int *n, int *nrhs, z *dl, z *d, z *du, z *dlf, z *df, z *duf, z *du2, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zgttrf(int *n, z *dl, z *d, z *du, z *du2, int *ipiv, int *info) +void zgttrs(char *trans, int *n, int *nrhs, z *dl, z *d, z *du, z *du2, int *ipiv, z *b, int *ldb, int *info) +void zgtts2(int *itrans, int *n, int *nrhs, z *dl, z *d, z *du, z *du2, int *ipiv, z *b, int *ldb) +void zhbev(char *jobz, char *uplo, int *n, int *kd, z *ab, int *ldab, d *w, z *z, int *ldz, z *work, d *rwork, int *info) +void zhbevd(char *jobz, char *uplo, int *n, int *kd, z *ab, int *ldab, d *w, z *z, int *ldz, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zhbevx(char *jobz, char *range, char *uplo, int *n, int *kd, z *ab, int *ldab, z *q, int *ldq, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, z *work, d *rwork, int *iwork, int *ifail, int *info) +void zhbgst(char *vect, char *uplo, int *n, int *ka, int *kb, z *ab, int *ldab, z *bb, int *ldbb, z *x, int *ldx, z *work, d *rwork, int *info) +void zhbgv(char *jobz, char *uplo, int *n, int *ka, int *kb, z *ab, int *ldab, z *bb, int *ldbb, d *w, z *z, int *ldz, z *work, d *rwork, int *info) +void zhbgvd(char *jobz, char *uplo, int *n, int *ka, int *kb, z *ab, int *ldab, z *bb, int *ldbb, d *w, z *z, int *ldz, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zhbgvx(char *jobz, char *range, char *uplo, int *n, int *ka, int *kb, z *ab, int *ldab, z *bb, int *ldbb, z *q, int *ldq, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, z *work, d *rwork, int *iwork, int *ifail, int *info) +void zhbtrd(char *vect, char *uplo, int *n, int *kd, z *ab, int *ldab, d *d, d *e, z *q, int *ldq, z *work, int *info) +void zhecon(char *uplo, int *n, z *a, int *lda, int *ipiv, d *anorm, d *rcond, z *work, int *info) +void zheequb(char *uplo, int *n, z *a, int *lda, d *s, d *scond, d *amax, z *work, int *info) +void zheev(char *jobz, char *uplo, int *n, z *a, int *lda, d *w, z *work, int *lwork, d *rwork, int *info) +void zheevd(char *jobz, char *uplo, int *n, z *a, int *lda, d *w, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zheevr(char *jobz, char *range, char *uplo, int *n, z *a, int *lda, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, int *isuppz, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zheevx(char *jobz, char *range, char *uplo, int *n, z *a, int *lda, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, z *work, int *lwork, d *rwork, int *iwork, int *ifail, int *info) +void zhegs2(int *itype, char *uplo, int *n, z *a, int *lda, z *b, int *ldb, int *info) +void zhegst(int *itype, char *uplo, int *n, z *a, int *lda, z *b, int *ldb, int *info) +void zhegv(int *itype, char *jobz, char *uplo, int *n, z *a, int *lda, z *b, int *ldb, d *w, z *work, int *lwork, d *rwork, int *info) +void zhegvd(int *itype, char *jobz, char *uplo, int *n, z *a, int *lda, z *b, int *ldb, d *w, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zhegvx(int *itype, char *jobz, char *range, char *uplo, int *n, z *a, int *lda, z *b, int *ldb, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, z *work, int *lwork, d *rwork, int *iwork, int *ifail, int *info) +void zherfs(char *uplo, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zhesv(char *uplo, int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, z *work, int *lwork, int *info) +void zhesvx(char *fact, char *uplo, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, int *lwork, d *rwork, int *info) +void zheswapr(char *uplo, int *n, z *a, int *lda, int *i1, int *i2) +void zhetd2(char *uplo, int *n, z *a, int *lda, d *d, d *e, z *tau, int *info) +void zhetf2(char *uplo, int *n, z *a, int *lda, int *ipiv, int *info) +void zhetrd(char *uplo, int *n, z *a, int *lda, d *d, d *e, z *tau, z *work, int *lwork, int *info) +void zhetrf(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *lwork, int *info) +void zhetri(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *info) +void zhetri2(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *lwork, int *info) +void zhetri2x(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *nb, int *info) +void zhetrs(char *uplo, int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, int *info) +void zhetrs2(char *uplo, int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, z *work, int *info) +void zhfrk(char *transr, char *uplo, char *trans, int *n, int *k, d *alpha, z *a, int *lda, d *beta, z *c) +void zhgeqz(char *job, char *compq, char *compz, int *n, int *ilo, int *ihi, z *h, int *ldh, z *t, int *ldt, z *alpha, z *beta, z *q, int *ldq, z *z, int *ldz, z *work, int *lwork, d *rwork, int *info) +void zhpcon(char *uplo, int *n, z *ap, int *ipiv, d *anorm, d *rcond, z *work, int *info) +void zhpev(char *jobz, char *uplo, int *n, z *ap, d *w, z *z, int *ldz, z *work, d *rwork, int *info) +void zhpevd(char *jobz, char *uplo, int *n, z *ap, d *w, z *z, int *ldz, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zhpevx(char *jobz, char *range, char *uplo, int *n, z *ap, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, z *work, d *rwork, int *iwork, int *ifail, int *info) +void zhpgst(int *itype, char *uplo, int *n, z *ap, z *bp, int *info) +void zhpgv(int *itype, char *jobz, char *uplo, int *n, z *ap, z *bp, d *w, z *z, int *ldz, z *work, d *rwork, int *info) +void zhpgvd(int *itype, char *jobz, char *uplo, int *n, z *ap, z *bp, d *w, z *z, int *ldz, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zhpgvx(int *itype, char *jobz, char *range, char *uplo, int *n, z *ap, z *bp, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, z *work, d *rwork, int *iwork, int *ifail, int *info) +void zhprfs(char *uplo, int *n, int *nrhs, z *ap, z *afp, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zhpsv(char *uplo, int *n, int *nrhs, z *ap, int *ipiv, z *b, int *ldb, int *info) +void zhpsvx(char *fact, char *uplo, int *n, int *nrhs, z *ap, z *afp, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zhptrd(char *uplo, int *n, z *ap, d *d, d *e, z *tau, int *info) +void zhptrf(char *uplo, int *n, z *ap, int *ipiv, int *info) +void zhptri(char *uplo, int *n, z *ap, int *ipiv, z *work, int *info) +void zhptrs(char *uplo, int *n, int *nrhs, z *ap, int *ipiv, z *b, int *ldb, int *info) +void zhsein(char *side, char *eigsrc, char *initv, bint *select, int *n, z *h, int *ldh, z *w, z *vl, int *ldvl, z *vr, int *ldvr, int *mm, int *m, z *work, d *rwork, int *ifaill, int *ifailr, int *info) +void zhseqr(char *job, char *compz, int *n, int *ilo, int *ihi, z *h, int *ldh, z *w, z *z, int *ldz, z *work, int *lwork, int *info) +void zlabrd(int *m, int *n, int *nb, z *a, int *lda, d *d, d *e, z *tauq, z *taup, z *x, int *ldx, z *y, int *ldy) +void zlacgv(int *n, z *x, int *incx) +void zlacn2(int *n, z *v, z *x, d *est, int *kase, int *isave) +void zlacon(int *n, z *v, z *x, d *est, int *kase) +void zlacp2(char *uplo, int *m, int *n, d *a, int *lda, z *b, int *ldb) +void zlacpy(char *uplo, int *m, int *n, z *a, int *lda, z *b, int *ldb) +void zlacrm(int *m, int *n, z *a, int *lda, d *b, int *ldb, z *c, int *ldc, d *rwork) +void zlacrt(int *n, z *cx, int *incx, z *cy, int *incy, z *c, z *s) +z zladiv(z *x, z *y) +void zlaed0(int *qsiz, int *n, d *d, d *e, z *q, int *ldq, z *qstore, int *ldqs, d *rwork, int *iwork, int *info) +void zlaed7(int *n, int *cutpnt, int *qsiz, int *tlvls, int *curlvl, int *curpbm, d *d, z *q, int *ldq, d *rho, int *indxq, d *qstore, int *qptr, int *prmptr, int *perm, int *givptr, int *givcol, d *givnum, z *work, d *rwork, int *iwork, int *info) +void zlaed8(int *k, int *n, int *qsiz, z *q, int *ldq, d *d, d *rho, int *cutpnt, d *z, d *dlamda, z *q2, int *ldq2, d *w, int *indxp, int *indx, int *indxq, int *perm, int *givptr, int *givcol, d *givnum, int *info) +void zlaein(bint *rightv, bint *noinit, int *n, z *h, int *ldh, z *w, z *v, z *b, int *ldb, d *rwork, d *eps3, d *smlnum, int *info) +void zlaesy(z *a, z *b, z *c, z *rt1, z *rt2, z *evscal, z *cs1, z *sn1) +void zlaev2(z *a, z *b, z *c, d *rt1, d *rt2, d *cs1, z *sn1) +void zlag2c(int *m, int *n, z *a, int *lda, c *sa, int *ldsa, int *info) +void zlags2(bint *upper, d *a1, z *a2, d *a3, d *b1, z *b2, d *b3, d *csu, z *snu, d *csv, z *snv, d *csq, z *snq) +void zlagtm(char *trans, int *n, int *nrhs, d *alpha, z *dl, z *d, z *du, z *x, int *ldx, d *beta, z *b, int *ldb) +void zlahef(char *uplo, int *n, int *nb, int *kb, z *a, int *lda, int *ipiv, z *w, int *ldw, int *info) +void zlahqr(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, z *h, int *ldh, z *w, int *iloz, int *ihiz, z *z, int *ldz, int *info) +void zlahr2(int *n, int *k, int *nb, z *a, int *lda, z *tau, z *t, int *ldt, z *y, int *ldy) +void zlaic1(int *job, int *j, z *x, d *sest, z *w, z *gamma, d *sestpr, z *s, z *c) +void zlals0(int *icompq, int *nl, int *nr, int *sqre, int *nrhs, z *b, int *ldb, z *bx, int *ldbx, int *perm, int *givptr, int *givcol, int *ldgcol, d *givnum, int *ldgnum, d *poles, d *difl, d *difr, d *z, int *k, d *c, d *s, d *rwork, int *info) +void zlalsa(int *icompq, int *smlsiz, int *n, int *nrhs, z *b, int *ldb, z *bx, int *ldbx, d *u, int *ldu, d *vt, int *k, d *difl, d *difr, d *z, d *poles, int *givptr, int *givcol, int *ldgcol, int *perm, d *givnum, d *c, d *s, d *rwork, int *iwork, int *info) +void zlalsd(char *uplo, int *smlsiz, int *n, int *nrhs, d *d, d *e, z *b, int *ldb, d *rcond, int *rank, z *work, d *rwork, int *iwork, int *info) +d zlangb(char *norm, int *n, int *kl, int *ku, z *ab, int *ldab, d *work) +d zlange(char *norm, int *m, int *n, z *a, int *lda, d *work) +d zlangt(char *norm, int *n, z *dl, z *d, z *du) +d zlanhb(char *norm, char *uplo, int *n, int *k, z *ab, int *ldab, d *work) +d zlanhe(char *norm, char *uplo, int *n, z *a, int *lda, d *work) +d zlanhf(char *norm, char *transr, char *uplo, int *n, z *a, d *work) +d zlanhp(char *norm, char *uplo, int *n, z *ap, d *work) +d zlanhs(char *norm, int *n, z *a, int *lda, d *work) +d zlanht(char *norm, int *n, d *d, z *e) +d zlansb(char *norm, char *uplo, int *n, int *k, z *ab, int *ldab, d *work) +d zlansp(char *norm, char *uplo, int *n, z *ap, d *work) +d zlansy(char *norm, char *uplo, int *n, z *a, int *lda, d *work) +d zlantb(char *norm, char *uplo, char *diag, int *n, int *k, z *ab, int *ldab, d *work) +d zlantp(char *norm, char *uplo, char *diag, int *n, z *ap, d *work) +d zlantr(char *norm, char *uplo, char *diag, int *m, int *n, z *a, int *lda, d *work) +void zlapll(int *n, z *x, int *incx, z *y, int *incy, d *ssmin) +void zlapmr(bint *forwrd, int *m, int *n, z *x, int *ldx, int *k) +void zlapmt(bint *forwrd, int *m, int *n, z *x, int *ldx, int *k) +void zlaqgb(int *m, int *n, int *kl, int *ku, z *ab, int *ldab, d *r, d *c, d *rowcnd, d *colcnd, d *amax, char *equed) +void zlaqge(int *m, int *n, z *a, int *lda, d *r, d *c, d *rowcnd, d *colcnd, d *amax, char *equed) +void zlaqhb(char *uplo, int *n, int *kd, z *ab, int *ldab, d *s, d *scond, d *amax, char *equed) +void zlaqhe(char *uplo, int *n, z *a, int *lda, d *s, d *scond, d *amax, char *equed) +void zlaqhp(char *uplo, int *n, z *ap, d *s, d *scond, d *amax, char *equed) +void zlaqp2(int *m, int *n, int *offset, z *a, int *lda, int *jpvt, z *tau, d *vn1, d *vn2, z *work) +void zlaqps(int *m, int *n, int *offset, int *nb, int *kb, z *a, int *lda, int *jpvt, z *tau, d *vn1, d *vn2, z *auxv, z *f, int *ldf) +void zlaqr0(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, z *h, int *ldh, z *w, int *iloz, int *ihiz, z *z, int *ldz, z *work, int *lwork, int *info) +void zlaqr1(int *n, z *h, int *ldh, z *s1, z *s2, z *v) +void zlaqr2(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, z *h, int *ldh, int *iloz, int *ihiz, z *z, int *ldz, int *ns, int *nd, z *sh, z *v, int *ldv, int *nh, z *t, int *ldt, int *nv, z *wv, int *ldwv, z *work, int *lwork) +void zlaqr3(bint *wantt, bint *wantz, int *n, int *ktop, int *kbot, int *nw, z *h, int *ldh, int *iloz, int *ihiz, z *z, int *ldz, int *ns, int *nd, z *sh, z *v, int *ldv, int *nh, z *t, int *ldt, int *nv, z *wv, int *ldwv, z *work, int *lwork) +void zlaqr4(bint *wantt, bint *wantz, int *n, int *ilo, int *ihi, z *h, int *ldh, z *w, int *iloz, int *ihiz, z *z, int *ldz, z *work, int *lwork, int *info) +void zlaqr5(bint *wantt, bint *wantz, int *kacc22, int *n, int *ktop, int *kbot, int *nshfts, z *s, z *h, int *ldh, int *iloz, int *ihiz, z *z, int *ldz, z *v, int *ldv, z *u, int *ldu, int *nv, z *wv, int *ldwv, int *nh, z *wh, int *ldwh) +void zlaqsb(char *uplo, int *n, int *kd, z *ab, int *ldab, d *s, d *scond, d *amax, char *equed) +void zlaqsp(char *uplo, int *n, z *ap, d *s, d *scond, d *amax, char *equed) +void zlaqsy(char *uplo, int *n, z *a, int *lda, d *s, d *scond, d *amax, char *equed) +void zlar1v(int *n, int *b1, int *bn, d *lambda, d *d, d *l, d *ld, d *lld, d *pivmin, d *gaptol, z *z, bint *wantnc, int *negcnt, d *ztz, d *mingma, int *r, int *isuppz, d *nrminv, d *resid, d *rqcorr, d *work) +void zlar2v(int *n, z *x, z *y, z *z, int *incx, d *c, z *s, int *incc) +void zlarcm(int *m, int *n, d *a, int *lda, z *b, int *ldb, z *c, int *ldc, d *rwork) +void zlarf(char *side, int *m, int *n, z *v, int *incv, z *tau, z *c, int *ldc, z *work) +void zlarfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, z *v, int *ldv, z *t, int *ldt, z *c, int *ldc, z *work, int *ldwork) +void zlarfg(int *n, z *alpha, z *x, int *incx, z *tau) +void zlarfgp(int *n, z *alpha, z *x, int *incx, z *tau) +void zlarft(char *direct, char *storev, int *n, int *k, z *v, int *ldv, z *tau, z *t, int *ldt) +void zlarfx(char *side, int *m, int *n, z *v, z *tau, z *c, int *ldc, z *work) +void zlargv(int *n, z *x, int *incx, z *y, int *incy, d *c, int *incc) +void zlarnv(int *idist, int *iseed, int *n, z *x) +void zlarrv(int *n, d *vl, d *vu, d *d, d *l, d *pivmin, int *isplit, int *m, int *dol, int *dou, d *minrgp, d *rtol1, d *rtol2, d *w, d *werr, d *wgap, int *iblock, int *indexw, d *gers, z *z, int *ldz, int *isuppz, d *work, int *iwork, int *info) +void zlartg(z *f, z *g, d *cs, z *sn, z *r) +void zlartv(int *n, z *x, int *incx, z *y, int *incy, d *c, z *s, int *incc) +void zlarz(char *side, int *m, int *n, int *l, z *v, int *incv, z *tau, z *c, int *ldc, z *work) +void zlarzb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, z *v, int *ldv, z *t, int *ldt, z *c, int *ldc, z *work, int *ldwork) +void zlarzt(char *direct, char *storev, int *n, int *k, z *v, int *ldv, z *tau, z *t, int *ldt) +void zlascl(char *type_bn, int *kl, int *ku, d *cfrom, d *cto, int *m, int *n, z *a, int *lda, int *info) +void zlaset(char *uplo, int *m, int *n, z *alpha, z *beta, z *a, int *lda) +void zlasr(char *side, char *pivot, char *direct, int *m, int *n, d *c, d *s, z *a, int *lda) +void zlassq(int *n, z *x, int *incx, d *scale, d *sumsq) +void zlaswp(int *n, z *a, int *lda, int *k1, int *k2, int *ipiv, int *incx) +void zlasyf(char *uplo, int *n, int *nb, int *kb, z *a, int *lda, int *ipiv, z *w, int *ldw, int *info) +void zlat2c(char *uplo, int *n, z *a, int *lda, c *sa, int *ldsa, int *info) +void zlatbs(char *uplo, char *trans, char *diag, char *normin, int *n, int *kd, z *ab, int *ldab, z *x, d *scale, d *cnorm, int *info) +void zlatdf(int *ijob, int *n, z *z, int *ldz, z *rhs, d *rdsum, d *rdscal, int *ipiv, int *jpiv) +void zlatps(char *uplo, char *trans, char *diag, char *normin, int *n, z *ap, z *x, d *scale, d *cnorm, int *info) +void zlatrd(char *uplo, int *n, int *nb, z *a, int *lda, d *e, z *tau, z *w, int *ldw) +void zlatrs(char *uplo, char *trans, char *diag, char *normin, int *n, z *a, int *lda, z *x, d *scale, d *cnorm, int *info) +void zlatrz(int *m, int *n, int *l, z *a, int *lda, z *tau, z *work) +void zlauu2(char *uplo, int *n, z *a, int *lda, int *info) +void zlauum(char *uplo, int *n, z *a, int *lda, int *info) +void zpbcon(char *uplo, int *n, int *kd, z *ab, int *ldab, d *anorm, d *rcond, z *work, d *rwork, int *info) +void zpbequ(char *uplo, int *n, int *kd, z *ab, int *ldab, d *s, d *scond, d *amax, int *info) +void zpbrfs(char *uplo, int *n, int *kd, int *nrhs, z *ab, int *ldab, z *afb, int *ldafb, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zpbstf(char *uplo, int *n, int *kd, z *ab, int *ldab, int *info) +void zpbsv(char *uplo, int *n, int *kd, int *nrhs, z *ab, int *ldab, z *b, int *ldb, int *info) +void zpbsvx(char *fact, char *uplo, int *n, int *kd, int *nrhs, z *ab, int *ldab, z *afb, int *ldafb, char *equed, d *s, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zpbtf2(char *uplo, int *n, int *kd, z *ab, int *ldab, int *info) +void zpbtrf(char *uplo, int *n, int *kd, z *ab, int *ldab, int *info) +void zpbtrs(char *uplo, int *n, int *kd, int *nrhs, z *ab, int *ldab, z *b, int *ldb, int *info) +void zpftrf(char *transr, char *uplo, int *n, z *a, int *info) +void zpftri(char *transr, char *uplo, int *n, z *a, int *info) +void zpftrs(char *transr, char *uplo, int *n, int *nrhs, z *a, z *b, int *ldb, int *info) +void zpocon(char *uplo, int *n, z *a, int *lda, d *anorm, d *rcond, z *work, d *rwork, int *info) +void zpoequ(int *n, z *a, int *lda, d *s, d *scond, d *amax, int *info) +void zpoequb(int *n, z *a, int *lda, d *s, d *scond, d *amax, int *info) +void zporfs(char *uplo, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zposv(char *uplo, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, int *info) +void zposvx(char *fact, char *uplo, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, char *equed, d *s, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zpotf2(char *uplo, int *n, z *a, int *lda, int *info) +void zpotrf(char *uplo, int *n, z *a, int *lda, int *info) +void zpotri(char *uplo, int *n, z *a, int *lda, int *info) +void zpotrs(char *uplo, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, int *info) +void zppcon(char *uplo, int *n, z *ap, d *anorm, d *rcond, z *work, d *rwork, int *info) +void zppequ(char *uplo, int *n, z *ap, d *s, d *scond, d *amax, int *info) +void zpprfs(char *uplo, int *n, int *nrhs, z *ap, z *afp, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zppsv(char *uplo, int *n, int *nrhs, z *ap, z *b, int *ldb, int *info) +void zppsvx(char *fact, char *uplo, int *n, int *nrhs, z *ap, z *afp, char *equed, d *s, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zpptrf(char *uplo, int *n, z *ap, int *info) +void zpptri(char *uplo, int *n, z *ap, int *info) +void zpptrs(char *uplo, int *n, int *nrhs, z *ap, z *b, int *ldb, int *info) +void zpstf2(char *uplo, int *n, z *a, int *lda, int *piv, int *rank, d *tol, d *work, int *info) +void zpstrf(char *uplo, int *n, z *a, int *lda, int *piv, int *rank, d *tol, d *work, int *info) +void zptcon(int *n, d *d, z *e, d *anorm, d *rcond, d *rwork, int *info) +void zpteqr(char *compz, int *n, d *d, d *e, z *z, int *ldz, d *work, int *info) +void zptrfs(char *uplo, int *n, int *nrhs, d *d, z *e, d *df, z *ef, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zptsv(int *n, int *nrhs, d *d, z *e, z *b, int *ldb, int *info) +void zptsvx(char *fact, int *n, int *nrhs, d *d, z *e, d *df, z *ef, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zpttrf(int *n, d *d, z *e, int *info) +void zpttrs(char *uplo, int *n, int *nrhs, d *d, z *e, z *b, int *ldb, int *info) +void zptts2(int *iuplo, int *n, int *nrhs, d *d, z *e, z *b, int *ldb) +void zrot(int *n, z *cx, int *incx, z *cy, int *incy, d *c, z *s) +void zspcon(char *uplo, int *n, z *ap, int *ipiv, d *anorm, d *rcond, z *work, int *info) +void zspmv(char *uplo, int *n, z *alpha, z *ap, z *x, int *incx, z *beta, z *y, int *incy) +void zspr(char *uplo, int *n, z *alpha, z *x, int *incx, z *ap) +void zsprfs(char *uplo, int *n, int *nrhs, z *ap, z *afp, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zspsv(char *uplo, int *n, int *nrhs, z *ap, int *ipiv, z *b, int *ldb, int *info) +void zspsvx(char *fact, char *uplo, int *n, int *nrhs, z *ap, z *afp, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, d *rwork, int *info) +void zsptrf(char *uplo, int *n, z *ap, int *ipiv, int *info) +void zsptri(char *uplo, int *n, z *ap, int *ipiv, z *work, int *info) +void zsptrs(char *uplo, int *n, int *nrhs, z *ap, int *ipiv, z *b, int *ldb, int *info) +void zstedc(char *compz, int *n, d *d, d *e, z *z, int *ldz, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *liwork, int *info) +void zstegr(char *jobz, char *range, int *n, d *d, d *e, d *vl, d *vu, int *il, int *iu, d *abstol, int *m, d *w, z *z, int *ldz, int *isuppz, d *work, int *lwork, int *iwork, int *liwork, int *info) +void zstein(int *n, d *d, d *e, int *m, d *w, int *iblock, int *isplit, z *z, int *ldz, d *work, int *iwork, int *ifail, int *info) +void zstemr(char *jobz, char *range, int *n, d *d, d *e, d *vl, d *vu, int *il, int *iu, int *m, d *w, z *z, int *ldz, int *nzc, int *isuppz, bint *tryrac, d *work, int *lwork, int *iwork, int *liwork, int *info) +void zsteqr(char *compz, int *n, d *d, d *e, z *z, int *ldz, d *work, int *info) +void zsycon(char *uplo, int *n, z *a, int *lda, int *ipiv, d *anorm, d *rcond, z *work, int *info) +void zsyconv(char *uplo, char *way, int *n, z *a, int *lda, int *ipiv, z *work, int *info) +void zsyequb(char *uplo, int *n, z *a, int *lda, d *s, d *scond, d *amax, z *work, int *info) +void zsymv(char *uplo, int *n, z *alpha, z *a, int *lda, z *x, int *incx, z *beta, z *y, int *incy) +void zsyr(char *uplo, int *n, z *alpha, z *x, int *incx, z *a, int *lda) +void zsyrfs(char *uplo, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void zsysv(char *uplo, int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, z *work, int *lwork, int *info) +void zsysvx(char *fact, char *uplo, int *n, int *nrhs, z *a, int *lda, z *af, int *ldaf, int *ipiv, z *b, int *ldb, z *x, int *ldx, d *rcond, d *ferr, d *berr, z *work, int *lwork, d *rwork, int *info) +void zsyswapr(char *uplo, int *n, z *a, int *lda, int *i1, int *i2) +void zsytf2(char *uplo, int *n, z *a, int *lda, int *ipiv, int *info) +void zsytrf(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *lwork, int *info) +void zsytri(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *info) +void zsytri2(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *lwork, int *info) +void zsytri2x(char *uplo, int *n, z *a, int *lda, int *ipiv, z *work, int *nb, int *info) +void zsytrs(char *uplo, int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, int *info) +void zsytrs2(char *uplo, int *n, int *nrhs, z *a, int *lda, int *ipiv, z *b, int *ldb, z *work, int *info) +void ztbcon(char *norm, char *uplo, char *diag, int *n, int *kd, z *ab, int *ldab, d *rcond, z *work, d *rwork, int *info) +void ztbrfs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, z *ab, int *ldab, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void ztbtrs(char *uplo, char *trans, char *diag, int *n, int *kd, int *nrhs, z *ab, int *ldab, z *b, int *ldb, int *info) +void ztfsm(char *transr, char *side, char *uplo, char *trans, char *diag, int *m, int *n, z *alpha, z *a, z *b, int *ldb) +void ztftri(char *transr, char *uplo, char *diag, int *n, z *a, int *info) +void ztfttp(char *transr, char *uplo, int *n, z *arf, z *ap, int *info) +void ztfttr(char *transr, char *uplo, int *n, z *arf, z *a, int *lda, int *info) +void ztgevc(char *side, char *howmny, bint *select, int *n, z *s, int *lds, z *p, int *ldp, z *vl, int *ldvl, z *vr, int *ldvr, int *mm, int *m, z *work, d *rwork, int *info) +void ztgex2(bint *wantq, bint *wantz, int *n, z *a, int *lda, z *b, int *ldb, z *q, int *ldq, z *z, int *ldz, int *j1, int *info) +void ztgexc(bint *wantq, bint *wantz, int *n, z *a, int *lda, z *b, int *ldb, z *q, int *ldq, z *z, int *ldz, int *ifst, int *ilst, int *info) +void ztgsen(int *ijob, bint *wantq, bint *wantz, bint *select, int *n, z *a, int *lda, z *b, int *ldb, z *alpha, z *beta, z *q, int *ldq, z *z, int *ldz, int *m, d *pl, d *pr, d *dif, z *work, int *lwork, int *iwork, int *liwork, int *info) +void ztgsja(char *jobu, char *jobv, char *jobq, int *m, int *p, int *n, int *k, int *l, z *a, int *lda, z *b, int *ldb, d *tola, d *tolb, d *alpha, d *beta, z *u, int *ldu, z *v, int *ldv, z *q, int *ldq, z *work, int *ncycle, int *info) +void ztgsna(char *job, char *howmny, bint *select, int *n, z *a, int *lda, z *b, int *ldb, z *vl, int *ldvl, z *vr, int *ldvr, d *s, d *dif, int *mm, int *m, z *work, int *lwork, int *iwork, int *info) +void ztgsy2(char *trans, int *ijob, int *m, int *n, z *a, int *lda, z *b, int *ldb, z *c, int *ldc, z *d, int *ldd, z *e, int *lde, z *f, int *ldf, d *scale, d *rdsum, d *rdscal, int *info) +void ztgsyl(char *trans, int *ijob, int *m, int *n, z *a, int *lda, z *b, int *ldb, z *c, int *ldc, z *d, int *ldd, z *e, int *lde, z *f, int *ldf, d *scale, d *dif, z *work, int *lwork, int *iwork, int *info) +void ztpcon(char *norm, char *uplo, char *diag, int *n, z *ap, d *rcond, z *work, d *rwork, int *info) +void ztpmqrt(char *side, char *trans, int *m, int *n, int *k, int *l, int *nb, z *v, int *ldv, z *t, int *ldt, z *a, int *lda, z *b, int *ldb, z *work, int *info) +void ztpqrt(int *m, int *n, int *l, int *nb, z *a, int *lda, z *b, int *ldb, z *t, int *ldt, z *work, int *info) +void ztpqrt2(int *m, int *n, int *l, z *a, int *lda, z *b, int *ldb, z *t, int *ldt, int *info) +void ztprfb(char *side, char *trans, char *direct, char *storev, int *m, int *n, int *k, int *l, z *v, int *ldv, z *t, int *ldt, z *a, int *lda, z *b, int *ldb, z *work, int *ldwork) +void ztprfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, z *ap, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void ztptri(char *uplo, char *diag, int *n, z *ap, int *info) +void ztptrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, z *ap, z *b, int *ldb, int *info) +void ztpttf(char *transr, char *uplo, int *n, z *ap, z *arf, int *info) +void ztpttr(char *uplo, int *n, z *ap, z *a, int *lda, int *info) +void ztrcon(char *norm, char *uplo, char *diag, int *n, z *a, int *lda, d *rcond, z *work, d *rwork, int *info) +void ztrevc(char *side, char *howmny, bint *select, int *n, z *t, int *ldt, z *vl, int *ldvl, z *vr, int *ldvr, int *mm, int *m, z *work, d *rwork, int *info) +void ztrexc(char *compq, int *n, z *t, int *ldt, z *q, int *ldq, int *ifst, int *ilst, int *info) +void ztrrfs(char *uplo, char *trans, char *diag, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, z *x, int *ldx, d *ferr, d *berr, z *work, d *rwork, int *info) +void ztrsen(char *job, char *compq, bint *select, int *n, z *t, int *ldt, z *q, int *ldq, z *w, int *m, d *s, d *sep, z *work, int *lwork, int *info) +void ztrsna(char *job, char *howmny, bint *select, int *n, z *t, int *ldt, z *vl, int *ldvl, z *vr, int *ldvr, d *s, d *sep, int *mm, int *m, z *work, int *ldwork, d *rwork, int *info) +void ztrsyl(char *trana, char *tranb, int *isgn, int *m, int *n, z *a, int *lda, z *b, int *ldb, z *c, int *ldc, d *scale, int *info) +void ztrti2(char *uplo, char *diag, int *n, z *a, int *lda, int *info) +void ztrtri(char *uplo, char *diag, int *n, z *a, int *lda, int *info) +void ztrtrs(char *uplo, char *trans, char *diag, int *n, int *nrhs, z *a, int *lda, z *b, int *ldb, int *info) +void ztrttf(char *transr, char *uplo, int *n, z *a, int *lda, z *arf, int *info) +void ztrttp(char *uplo, int *n, z *a, int *lda, z *ap, int *info) +void ztzrzf(int *m, int *n, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zunbdb(char *trans, char *signs, int *m, int *p, int *q, z *x11, int *ldx11, z *x12, int *ldx12, z *x21, int *ldx21, z *x22, int *ldx22, d *theta, d *phi, z *taup1, z *taup2, z *tauq1, z *tauq2, z *work, int *lwork, int *info) +void zuncsd(char *jobu1, char *jobu2, char *jobv1t, char *jobv2t, char *trans, char *signs, int *m, int *p, int *q, z *x11, int *ldx11, z *x12, int *ldx12, z *x21, int *ldx21, z *x22, int *ldx22, d *theta, z *u1, int *ldu1, z *u2, int *ldu2, z *v1t, int *ldv1t, z *v2t, int *ldv2t, z *work, int *lwork, d *rwork, int *lrwork, int *iwork, int *info) +void zung2l(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *info) +void zung2r(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *info) +void zungbr(char *vect, int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zunghr(int *n, int *ilo, int *ihi, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zungl2(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *info) +void zunglq(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zungql(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zungqr(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zungr2(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *info) +void zungrq(int *m, int *n, int *k, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zungtr(char *uplo, int *n, z *a, int *lda, z *tau, z *work, int *lwork, int *info) +void zunm2l(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *info) +void zunm2r(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *info) +void zunmbr(char *vect, char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zunmhr(char *side, char *trans, int *m, int *n, int *ilo, int *ihi, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zunml2(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *info) +void zunmlq(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zunmql(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zunmqr(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zunmr2(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *info) +void zunmr3(char *side, char *trans, int *m, int *n, int *k, int *l, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *info) +void zunmrq(char *side, char *trans, int *m, int *n, int *k, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zunmrz(char *side, char *trans, int *m, int *n, int *k, int *l, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zunmtr(char *side, char *uplo, char *trans, int *m, int *n, z *a, int *lda, z *tau, z *c, int *ldc, z *work, int *lwork, int *info) +void zupgtr(char *uplo, int *n, z *ap, z *tau, z *q, int *ldq, z *work, int *info) +void zupmtr(char *side, char *uplo, char *trans, int *m, int *n, z *ap, z *tau, z *c, int *ldc, z *work, int *info) diff --git a/slycot/scipy-openblas-symbols/generate_def.py b/slycot/scipy-openblas-symbols/generate_def.py new file mode 100755 index 00000000..f7519de5 --- /dev/null +++ b/slycot/scipy-openblas-symbols/generate_def.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python + +"""Generate scipy_openblas_symbols.def from 3 .txt files + +Result is checked-in to repo; only re-run if symbols change. + +The source data is from Scipy - see headers of the source .txt files +and comment in lapack_exclusions.py for detail. + +Symbols generated work with scipy_openblas32 0.3.31.22.1 wheels, from +Feb 2026, and have only been tested with Slycot; there's no guarantee +they'll work with other BLAS and LAPACK dependent Fortran sources. + +""" + +from lapack_exclusions import lapack_exclusions + +# scipy doesn't know about this one, but SLICOT needs it; from netlib: +# DLAMC3 is intended to force A and B to be stored prior to doing +# the addition of A and B, for use in situations where optimizers +# might hold one of these in a register. +own_symbols = ["dlamc3"] + + +def parse_line(line): + """process line; return symbol as string, or None if none found""" + + # lines are "rettype identifier(args...)" + # we want "identifier" + + pline = line.strip() + if not pline or pline.startswith("#"): + return None + + if pline[0] == " " or " " not in pline: + raise ValueError(f"bad line {line}") + + _, rest = pline.split(" ", 1) + + if not rest or rest[0] == "(" or "(" not in rest: + raise ValueError(f"bad line {line}") + + symbol, _ = rest.split("(", 1) + + return symbol + + +def get_symbols(filename): + """Get all symbols from file""" + with open(filename) as infile: + lines = infile.readlines() + + symbols = [parse_line(line) for line in lines] + + return [s for s in symbols if s is not None] + + +def find_intersections(data): + """Check for intersection between the various symbol sources""" + # this w + from itertools import combinations + + for p1, p2 in combinations(data, 2): + s1 = set(data[p1]) + if not len(s1) == len(data[p1]): + raise ValueError(f"{p1} has duplicates: ") + s2 = set(data[p2]) + if not len(s2) == len(data[p2]): + raise ValueError(f"{p2} has duplicates") + + if s1.issubset(s2): + raise ValueError(f"{p1} is a subset of {p2}") + + if s2.issubset(s1): + raise ValueError(f"{p2} is a subset of {p1}") + + both = s1.intersection(s2) + + if both: + raise ValueError(f"{p1} and {p2} have non-empty intersection: {both}") + + +def main(): + """Get symbols and create output file""" + blas = get_symbols("cython_blas_signatures.txt") + lapack = get_symbols("cython_lapack_signatures.txt") + + find_intersections( + { + "blas": blas, + "lapack": lapack, + "lapack_exclusions": lapack_exclusions, + "own_symbols": own_symbols, + } + ) + + with open("scipy-openblas-symbols.def", "wt") as outfile: + for symbol in blas + lapack + own_symbols + lapack_exclusions: + outfile.write(f"-D{symbol.upper()}=SCIPY_{symbol.upper()}\n") + + +if __name__ == "__main__": + main() diff --git a/slycot/scipy-openblas-symbols/lapack_exclusions.py b/slycot/scipy-openblas-symbols/lapack_exclusions.py new file mode 100644 index 00000000..f816bc34 --- /dev/null +++ b/slycot/scipy-openblas-symbols/lapack_exclusions.py @@ -0,0 +1,152 @@ +# copied directly from _cython_signature_generator.py of Scipy 1.17.1 tarball + +lapack_exclusions = [ + # Not included because people should be using the + # C standard library function instead. + # sisnan is also not currently included in the + # ABI wrappers. + "sisnan", + "dlaisnan", + "slaisnan", + # Exclude slaneg because it isn't currently included + # in the ABI wrappers + "slaneg", + # Excluded because they require Fortran string arguments. + "ilaenv", + "iparmq", + "lsamen", + # slycot: we have our own xerbla + # 'xerbla', + # Exclude XBLAS routines since they aren't included + # by default. + "cgesvxx", + "dgesvxx", + "sgesvxx", + "zgesvxx", + "cgerfsx", + "dgerfsx", + "sgerfsx", + "zgerfsx", + "cla_gerfsx_extended", + "dla_gerfsx_extended", + "sla_gerfsx_extended", + "zla_gerfsx_extended", + "cla_geamv", + "dla_geamv", + "sla_geamv", + "zla_geamv", + "dla_gercond", + "sla_gercond", + "cla_gercond_c", + "zla_gercond_c", + "cla_gercond_x", + "zla_gercond_x", + "cla_gerpvgrw", + "dla_gerpvgrw", + "sla_gerpvgrw", + "zla_gerpvgrw", + "csysvxx", + "dsysvxx", + "ssysvxx", + "zsysvxx", + "csyrfsx", + "dsyrfsx", + "ssyrfsx", + "zsyrfsx", + "cla_syrfsx_extended", + "dla_syrfsx_extended", + "sla_syrfsx_extended", + "zla_syrfsx_extended", + "cla_syamv", + "dla_syamv", + "sla_syamv", + "zla_syamv", + "dla_syrcond", + "sla_syrcond", + "cla_syrcond_c", + "zla_syrcond_c", + "cla_syrcond_x", + "zla_syrcond_x", + "cla_syrpvgrw", + "dla_syrpvgrw", + "sla_syrpvgrw", + "zla_syrpvgrw", + "cposvxx", + "dposvxx", + "sposvxx", + "zposvxx", + "cporfsx", + "dporfsx", + "sporfsx", + "zporfsx", + "cla_porfsx_extended", + "dla_porfsx_extended", + "sla_porfsx_extended", + "zla_porfsx_extended", + "dla_porcond", + "sla_porcond", + "cla_porcond_c", + "zla_porcond_c", + "cla_porcond_x", + "zla_porcond_x", + "cla_porpvgrw", + "dla_porpvgrw", + "sla_porpvgrw", + "zla_porpvgrw", + "cgbsvxx", + "dgbsvxx", + "sgbsvxx", + "zgbsvxx", + "cgbrfsx", + "dgbrfsx", + "sgbrfsx", + "zgbrfsx", + "cla_gbrfsx_extended", + "dla_gbrfsx_extended", + "sla_gbrfsx_extended", + "zla_gbrfsx_extended", + "cla_gbamv", + "dla_gbamv", + "sla_gbamv", + "zla_gbamv", + "dla_gbrcond", + "sla_gbrcond", + "cla_gbrcond_c", + "zla_gbrcond_c", + "cla_gbrcond_x", + "zla_gbrcond_x", + "cla_gbrpvgrw", + "dla_gbrpvgrw", + "sla_gbrpvgrw", + "zla_gbrpvgrw", + "chesvxx", + "zhesvxx", + "cherfsx", + "zherfsx", + "cla_herfsx_extended", + "zla_herfsx_extended", + "cla_heamv", + "zla_heamv", + "cla_hercond_c", + "zla_hercond_c", + "cla_hercond_x", + "zla_hercond_x", + "cla_herpvgrw", + "zla_herpvgrw", + "sla_lin_berr", + "cla_lin_berr", + "dla_lin_berr", + "zla_lin_berr", + "clarscl2", + "dlarscl2", + "slarscl2", + "zlarscl2", + "clascl2", + "dlascl2", + "slascl2", + "zlascl2", + "cla_wwaddw", + "dla_wwaddw", + "sla_wwaddw", + "zla_wwaddw", +] diff --git a/slycot/scipy-openblas-symbols/scipy-openblas-symbols.def b/slycot/scipy-openblas-symbols/scipy-openblas-symbols.def new file mode 100644 index 00000000..e79155be --- /dev/null +++ b/slycot/scipy-openblas-symbols/scipy-openblas-symbols.def @@ -0,0 +1,1782 @@ +-DCAXPY=SCIPY_CAXPY +-DCCOPY=SCIPY_CCOPY +-DCDOTC=SCIPY_CDOTC +-DCDOTU=SCIPY_CDOTU +-DCGBMV=SCIPY_CGBMV +-DCGEMM=SCIPY_CGEMM +-DCGEMV=SCIPY_CGEMV +-DCGERC=SCIPY_CGERC +-DCGERU=SCIPY_CGERU +-DCHBMV=SCIPY_CHBMV +-DCHEMM=SCIPY_CHEMM +-DCHEMV=SCIPY_CHEMV +-DCHER=SCIPY_CHER +-DCHER2=SCIPY_CHER2 +-DCHER2K=SCIPY_CHER2K +-DCHERK=SCIPY_CHERK +-DCHPMV=SCIPY_CHPMV +-DCHPR=SCIPY_CHPR +-DCHPR2=SCIPY_CHPR2 +-DCROTG=SCIPY_CROTG +-DCSCAL=SCIPY_CSCAL +-DCSROT=SCIPY_CSROT +-DCSSCAL=SCIPY_CSSCAL +-DCSWAP=SCIPY_CSWAP +-DCSYMM=SCIPY_CSYMM +-DCSYR2K=SCIPY_CSYR2K +-DCSYRK=SCIPY_CSYRK +-DCTBMV=SCIPY_CTBMV +-DCTBSV=SCIPY_CTBSV +-DCTPMV=SCIPY_CTPMV +-DCTPSV=SCIPY_CTPSV +-DCTRMM=SCIPY_CTRMM +-DCTRMV=SCIPY_CTRMV +-DCTRSM=SCIPY_CTRSM +-DCTRSV=SCIPY_CTRSV +-DDASUM=SCIPY_DASUM +-DDAXPY=SCIPY_DAXPY +-DDCABS1=SCIPY_DCABS1 +-DDCOPY=SCIPY_DCOPY +-DDDOT=SCIPY_DDOT +-DDGBMV=SCIPY_DGBMV +-DDGEMM=SCIPY_DGEMM +-DDGEMV=SCIPY_DGEMV +-DDGER=SCIPY_DGER +-DDNRM2=SCIPY_DNRM2 +-DDROT=SCIPY_DROT +-DDROTG=SCIPY_DROTG +-DDROTM=SCIPY_DROTM +-DDROTMG=SCIPY_DROTMG +-DDSBMV=SCIPY_DSBMV +-DDSCAL=SCIPY_DSCAL +-DDSDOT=SCIPY_DSDOT +-DDSPMV=SCIPY_DSPMV +-DDSPR=SCIPY_DSPR +-DDSPR2=SCIPY_DSPR2 +-DDSWAP=SCIPY_DSWAP +-DDSYMM=SCIPY_DSYMM +-DDSYMV=SCIPY_DSYMV +-DDSYR=SCIPY_DSYR +-DDSYR2=SCIPY_DSYR2 +-DDSYR2K=SCIPY_DSYR2K +-DDSYRK=SCIPY_DSYRK +-DDTBMV=SCIPY_DTBMV +-DDTBSV=SCIPY_DTBSV +-DDTPMV=SCIPY_DTPMV +-DDTPSV=SCIPY_DTPSV +-DDTRMM=SCIPY_DTRMM +-DDTRMV=SCIPY_DTRMV +-DDTRSM=SCIPY_DTRSM +-DDTRSV=SCIPY_DTRSV +-DDZASUM=SCIPY_DZASUM +-DDZNRM2=SCIPY_DZNRM2 +-DICAMAX=SCIPY_ICAMAX +-DIDAMAX=SCIPY_IDAMAX +-DISAMAX=SCIPY_ISAMAX +-DIZAMAX=SCIPY_IZAMAX +-DLSAME=SCIPY_LSAME +-DSASUM=SCIPY_SASUM +-DSAXPY=SCIPY_SAXPY +-DSCASUM=SCIPY_SCASUM +-DSCNRM2=SCIPY_SCNRM2 +-DSCOPY=SCIPY_SCOPY +-DSDOT=SCIPY_SDOT +-DSDSDOT=SCIPY_SDSDOT +-DSGBMV=SCIPY_SGBMV +-DSGEMM=SCIPY_SGEMM +-DSGEMV=SCIPY_SGEMV +-DSGER=SCIPY_SGER +-DSNRM2=SCIPY_SNRM2 +-DSROT=SCIPY_SROT +-DSROTG=SCIPY_SROTG +-DSROTM=SCIPY_SROTM +-DSROTMG=SCIPY_SROTMG +-DSSBMV=SCIPY_SSBMV +-DSSCAL=SCIPY_SSCAL +-DSSPMV=SCIPY_SSPMV +-DSSPR=SCIPY_SSPR +-DSSPR2=SCIPY_SSPR2 +-DSSWAP=SCIPY_SSWAP +-DSSYMM=SCIPY_SSYMM +-DSSYMV=SCIPY_SSYMV +-DSSYR=SCIPY_SSYR +-DSSYR2=SCIPY_SSYR2 +-DSSYR2K=SCIPY_SSYR2K +-DSSYRK=SCIPY_SSYRK +-DSTBMV=SCIPY_STBMV +-DSTBSV=SCIPY_STBSV +-DSTPMV=SCIPY_STPMV +-DSTPSV=SCIPY_STPSV +-DSTRMM=SCIPY_STRMM +-DSTRMV=SCIPY_STRMV +-DSTRSM=SCIPY_STRSM +-DSTRSV=SCIPY_STRSV +-DZAXPY=SCIPY_ZAXPY +-DZCOPY=SCIPY_ZCOPY +-DZDOTC=SCIPY_ZDOTC +-DZDOTU=SCIPY_ZDOTU +-DZDROT=SCIPY_ZDROT +-DZDSCAL=SCIPY_ZDSCAL +-DZGBMV=SCIPY_ZGBMV +-DZGEMM=SCIPY_ZGEMM +-DZGEMV=SCIPY_ZGEMV +-DZGERC=SCIPY_ZGERC +-DZGERU=SCIPY_ZGERU +-DZHBMV=SCIPY_ZHBMV +-DZHEMM=SCIPY_ZHEMM +-DZHEMV=SCIPY_ZHEMV +-DZHER=SCIPY_ZHER +-DZHER2=SCIPY_ZHER2 +-DZHER2K=SCIPY_ZHER2K +-DZHERK=SCIPY_ZHERK +-DZHPMV=SCIPY_ZHPMV +-DZHPR=SCIPY_ZHPR +-DZHPR2=SCIPY_ZHPR2 +-DZROTG=SCIPY_ZROTG +-DZSCAL=SCIPY_ZSCAL +-DZSWAP=SCIPY_ZSWAP +-DZSYMM=SCIPY_ZSYMM +-DZSYR2K=SCIPY_ZSYR2K +-DZSYRK=SCIPY_ZSYRK +-DZTBMV=SCIPY_ZTBMV +-DZTBSV=SCIPY_ZTBSV +-DZTPMV=SCIPY_ZTPMV +-DZTPSV=SCIPY_ZTPSV +-DZTRMM=SCIPY_ZTRMM +-DZTRMV=SCIPY_ZTRMV +-DZTRSM=SCIPY_ZTRSM +-DZTRSV=SCIPY_ZTRSV +-DCBBCSD=SCIPY_CBBCSD +-DCBDSQR=SCIPY_CBDSQR +-DCGBBRD=SCIPY_CGBBRD +-DCGBCON=SCIPY_CGBCON +-DCGBEQU=SCIPY_CGBEQU +-DCGBEQUB=SCIPY_CGBEQUB +-DCGBRFS=SCIPY_CGBRFS +-DCGBSV=SCIPY_CGBSV +-DCGBSVX=SCIPY_CGBSVX +-DCGBTF2=SCIPY_CGBTF2 +-DCGBTRF=SCIPY_CGBTRF +-DCGBTRS=SCIPY_CGBTRS +-DCGEBAK=SCIPY_CGEBAK +-DCGEBAL=SCIPY_CGEBAL +-DCGEBD2=SCIPY_CGEBD2 +-DCGEBRD=SCIPY_CGEBRD +-DCGECON=SCIPY_CGECON +-DCGEEQU=SCIPY_CGEEQU +-DCGEEQUB=SCIPY_CGEEQUB +-DCGEES=SCIPY_CGEES +-DCGEESX=SCIPY_CGEESX +-DCGEEV=SCIPY_CGEEV +-DCGEEVX=SCIPY_CGEEVX +-DCGEHD2=SCIPY_CGEHD2 +-DCGEHRD=SCIPY_CGEHRD +-DCGELQ2=SCIPY_CGELQ2 +-DCGELQF=SCIPY_CGELQF +-DCGELS=SCIPY_CGELS +-DCGELSD=SCIPY_CGELSD +-DCGELSS=SCIPY_CGELSS +-DCGELSY=SCIPY_CGELSY +-DCGEMQRT=SCIPY_CGEMQRT +-DCGEQL2=SCIPY_CGEQL2 +-DCGEQLF=SCIPY_CGEQLF +-DCGEQP3=SCIPY_CGEQP3 +-DCGEQR2=SCIPY_CGEQR2 +-DCGEQR2P=SCIPY_CGEQR2P +-DCGEQRF=SCIPY_CGEQRF +-DCGEQRFP=SCIPY_CGEQRFP +-DCGEQRT=SCIPY_CGEQRT +-DCGEQRT2=SCIPY_CGEQRT2 +-DCGEQRT3=SCIPY_CGEQRT3 +-DCGERFS=SCIPY_CGERFS +-DCGERQ2=SCIPY_CGERQ2 +-DCGERQF=SCIPY_CGERQF +-DCGESC2=SCIPY_CGESC2 +-DCGESDD=SCIPY_CGESDD +-DCGESV=SCIPY_CGESV +-DCGESVD=SCIPY_CGESVD +-DCGESVX=SCIPY_CGESVX +-DCGETC2=SCIPY_CGETC2 +-DCGETF2=SCIPY_CGETF2 +-DCGETRF=SCIPY_CGETRF +-DCGETRI=SCIPY_CGETRI +-DCGETRS=SCIPY_CGETRS +-DCGGBAK=SCIPY_CGGBAK +-DCGGBAL=SCIPY_CGGBAL +-DCGGES=SCIPY_CGGES +-DCGGESX=SCIPY_CGGESX +-DCGGEV=SCIPY_CGGEV +-DCGGEVX=SCIPY_CGGEVX +-DCGGGLM=SCIPY_CGGGLM +-DCGGHRD=SCIPY_CGGHRD +-DCGGLSE=SCIPY_CGGLSE +-DCGGQRF=SCIPY_CGGQRF +-DCGGRQF=SCIPY_CGGRQF +-DCGTCON=SCIPY_CGTCON +-DCGTRFS=SCIPY_CGTRFS +-DCGTSV=SCIPY_CGTSV +-DCGTSVX=SCIPY_CGTSVX +-DCGTTRF=SCIPY_CGTTRF +-DCGTTRS=SCIPY_CGTTRS +-DCGTTS2=SCIPY_CGTTS2 +-DCHBEV=SCIPY_CHBEV +-DCHBEVD=SCIPY_CHBEVD +-DCHBEVX=SCIPY_CHBEVX +-DCHBGST=SCIPY_CHBGST +-DCHBGV=SCIPY_CHBGV +-DCHBGVD=SCIPY_CHBGVD +-DCHBGVX=SCIPY_CHBGVX +-DCHBTRD=SCIPY_CHBTRD +-DCHECON=SCIPY_CHECON +-DCHEEQUB=SCIPY_CHEEQUB +-DCHEEV=SCIPY_CHEEV +-DCHEEVD=SCIPY_CHEEVD +-DCHEEVR=SCIPY_CHEEVR +-DCHEEVX=SCIPY_CHEEVX +-DCHEGS2=SCIPY_CHEGS2 +-DCHEGST=SCIPY_CHEGST +-DCHEGV=SCIPY_CHEGV +-DCHEGVD=SCIPY_CHEGVD +-DCHEGVX=SCIPY_CHEGVX +-DCHERFS=SCIPY_CHERFS +-DCHESV=SCIPY_CHESV +-DCHESVX=SCIPY_CHESVX +-DCHESWAPR=SCIPY_CHESWAPR +-DCHETD2=SCIPY_CHETD2 +-DCHETF2=SCIPY_CHETF2 +-DCHETRD=SCIPY_CHETRD +-DCHETRF=SCIPY_CHETRF +-DCHETRI=SCIPY_CHETRI +-DCHETRI2=SCIPY_CHETRI2 +-DCHETRI2X=SCIPY_CHETRI2X +-DCHETRS=SCIPY_CHETRS +-DCHETRS2=SCIPY_CHETRS2 +-DCHFRK=SCIPY_CHFRK +-DCHGEQZ=SCIPY_CHGEQZ +-DCHLA_TRANSTYPE=SCIPY_CHLA_TRANSTYPE +-DCHPCON=SCIPY_CHPCON +-DCHPEV=SCIPY_CHPEV +-DCHPEVD=SCIPY_CHPEVD +-DCHPEVX=SCIPY_CHPEVX +-DCHPGST=SCIPY_CHPGST +-DCHPGV=SCIPY_CHPGV +-DCHPGVD=SCIPY_CHPGVD +-DCHPGVX=SCIPY_CHPGVX +-DCHPRFS=SCIPY_CHPRFS +-DCHPSV=SCIPY_CHPSV +-DCHPSVX=SCIPY_CHPSVX +-DCHPTRD=SCIPY_CHPTRD +-DCHPTRF=SCIPY_CHPTRF +-DCHPTRI=SCIPY_CHPTRI +-DCHPTRS=SCIPY_CHPTRS +-DCHSEIN=SCIPY_CHSEIN +-DCHSEQR=SCIPY_CHSEQR +-DCLABRD=SCIPY_CLABRD +-DCLACGV=SCIPY_CLACGV +-DCLACN2=SCIPY_CLACN2 +-DCLACON=SCIPY_CLACON +-DCLACP2=SCIPY_CLACP2 +-DCLACPY=SCIPY_CLACPY +-DCLACRM=SCIPY_CLACRM +-DCLACRT=SCIPY_CLACRT +-DCLADIV=SCIPY_CLADIV +-DCLAED0=SCIPY_CLAED0 +-DCLAED7=SCIPY_CLAED7 +-DCLAED8=SCIPY_CLAED8 +-DCLAEIN=SCIPY_CLAEIN +-DCLAESY=SCIPY_CLAESY +-DCLAEV2=SCIPY_CLAEV2 +-DCLAG2Z=SCIPY_CLAG2Z +-DCLAGS2=SCIPY_CLAGS2 +-DCLAGTM=SCIPY_CLAGTM +-DCLAHEF=SCIPY_CLAHEF +-DCLAHQR=SCIPY_CLAHQR +-DCLAHR2=SCIPY_CLAHR2 +-DCLAIC1=SCIPY_CLAIC1 +-DCLALS0=SCIPY_CLALS0 +-DCLALSA=SCIPY_CLALSA +-DCLALSD=SCIPY_CLALSD +-DCLANGB=SCIPY_CLANGB +-DCLANGE=SCIPY_CLANGE +-DCLANGT=SCIPY_CLANGT +-DCLANHB=SCIPY_CLANHB +-DCLANHE=SCIPY_CLANHE +-DCLANHF=SCIPY_CLANHF +-DCLANHP=SCIPY_CLANHP +-DCLANHS=SCIPY_CLANHS +-DCLANHT=SCIPY_CLANHT +-DCLANSB=SCIPY_CLANSB +-DCLANSP=SCIPY_CLANSP +-DCLANSY=SCIPY_CLANSY +-DCLANTB=SCIPY_CLANTB +-DCLANTP=SCIPY_CLANTP +-DCLANTR=SCIPY_CLANTR +-DCLAPLL=SCIPY_CLAPLL +-DCLAPMR=SCIPY_CLAPMR +-DCLAPMT=SCIPY_CLAPMT +-DCLAQGB=SCIPY_CLAQGB +-DCLAQGE=SCIPY_CLAQGE +-DCLAQHB=SCIPY_CLAQHB +-DCLAQHE=SCIPY_CLAQHE +-DCLAQHP=SCIPY_CLAQHP +-DCLAQP2=SCIPY_CLAQP2 +-DCLAQPS=SCIPY_CLAQPS +-DCLAQR0=SCIPY_CLAQR0 +-DCLAQR1=SCIPY_CLAQR1 +-DCLAQR2=SCIPY_CLAQR2 +-DCLAQR3=SCIPY_CLAQR3 +-DCLAQR4=SCIPY_CLAQR4 +-DCLAQR5=SCIPY_CLAQR5 +-DCLAQSB=SCIPY_CLAQSB +-DCLAQSP=SCIPY_CLAQSP +-DCLAQSY=SCIPY_CLAQSY +-DCLAR1V=SCIPY_CLAR1V +-DCLAR2V=SCIPY_CLAR2V +-DCLARCM=SCIPY_CLARCM +-DCLARF=SCIPY_CLARF +-DCLARFB=SCIPY_CLARFB +-DCLARFG=SCIPY_CLARFG +-DCLARFGP=SCIPY_CLARFGP +-DCLARFT=SCIPY_CLARFT +-DCLARFX=SCIPY_CLARFX +-DCLARGV=SCIPY_CLARGV +-DCLARNV=SCIPY_CLARNV +-DCLARRV=SCIPY_CLARRV +-DCLARTG=SCIPY_CLARTG +-DCLARTV=SCIPY_CLARTV +-DCLARZ=SCIPY_CLARZ +-DCLARZB=SCIPY_CLARZB +-DCLARZT=SCIPY_CLARZT +-DCLASCL=SCIPY_CLASCL +-DCLASET=SCIPY_CLASET +-DCLASR=SCIPY_CLASR +-DCLASSQ=SCIPY_CLASSQ +-DCLASWP=SCIPY_CLASWP +-DCLASYF=SCIPY_CLASYF +-DCLATBS=SCIPY_CLATBS +-DCLATDF=SCIPY_CLATDF +-DCLATPS=SCIPY_CLATPS +-DCLATRD=SCIPY_CLATRD +-DCLATRS=SCIPY_CLATRS +-DCLATRZ=SCIPY_CLATRZ +-DCLAUU2=SCIPY_CLAUU2 +-DCLAUUM=SCIPY_CLAUUM +-DCPBCON=SCIPY_CPBCON +-DCPBEQU=SCIPY_CPBEQU +-DCPBRFS=SCIPY_CPBRFS +-DCPBSTF=SCIPY_CPBSTF +-DCPBSV=SCIPY_CPBSV +-DCPBSVX=SCIPY_CPBSVX +-DCPBTF2=SCIPY_CPBTF2 +-DCPBTRF=SCIPY_CPBTRF +-DCPBTRS=SCIPY_CPBTRS +-DCPFTRF=SCIPY_CPFTRF +-DCPFTRI=SCIPY_CPFTRI +-DCPFTRS=SCIPY_CPFTRS +-DCPOCON=SCIPY_CPOCON +-DCPOEQU=SCIPY_CPOEQU +-DCPOEQUB=SCIPY_CPOEQUB +-DCPORFS=SCIPY_CPORFS +-DCPOSV=SCIPY_CPOSV +-DCPOSVX=SCIPY_CPOSVX +-DCPOTF2=SCIPY_CPOTF2 +-DCPOTRF=SCIPY_CPOTRF +-DCPOTRI=SCIPY_CPOTRI +-DCPOTRS=SCIPY_CPOTRS +-DCPPCON=SCIPY_CPPCON +-DCPPEQU=SCIPY_CPPEQU +-DCPPRFS=SCIPY_CPPRFS +-DCPPSV=SCIPY_CPPSV +-DCPPSVX=SCIPY_CPPSVX +-DCPPTRF=SCIPY_CPPTRF +-DCPPTRI=SCIPY_CPPTRI +-DCPPTRS=SCIPY_CPPTRS +-DCPSTF2=SCIPY_CPSTF2 +-DCPSTRF=SCIPY_CPSTRF +-DCPTCON=SCIPY_CPTCON +-DCPTEQR=SCIPY_CPTEQR +-DCPTRFS=SCIPY_CPTRFS +-DCPTSV=SCIPY_CPTSV +-DCPTSVX=SCIPY_CPTSVX +-DCPTTRF=SCIPY_CPTTRF +-DCPTTRS=SCIPY_CPTTRS +-DCPTTS2=SCIPY_CPTTS2 +-DCROT=SCIPY_CROT +-DCSPCON=SCIPY_CSPCON +-DCSPMV=SCIPY_CSPMV +-DCSPR=SCIPY_CSPR +-DCSPRFS=SCIPY_CSPRFS +-DCSPSV=SCIPY_CSPSV +-DCSPSVX=SCIPY_CSPSVX +-DCSPTRF=SCIPY_CSPTRF +-DCSPTRI=SCIPY_CSPTRI +-DCSPTRS=SCIPY_CSPTRS +-DCSRSCL=SCIPY_CSRSCL +-DCSTEDC=SCIPY_CSTEDC +-DCSTEGR=SCIPY_CSTEGR +-DCSTEIN=SCIPY_CSTEIN +-DCSTEMR=SCIPY_CSTEMR +-DCSTEQR=SCIPY_CSTEQR +-DCSYCON=SCIPY_CSYCON +-DCSYCONV=SCIPY_CSYCONV +-DCSYEQUB=SCIPY_CSYEQUB +-DCSYMV=SCIPY_CSYMV +-DCSYR=SCIPY_CSYR +-DCSYRFS=SCIPY_CSYRFS +-DCSYSV=SCIPY_CSYSV +-DCSYSVX=SCIPY_CSYSVX +-DCSYSWAPR=SCIPY_CSYSWAPR +-DCSYTF2=SCIPY_CSYTF2 +-DCSYTRF=SCIPY_CSYTRF +-DCSYTRI=SCIPY_CSYTRI +-DCSYTRI2=SCIPY_CSYTRI2 +-DCSYTRI2X=SCIPY_CSYTRI2X +-DCSYTRS=SCIPY_CSYTRS +-DCSYTRS2=SCIPY_CSYTRS2 +-DCTBCON=SCIPY_CTBCON +-DCTBRFS=SCIPY_CTBRFS +-DCTBTRS=SCIPY_CTBTRS +-DCTFSM=SCIPY_CTFSM +-DCTFTRI=SCIPY_CTFTRI +-DCTFTTP=SCIPY_CTFTTP +-DCTFTTR=SCIPY_CTFTTR +-DCTGEVC=SCIPY_CTGEVC +-DCTGEX2=SCIPY_CTGEX2 +-DCTGEXC=SCIPY_CTGEXC +-DCTGSEN=SCIPY_CTGSEN +-DCTGSJA=SCIPY_CTGSJA +-DCTGSNA=SCIPY_CTGSNA +-DCTGSY2=SCIPY_CTGSY2 +-DCTGSYL=SCIPY_CTGSYL +-DCTPCON=SCIPY_CTPCON +-DCTPMQRT=SCIPY_CTPMQRT +-DCTPQRT=SCIPY_CTPQRT +-DCTPQRT2=SCIPY_CTPQRT2 +-DCTPRFB=SCIPY_CTPRFB +-DCTPRFS=SCIPY_CTPRFS +-DCTPTRI=SCIPY_CTPTRI +-DCTPTRS=SCIPY_CTPTRS +-DCTPTTF=SCIPY_CTPTTF +-DCTPTTR=SCIPY_CTPTTR +-DCTRCON=SCIPY_CTRCON +-DCTREVC=SCIPY_CTREVC +-DCTREXC=SCIPY_CTREXC +-DCTRRFS=SCIPY_CTRRFS +-DCTRSEN=SCIPY_CTRSEN +-DCTRSNA=SCIPY_CTRSNA +-DCTRSYL=SCIPY_CTRSYL +-DCTRTI2=SCIPY_CTRTI2 +-DCTRTRI=SCIPY_CTRTRI +-DCTRTRS=SCIPY_CTRTRS +-DCTRTTF=SCIPY_CTRTTF +-DCTRTTP=SCIPY_CTRTTP +-DCTZRZF=SCIPY_CTZRZF +-DCUNBDB=SCIPY_CUNBDB +-DCUNCSD=SCIPY_CUNCSD +-DCUNG2L=SCIPY_CUNG2L +-DCUNG2R=SCIPY_CUNG2R +-DCUNGBR=SCIPY_CUNGBR +-DCUNGHR=SCIPY_CUNGHR +-DCUNGL2=SCIPY_CUNGL2 +-DCUNGLQ=SCIPY_CUNGLQ +-DCUNGQL=SCIPY_CUNGQL +-DCUNGQR=SCIPY_CUNGQR +-DCUNGR2=SCIPY_CUNGR2 +-DCUNGRQ=SCIPY_CUNGRQ +-DCUNGTR=SCIPY_CUNGTR +-DCUNM2L=SCIPY_CUNM2L +-DCUNM2R=SCIPY_CUNM2R +-DCUNMBR=SCIPY_CUNMBR +-DCUNMHR=SCIPY_CUNMHR +-DCUNML2=SCIPY_CUNML2 +-DCUNMLQ=SCIPY_CUNMLQ +-DCUNMQL=SCIPY_CUNMQL +-DCUNMQR=SCIPY_CUNMQR +-DCUNMR2=SCIPY_CUNMR2 +-DCUNMR3=SCIPY_CUNMR3 +-DCUNMRQ=SCIPY_CUNMRQ +-DCUNMRZ=SCIPY_CUNMRZ +-DCUNMTR=SCIPY_CUNMTR +-DCUPGTR=SCIPY_CUPGTR +-DCUPMTR=SCIPY_CUPMTR +-DDBBCSD=SCIPY_DBBCSD +-DDBDSDC=SCIPY_DBDSDC +-DDBDSQR=SCIPY_DBDSQR +-DDDISNA=SCIPY_DDISNA +-DDGBBRD=SCIPY_DGBBRD +-DDGBCON=SCIPY_DGBCON +-DDGBEQU=SCIPY_DGBEQU +-DDGBEQUB=SCIPY_DGBEQUB +-DDGBRFS=SCIPY_DGBRFS +-DDGBSV=SCIPY_DGBSV +-DDGBSVX=SCIPY_DGBSVX +-DDGBTF2=SCIPY_DGBTF2 +-DDGBTRF=SCIPY_DGBTRF +-DDGBTRS=SCIPY_DGBTRS +-DDGEBAK=SCIPY_DGEBAK +-DDGEBAL=SCIPY_DGEBAL +-DDGEBD2=SCIPY_DGEBD2 +-DDGEBRD=SCIPY_DGEBRD +-DDGECON=SCIPY_DGECON +-DDGEEQU=SCIPY_DGEEQU +-DDGEEQUB=SCIPY_DGEEQUB +-DDGEES=SCIPY_DGEES +-DDGEESX=SCIPY_DGEESX +-DDGEEV=SCIPY_DGEEV +-DDGEEVX=SCIPY_DGEEVX +-DDGEHD2=SCIPY_DGEHD2 +-DDGEHRD=SCIPY_DGEHRD +-DDGEJSV=SCIPY_DGEJSV +-DDGELQ2=SCIPY_DGELQ2 +-DDGELQF=SCIPY_DGELQF +-DDGELS=SCIPY_DGELS +-DDGELSD=SCIPY_DGELSD +-DDGELSS=SCIPY_DGELSS +-DDGELSY=SCIPY_DGELSY +-DDGEMQRT=SCIPY_DGEMQRT +-DDGEQL2=SCIPY_DGEQL2 +-DDGEQLF=SCIPY_DGEQLF +-DDGEQP3=SCIPY_DGEQP3 +-DDGEQR2=SCIPY_DGEQR2 +-DDGEQR2P=SCIPY_DGEQR2P +-DDGEQRF=SCIPY_DGEQRF +-DDGEQRFP=SCIPY_DGEQRFP +-DDGEQRT=SCIPY_DGEQRT +-DDGEQRT2=SCIPY_DGEQRT2 +-DDGEQRT3=SCIPY_DGEQRT3 +-DDGERFS=SCIPY_DGERFS +-DDGERQ2=SCIPY_DGERQ2 +-DDGERQF=SCIPY_DGERQF +-DDGESC2=SCIPY_DGESC2 +-DDGESDD=SCIPY_DGESDD +-DDGESV=SCIPY_DGESV +-DDGESVD=SCIPY_DGESVD +-DDGESVJ=SCIPY_DGESVJ +-DDGESVX=SCIPY_DGESVX +-DDGETC2=SCIPY_DGETC2 +-DDGETF2=SCIPY_DGETF2 +-DDGETRF=SCIPY_DGETRF +-DDGETRI=SCIPY_DGETRI +-DDGETRS=SCIPY_DGETRS +-DDGGBAK=SCIPY_DGGBAK +-DDGGBAL=SCIPY_DGGBAL +-DDGGES=SCIPY_DGGES +-DDGGESX=SCIPY_DGGESX +-DDGGEV=SCIPY_DGGEV +-DDGGEVX=SCIPY_DGGEVX +-DDGGGLM=SCIPY_DGGGLM +-DDGGHRD=SCIPY_DGGHRD +-DDGGLSE=SCIPY_DGGLSE +-DDGGQRF=SCIPY_DGGQRF +-DDGGRQF=SCIPY_DGGRQF +-DDGSVJ0=SCIPY_DGSVJ0 +-DDGSVJ1=SCIPY_DGSVJ1 +-DDGTCON=SCIPY_DGTCON +-DDGTRFS=SCIPY_DGTRFS +-DDGTSV=SCIPY_DGTSV +-DDGTSVX=SCIPY_DGTSVX +-DDGTTRF=SCIPY_DGTTRF +-DDGTTRS=SCIPY_DGTTRS +-DDGTTS2=SCIPY_DGTTS2 +-DDHGEQZ=SCIPY_DHGEQZ +-DDHSEIN=SCIPY_DHSEIN +-DDHSEQR=SCIPY_DHSEQR +-DDISNAN=SCIPY_DISNAN +-DDLABAD=SCIPY_DLABAD +-DDLABRD=SCIPY_DLABRD +-DDLACN2=SCIPY_DLACN2 +-DDLACON=SCIPY_DLACON +-DDLACPY=SCIPY_DLACPY +-DDLADIV=SCIPY_DLADIV +-DDLAE2=SCIPY_DLAE2 +-DDLAEBZ=SCIPY_DLAEBZ +-DDLAED0=SCIPY_DLAED0 +-DDLAED1=SCIPY_DLAED1 +-DDLAED2=SCIPY_DLAED2 +-DDLAED3=SCIPY_DLAED3 +-DDLAED4=SCIPY_DLAED4 +-DDLAED5=SCIPY_DLAED5 +-DDLAED6=SCIPY_DLAED6 +-DDLAED7=SCIPY_DLAED7 +-DDLAED8=SCIPY_DLAED8 +-DDLAED9=SCIPY_DLAED9 +-DDLAEDA=SCIPY_DLAEDA +-DDLAEIN=SCIPY_DLAEIN +-DDLAEV2=SCIPY_DLAEV2 +-DDLAEXC=SCIPY_DLAEXC +-DDLAG2=SCIPY_DLAG2 +-DDLAG2S=SCIPY_DLAG2S +-DDLAGS2=SCIPY_DLAGS2 +-DDLAGTF=SCIPY_DLAGTF +-DDLAGTM=SCIPY_DLAGTM +-DDLAGTS=SCIPY_DLAGTS +-DDLAGV2=SCIPY_DLAGV2 +-DDLAHQR=SCIPY_DLAHQR +-DDLAHR2=SCIPY_DLAHR2 +-DDLAIC1=SCIPY_DLAIC1 +-DDLALN2=SCIPY_DLALN2 +-DDLALS0=SCIPY_DLALS0 +-DDLALSA=SCIPY_DLALSA +-DDLALSD=SCIPY_DLALSD +-DDLAMCH=SCIPY_DLAMCH +-DDLAMRG=SCIPY_DLAMRG +-DDLANEG=SCIPY_DLANEG +-DDLANGB=SCIPY_DLANGB +-DDLANGE=SCIPY_DLANGE +-DDLANGT=SCIPY_DLANGT +-DDLANHS=SCIPY_DLANHS +-DDLANSB=SCIPY_DLANSB +-DDLANSF=SCIPY_DLANSF +-DDLANSP=SCIPY_DLANSP +-DDLANST=SCIPY_DLANST +-DDLANSY=SCIPY_DLANSY +-DDLANTB=SCIPY_DLANTB +-DDLANTP=SCIPY_DLANTP +-DDLANTR=SCIPY_DLANTR +-DDLANV2=SCIPY_DLANV2 +-DDLAPLL=SCIPY_DLAPLL +-DDLAPMR=SCIPY_DLAPMR +-DDLAPMT=SCIPY_DLAPMT +-DDLAPY2=SCIPY_DLAPY2 +-DDLAPY3=SCIPY_DLAPY3 +-DDLAQGB=SCIPY_DLAQGB +-DDLAQGE=SCIPY_DLAQGE +-DDLAQP2=SCIPY_DLAQP2 +-DDLAQPS=SCIPY_DLAQPS +-DDLAQR0=SCIPY_DLAQR0 +-DDLAQR1=SCIPY_DLAQR1 +-DDLAQR2=SCIPY_DLAQR2 +-DDLAQR3=SCIPY_DLAQR3 +-DDLAQR4=SCIPY_DLAQR4 +-DDLAQR5=SCIPY_DLAQR5 +-DDLAQSB=SCIPY_DLAQSB +-DDLAQSP=SCIPY_DLAQSP +-DDLAQSY=SCIPY_DLAQSY +-DDLAQTR=SCIPY_DLAQTR +-DDLAR1V=SCIPY_DLAR1V +-DDLAR2V=SCIPY_DLAR2V +-DDLARF=SCIPY_DLARF +-DDLARFB=SCIPY_DLARFB +-DDLARFG=SCIPY_DLARFG +-DDLARFGP=SCIPY_DLARFGP +-DDLARFT=SCIPY_DLARFT +-DDLARFX=SCIPY_DLARFX +-DDLARGV=SCIPY_DLARGV +-DDLARNV=SCIPY_DLARNV +-DDLARRA=SCIPY_DLARRA +-DDLARRB=SCIPY_DLARRB +-DDLARRC=SCIPY_DLARRC +-DDLARRD=SCIPY_DLARRD +-DDLARRE=SCIPY_DLARRE +-DDLARRF=SCIPY_DLARRF +-DDLARRJ=SCIPY_DLARRJ +-DDLARRK=SCIPY_DLARRK +-DDLARRR=SCIPY_DLARRR +-DDLARRV=SCIPY_DLARRV +-DDLARTG=SCIPY_DLARTG +-DDLARTGP=SCIPY_DLARTGP +-DDLARTGS=SCIPY_DLARTGS +-DDLARTV=SCIPY_DLARTV +-DDLARUV=SCIPY_DLARUV +-DDLARZ=SCIPY_DLARZ +-DDLARZB=SCIPY_DLARZB +-DDLARZT=SCIPY_DLARZT +-DDLAS2=SCIPY_DLAS2 +-DDLASCL=SCIPY_DLASCL +-DDLASD0=SCIPY_DLASD0 +-DDLASD1=SCIPY_DLASD1 +-DDLASD2=SCIPY_DLASD2 +-DDLASD3=SCIPY_DLASD3 +-DDLASD4=SCIPY_DLASD4 +-DDLASD5=SCIPY_DLASD5 +-DDLASD6=SCIPY_DLASD6 +-DDLASD7=SCIPY_DLASD7 +-DDLASD8=SCIPY_DLASD8 +-DDLASDA=SCIPY_DLASDA +-DDLASDQ=SCIPY_DLASDQ +-DDLASDT=SCIPY_DLASDT +-DDLASET=SCIPY_DLASET +-DDLASQ1=SCIPY_DLASQ1 +-DDLASQ2=SCIPY_DLASQ2 +-DDLASQ3=SCIPY_DLASQ3 +-DDLASQ4=SCIPY_DLASQ4 +-DDLASQ6=SCIPY_DLASQ6 +-DDLASR=SCIPY_DLASR +-DDLASRT=SCIPY_DLASRT +-DDLASSQ=SCIPY_DLASSQ +-DDLASV2=SCIPY_DLASV2 +-DDLASWP=SCIPY_DLASWP +-DDLASY2=SCIPY_DLASY2 +-DDLASYF=SCIPY_DLASYF +-DDLAT2S=SCIPY_DLAT2S +-DDLATBS=SCIPY_DLATBS +-DDLATDF=SCIPY_DLATDF +-DDLATPS=SCIPY_DLATPS +-DDLATRD=SCIPY_DLATRD +-DDLATRS=SCIPY_DLATRS +-DDLATRZ=SCIPY_DLATRZ +-DDLAUU2=SCIPY_DLAUU2 +-DDLAUUM=SCIPY_DLAUUM +-DDOPGTR=SCIPY_DOPGTR +-DDOPMTR=SCIPY_DOPMTR +-DDORBDB=SCIPY_DORBDB +-DDORCSD=SCIPY_DORCSD +-DDORG2L=SCIPY_DORG2L +-DDORG2R=SCIPY_DORG2R +-DDORGBR=SCIPY_DORGBR +-DDORGHR=SCIPY_DORGHR +-DDORGL2=SCIPY_DORGL2 +-DDORGLQ=SCIPY_DORGLQ +-DDORGQL=SCIPY_DORGQL +-DDORGQR=SCIPY_DORGQR +-DDORGR2=SCIPY_DORGR2 +-DDORGRQ=SCIPY_DORGRQ +-DDORGTR=SCIPY_DORGTR +-DDORM2L=SCIPY_DORM2L +-DDORM2R=SCIPY_DORM2R +-DDORMBR=SCIPY_DORMBR +-DDORMHR=SCIPY_DORMHR +-DDORML2=SCIPY_DORML2 +-DDORMLQ=SCIPY_DORMLQ +-DDORMQL=SCIPY_DORMQL +-DDORMQR=SCIPY_DORMQR +-DDORMR2=SCIPY_DORMR2 +-DDORMR3=SCIPY_DORMR3 +-DDORMRQ=SCIPY_DORMRQ +-DDORMRZ=SCIPY_DORMRZ +-DDORMTR=SCIPY_DORMTR +-DDPBCON=SCIPY_DPBCON +-DDPBEQU=SCIPY_DPBEQU +-DDPBRFS=SCIPY_DPBRFS +-DDPBSTF=SCIPY_DPBSTF +-DDPBSV=SCIPY_DPBSV +-DDPBSVX=SCIPY_DPBSVX +-DDPBTF2=SCIPY_DPBTF2 +-DDPBTRF=SCIPY_DPBTRF +-DDPBTRS=SCIPY_DPBTRS +-DDPFTRF=SCIPY_DPFTRF +-DDPFTRI=SCIPY_DPFTRI +-DDPFTRS=SCIPY_DPFTRS +-DDPOCON=SCIPY_DPOCON +-DDPOEQU=SCIPY_DPOEQU +-DDPOEQUB=SCIPY_DPOEQUB +-DDPORFS=SCIPY_DPORFS +-DDPOSV=SCIPY_DPOSV +-DDPOSVX=SCIPY_DPOSVX +-DDPOTF2=SCIPY_DPOTF2 +-DDPOTRF=SCIPY_DPOTRF +-DDPOTRI=SCIPY_DPOTRI +-DDPOTRS=SCIPY_DPOTRS +-DDPPCON=SCIPY_DPPCON +-DDPPEQU=SCIPY_DPPEQU +-DDPPRFS=SCIPY_DPPRFS +-DDPPSV=SCIPY_DPPSV +-DDPPSVX=SCIPY_DPPSVX +-DDPPTRF=SCIPY_DPPTRF +-DDPPTRI=SCIPY_DPPTRI +-DDPPTRS=SCIPY_DPPTRS +-DDPSTF2=SCIPY_DPSTF2 +-DDPSTRF=SCIPY_DPSTRF +-DDPTCON=SCIPY_DPTCON +-DDPTEQR=SCIPY_DPTEQR +-DDPTRFS=SCIPY_DPTRFS +-DDPTSV=SCIPY_DPTSV +-DDPTSVX=SCIPY_DPTSVX +-DDPTTRF=SCIPY_DPTTRF +-DDPTTRS=SCIPY_DPTTRS +-DDPTTS2=SCIPY_DPTTS2 +-DDRSCL=SCIPY_DRSCL +-DDSBEV=SCIPY_DSBEV +-DDSBEVD=SCIPY_DSBEVD +-DDSBEVX=SCIPY_DSBEVX +-DDSBGST=SCIPY_DSBGST +-DDSBGV=SCIPY_DSBGV +-DDSBGVD=SCIPY_DSBGVD +-DDSBGVX=SCIPY_DSBGVX +-DDSBTRD=SCIPY_DSBTRD +-DDSFRK=SCIPY_DSFRK +-DDSGESV=SCIPY_DSGESV +-DDSPCON=SCIPY_DSPCON +-DDSPEV=SCIPY_DSPEV +-DDSPEVD=SCIPY_DSPEVD +-DDSPEVX=SCIPY_DSPEVX +-DDSPGST=SCIPY_DSPGST +-DDSPGV=SCIPY_DSPGV +-DDSPGVD=SCIPY_DSPGVD +-DDSPGVX=SCIPY_DSPGVX +-DDSPOSV=SCIPY_DSPOSV +-DDSPRFS=SCIPY_DSPRFS +-DDSPSV=SCIPY_DSPSV +-DDSPSVX=SCIPY_DSPSVX +-DDSPTRD=SCIPY_DSPTRD +-DDSPTRF=SCIPY_DSPTRF +-DDSPTRI=SCIPY_DSPTRI +-DDSPTRS=SCIPY_DSPTRS +-DDSTEBZ=SCIPY_DSTEBZ +-DDSTEDC=SCIPY_DSTEDC +-DDSTEGR=SCIPY_DSTEGR +-DDSTEIN=SCIPY_DSTEIN +-DDSTEMR=SCIPY_DSTEMR +-DDSTEQR=SCIPY_DSTEQR +-DDSTERF=SCIPY_DSTERF +-DDSTEV=SCIPY_DSTEV +-DDSTEVD=SCIPY_DSTEVD +-DDSTEVR=SCIPY_DSTEVR +-DDSTEVX=SCIPY_DSTEVX +-DDSYCON=SCIPY_DSYCON +-DDSYCONV=SCIPY_DSYCONV +-DDSYEQUB=SCIPY_DSYEQUB +-DDSYEV=SCIPY_DSYEV +-DDSYEVD=SCIPY_DSYEVD +-DDSYEVR=SCIPY_DSYEVR +-DDSYEVX=SCIPY_DSYEVX +-DDSYGS2=SCIPY_DSYGS2 +-DDSYGST=SCIPY_DSYGST +-DDSYGV=SCIPY_DSYGV +-DDSYGVD=SCIPY_DSYGVD +-DDSYGVX=SCIPY_DSYGVX +-DDSYRFS=SCIPY_DSYRFS +-DDSYSV=SCIPY_DSYSV +-DDSYSVX=SCIPY_DSYSVX +-DDSYSWAPR=SCIPY_DSYSWAPR +-DDSYTD2=SCIPY_DSYTD2 +-DDSYTF2=SCIPY_DSYTF2 +-DDSYTRD=SCIPY_DSYTRD +-DDSYTRF=SCIPY_DSYTRF +-DDSYTRI=SCIPY_DSYTRI +-DDSYTRI2=SCIPY_DSYTRI2 +-DDSYTRI2X=SCIPY_DSYTRI2X +-DDSYTRS=SCIPY_DSYTRS +-DDSYTRS2=SCIPY_DSYTRS2 +-DDTBCON=SCIPY_DTBCON +-DDTBRFS=SCIPY_DTBRFS +-DDTBTRS=SCIPY_DTBTRS +-DDTFSM=SCIPY_DTFSM +-DDTFTRI=SCIPY_DTFTRI +-DDTFTTP=SCIPY_DTFTTP +-DDTFTTR=SCIPY_DTFTTR +-DDTGEVC=SCIPY_DTGEVC +-DDTGEX2=SCIPY_DTGEX2 +-DDTGEXC=SCIPY_DTGEXC +-DDTGSEN=SCIPY_DTGSEN +-DDTGSJA=SCIPY_DTGSJA +-DDTGSNA=SCIPY_DTGSNA +-DDTGSY2=SCIPY_DTGSY2 +-DDTGSYL=SCIPY_DTGSYL +-DDTPCON=SCIPY_DTPCON +-DDTPMQRT=SCIPY_DTPMQRT +-DDTPQRT=SCIPY_DTPQRT +-DDTPQRT2=SCIPY_DTPQRT2 +-DDTPRFB=SCIPY_DTPRFB +-DDTPRFS=SCIPY_DTPRFS +-DDTPTRI=SCIPY_DTPTRI +-DDTPTRS=SCIPY_DTPTRS +-DDTPTTF=SCIPY_DTPTTF +-DDTPTTR=SCIPY_DTPTTR +-DDTRCON=SCIPY_DTRCON +-DDTREVC=SCIPY_DTREVC +-DDTREXC=SCIPY_DTREXC +-DDTRRFS=SCIPY_DTRRFS +-DDTRSEN=SCIPY_DTRSEN +-DDTRSNA=SCIPY_DTRSNA +-DDTRSYL=SCIPY_DTRSYL +-DDTRTI2=SCIPY_DTRTI2 +-DDTRTRI=SCIPY_DTRTRI +-DDTRTRS=SCIPY_DTRTRS +-DDTRTTF=SCIPY_DTRTTF +-DDTRTTP=SCIPY_DTRTTP +-DDTZRZF=SCIPY_DTZRZF +-DDZSUM1=SCIPY_DZSUM1 +-DICMAX1=SCIPY_ICMAX1 +-DIEEECK=SCIPY_IEEECK +-DILACLC=SCIPY_ILACLC +-DILACLR=SCIPY_ILACLR +-DILADIAG=SCIPY_ILADIAG +-DILADLC=SCIPY_ILADLC +-DILADLR=SCIPY_ILADLR +-DILAPREC=SCIPY_ILAPREC +-DILASLC=SCIPY_ILASLC +-DILASLR=SCIPY_ILASLR +-DILATRANS=SCIPY_ILATRANS +-DILAUPLO=SCIPY_ILAUPLO +-DILAVER=SCIPY_ILAVER +-DILAZLC=SCIPY_ILAZLC +-DILAZLR=SCIPY_ILAZLR +-DIZMAX1=SCIPY_IZMAX1 +-DSBBCSD=SCIPY_SBBCSD +-DSBDSDC=SCIPY_SBDSDC +-DSBDSQR=SCIPY_SBDSQR +-DSCSUM1=SCIPY_SCSUM1 +-DSDISNA=SCIPY_SDISNA +-DSGBBRD=SCIPY_SGBBRD +-DSGBCON=SCIPY_SGBCON +-DSGBEQU=SCIPY_SGBEQU +-DSGBEQUB=SCIPY_SGBEQUB +-DSGBRFS=SCIPY_SGBRFS +-DSGBSV=SCIPY_SGBSV +-DSGBSVX=SCIPY_SGBSVX +-DSGBTF2=SCIPY_SGBTF2 +-DSGBTRF=SCIPY_SGBTRF +-DSGBTRS=SCIPY_SGBTRS +-DSGEBAK=SCIPY_SGEBAK +-DSGEBAL=SCIPY_SGEBAL +-DSGEBD2=SCIPY_SGEBD2 +-DSGEBRD=SCIPY_SGEBRD +-DSGECON=SCIPY_SGECON +-DSGEEQU=SCIPY_SGEEQU +-DSGEEQUB=SCIPY_SGEEQUB +-DSGEES=SCIPY_SGEES +-DSGEESX=SCIPY_SGEESX +-DSGEEV=SCIPY_SGEEV +-DSGEEVX=SCIPY_SGEEVX +-DSGEHD2=SCIPY_SGEHD2 +-DSGEHRD=SCIPY_SGEHRD +-DSGEJSV=SCIPY_SGEJSV +-DSGELQ2=SCIPY_SGELQ2 +-DSGELQF=SCIPY_SGELQF +-DSGELS=SCIPY_SGELS +-DSGELSD=SCIPY_SGELSD +-DSGELSS=SCIPY_SGELSS +-DSGELSY=SCIPY_SGELSY +-DSGEMQRT=SCIPY_SGEMQRT +-DSGEQL2=SCIPY_SGEQL2 +-DSGEQLF=SCIPY_SGEQLF +-DSGEQP3=SCIPY_SGEQP3 +-DSGEQR2=SCIPY_SGEQR2 +-DSGEQR2P=SCIPY_SGEQR2P +-DSGEQRF=SCIPY_SGEQRF +-DSGEQRFP=SCIPY_SGEQRFP +-DSGEQRT=SCIPY_SGEQRT +-DSGEQRT2=SCIPY_SGEQRT2 +-DSGEQRT3=SCIPY_SGEQRT3 +-DSGERFS=SCIPY_SGERFS +-DSGERQ2=SCIPY_SGERQ2 +-DSGERQF=SCIPY_SGERQF +-DSGESC2=SCIPY_SGESC2 +-DSGESDD=SCIPY_SGESDD +-DSGESV=SCIPY_SGESV +-DSGESVD=SCIPY_SGESVD +-DSGESVJ=SCIPY_SGESVJ +-DSGESVX=SCIPY_SGESVX +-DSGETC2=SCIPY_SGETC2 +-DSGETF2=SCIPY_SGETF2 +-DSGETRF=SCIPY_SGETRF +-DSGETRI=SCIPY_SGETRI +-DSGETRS=SCIPY_SGETRS +-DSGGBAK=SCIPY_SGGBAK +-DSGGBAL=SCIPY_SGGBAL +-DSGGES=SCIPY_SGGES +-DSGGESX=SCIPY_SGGESX +-DSGGEV=SCIPY_SGGEV +-DSGGEVX=SCIPY_SGGEVX +-DSGGGLM=SCIPY_SGGGLM +-DSGGHRD=SCIPY_SGGHRD +-DSGGLSE=SCIPY_SGGLSE +-DSGGQRF=SCIPY_SGGQRF +-DSGGRQF=SCIPY_SGGRQF +-DSGSVJ0=SCIPY_SGSVJ0 +-DSGSVJ1=SCIPY_SGSVJ1 +-DSGTCON=SCIPY_SGTCON +-DSGTRFS=SCIPY_SGTRFS +-DSGTSV=SCIPY_SGTSV +-DSGTSVX=SCIPY_SGTSVX +-DSGTTRF=SCIPY_SGTTRF +-DSGTTRS=SCIPY_SGTTRS +-DSGTTS2=SCIPY_SGTTS2 +-DSHGEQZ=SCIPY_SHGEQZ +-DSHSEIN=SCIPY_SHSEIN +-DSHSEQR=SCIPY_SHSEQR +-DSLABAD=SCIPY_SLABAD +-DSLABRD=SCIPY_SLABRD +-DSLACN2=SCIPY_SLACN2 +-DSLACON=SCIPY_SLACON +-DSLACPY=SCIPY_SLACPY +-DSLADIV=SCIPY_SLADIV +-DSLAE2=SCIPY_SLAE2 +-DSLAEBZ=SCIPY_SLAEBZ +-DSLAED0=SCIPY_SLAED0 +-DSLAED1=SCIPY_SLAED1 +-DSLAED2=SCIPY_SLAED2 +-DSLAED3=SCIPY_SLAED3 +-DSLAED4=SCIPY_SLAED4 +-DSLAED5=SCIPY_SLAED5 +-DSLAED6=SCIPY_SLAED6 +-DSLAED7=SCIPY_SLAED7 +-DSLAED8=SCIPY_SLAED8 +-DSLAED9=SCIPY_SLAED9 +-DSLAEDA=SCIPY_SLAEDA +-DSLAEIN=SCIPY_SLAEIN +-DSLAEV2=SCIPY_SLAEV2 +-DSLAEXC=SCIPY_SLAEXC +-DSLAG2=SCIPY_SLAG2 +-DSLAG2D=SCIPY_SLAG2D +-DSLAGS2=SCIPY_SLAGS2 +-DSLAGTF=SCIPY_SLAGTF +-DSLAGTM=SCIPY_SLAGTM +-DSLAGTS=SCIPY_SLAGTS +-DSLAGV2=SCIPY_SLAGV2 +-DSLAHQR=SCIPY_SLAHQR +-DSLAHR2=SCIPY_SLAHR2 +-DSLAIC1=SCIPY_SLAIC1 +-DSLALN2=SCIPY_SLALN2 +-DSLALS0=SCIPY_SLALS0 +-DSLALSA=SCIPY_SLALSA +-DSLALSD=SCIPY_SLALSD +-DSLAMCH=SCIPY_SLAMCH +-DSLAMRG=SCIPY_SLAMRG +-DSLANGB=SCIPY_SLANGB +-DSLANGE=SCIPY_SLANGE +-DSLANGT=SCIPY_SLANGT +-DSLANHS=SCIPY_SLANHS +-DSLANSB=SCIPY_SLANSB +-DSLANSF=SCIPY_SLANSF +-DSLANSP=SCIPY_SLANSP +-DSLANST=SCIPY_SLANST +-DSLANSY=SCIPY_SLANSY +-DSLANTB=SCIPY_SLANTB +-DSLANTP=SCIPY_SLANTP +-DSLANTR=SCIPY_SLANTR +-DSLANV2=SCIPY_SLANV2 +-DSLAPLL=SCIPY_SLAPLL +-DSLAPMR=SCIPY_SLAPMR +-DSLAPMT=SCIPY_SLAPMT +-DSLAPY2=SCIPY_SLAPY2 +-DSLAPY3=SCIPY_SLAPY3 +-DSLAQGB=SCIPY_SLAQGB +-DSLAQGE=SCIPY_SLAQGE +-DSLAQP2=SCIPY_SLAQP2 +-DSLAQPS=SCIPY_SLAQPS +-DSLAQR0=SCIPY_SLAQR0 +-DSLAQR1=SCIPY_SLAQR1 +-DSLAQR2=SCIPY_SLAQR2 +-DSLAQR3=SCIPY_SLAQR3 +-DSLAQR4=SCIPY_SLAQR4 +-DSLAQR5=SCIPY_SLAQR5 +-DSLAQSB=SCIPY_SLAQSB +-DSLAQSP=SCIPY_SLAQSP +-DSLAQSY=SCIPY_SLAQSY +-DSLAQTR=SCIPY_SLAQTR +-DSLAR1V=SCIPY_SLAR1V +-DSLAR2V=SCIPY_SLAR2V +-DSLARF=SCIPY_SLARF +-DSLARFB=SCIPY_SLARFB +-DSLARFG=SCIPY_SLARFG +-DSLARFGP=SCIPY_SLARFGP +-DSLARFT=SCIPY_SLARFT +-DSLARFX=SCIPY_SLARFX +-DSLARGV=SCIPY_SLARGV +-DSLARNV=SCIPY_SLARNV +-DSLARRA=SCIPY_SLARRA +-DSLARRB=SCIPY_SLARRB +-DSLARRC=SCIPY_SLARRC +-DSLARRD=SCIPY_SLARRD +-DSLARRE=SCIPY_SLARRE +-DSLARRF=SCIPY_SLARRF +-DSLARRJ=SCIPY_SLARRJ +-DSLARRK=SCIPY_SLARRK +-DSLARRR=SCIPY_SLARRR +-DSLARRV=SCIPY_SLARRV +-DSLARTG=SCIPY_SLARTG +-DSLARTGP=SCIPY_SLARTGP +-DSLARTGS=SCIPY_SLARTGS +-DSLARTV=SCIPY_SLARTV +-DSLARUV=SCIPY_SLARUV +-DSLARZ=SCIPY_SLARZ +-DSLARZB=SCIPY_SLARZB +-DSLARZT=SCIPY_SLARZT +-DSLAS2=SCIPY_SLAS2 +-DSLASCL=SCIPY_SLASCL +-DSLASD0=SCIPY_SLASD0 +-DSLASD1=SCIPY_SLASD1 +-DSLASD2=SCIPY_SLASD2 +-DSLASD3=SCIPY_SLASD3 +-DSLASD4=SCIPY_SLASD4 +-DSLASD5=SCIPY_SLASD5 +-DSLASD6=SCIPY_SLASD6 +-DSLASD7=SCIPY_SLASD7 +-DSLASD8=SCIPY_SLASD8 +-DSLASDA=SCIPY_SLASDA +-DSLASDQ=SCIPY_SLASDQ +-DSLASDT=SCIPY_SLASDT +-DSLASET=SCIPY_SLASET +-DSLASQ1=SCIPY_SLASQ1 +-DSLASQ2=SCIPY_SLASQ2 +-DSLASQ3=SCIPY_SLASQ3 +-DSLASQ4=SCIPY_SLASQ4 +-DSLASQ6=SCIPY_SLASQ6 +-DSLASR=SCIPY_SLASR +-DSLASRT=SCIPY_SLASRT +-DSLASSQ=SCIPY_SLASSQ +-DSLASV2=SCIPY_SLASV2 +-DSLASWP=SCIPY_SLASWP +-DSLASY2=SCIPY_SLASY2 +-DSLASYF=SCIPY_SLASYF +-DSLATBS=SCIPY_SLATBS +-DSLATDF=SCIPY_SLATDF +-DSLATPS=SCIPY_SLATPS +-DSLATRD=SCIPY_SLATRD +-DSLATRS=SCIPY_SLATRS +-DSLATRZ=SCIPY_SLATRZ +-DSLAUU2=SCIPY_SLAUU2 +-DSLAUUM=SCIPY_SLAUUM +-DSOPGTR=SCIPY_SOPGTR +-DSOPMTR=SCIPY_SOPMTR +-DSORBDB=SCIPY_SORBDB +-DSORCSD=SCIPY_SORCSD +-DSORG2L=SCIPY_SORG2L +-DSORG2R=SCIPY_SORG2R +-DSORGBR=SCIPY_SORGBR +-DSORGHR=SCIPY_SORGHR +-DSORGL2=SCIPY_SORGL2 +-DSORGLQ=SCIPY_SORGLQ +-DSORGQL=SCIPY_SORGQL +-DSORGQR=SCIPY_SORGQR +-DSORGR2=SCIPY_SORGR2 +-DSORGRQ=SCIPY_SORGRQ +-DSORGTR=SCIPY_SORGTR +-DSORM2L=SCIPY_SORM2L +-DSORM2R=SCIPY_SORM2R +-DSORMBR=SCIPY_SORMBR +-DSORMHR=SCIPY_SORMHR +-DSORML2=SCIPY_SORML2 +-DSORMLQ=SCIPY_SORMLQ +-DSORMQL=SCIPY_SORMQL +-DSORMQR=SCIPY_SORMQR +-DSORMR2=SCIPY_SORMR2 +-DSORMR3=SCIPY_SORMR3 +-DSORMRQ=SCIPY_SORMRQ +-DSORMRZ=SCIPY_SORMRZ +-DSORMTR=SCIPY_SORMTR +-DSPBCON=SCIPY_SPBCON +-DSPBEQU=SCIPY_SPBEQU +-DSPBRFS=SCIPY_SPBRFS +-DSPBSTF=SCIPY_SPBSTF +-DSPBSV=SCIPY_SPBSV +-DSPBSVX=SCIPY_SPBSVX +-DSPBTF2=SCIPY_SPBTF2 +-DSPBTRF=SCIPY_SPBTRF +-DSPBTRS=SCIPY_SPBTRS +-DSPFTRF=SCIPY_SPFTRF +-DSPFTRI=SCIPY_SPFTRI +-DSPFTRS=SCIPY_SPFTRS +-DSPOCON=SCIPY_SPOCON +-DSPOEQU=SCIPY_SPOEQU +-DSPOEQUB=SCIPY_SPOEQUB +-DSPORFS=SCIPY_SPORFS +-DSPOSV=SCIPY_SPOSV +-DSPOSVX=SCIPY_SPOSVX +-DSPOTF2=SCIPY_SPOTF2 +-DSPOTRF=SCIPY_SPOTRF +-DSPOTRI=SCIPY_SPOTRI +-DSPOTRS=SCIPY_SPOTRS +-DSPPCON=SCIPY_SPPCON +-DSPPEQU=SCIPY_SPPEQU +-DSPPRFS=SCIPY_SPPRFS +-DSPPSV=SCIPY_SPPSV +-DSPPSVX=SCIPY_SPPSVX +-DSPPTRF=SCIPY_SPPTRF +-DSPPTRI=SCIPY_SPPTRI +-DSPPTRS=SCIPY_SPPTRS +-DSPSTF2=SCIPY_SPSTF2 +-DSPSTRF=SCIPY_SPSTRF +-DSPTCON=SCIPY_SPTCON +-DSPTEQR=SCIPY_SPTEQR +-DSPTRFS=SCIPY_SPTRFS +-DSPTSV=SCIPY_SPTSV +-DSPTSVX=SCIPY_SPTSVX +-DSPTTRF=SCIPY_SPTTRF +-DSPTTRS=SCIPY_SPTTRS +-DSPTTS2=SCIPY_SPTTS2 +-DSRSCL=SCIPY_SRSCL +-DSSBEV=SCIPY_SSBEV +-DSSBEVD=SCIPY_SSBEVD +-DSSBEVX=SCIPY_SSBEVX +-DSSBGST=SCIPY_SSBGST +-DSSBGV=SCIPY_SSBGV +-DSSBGVD=SCIPY_SSBGVD +-DSSBGVX=SCIPY_SSBGVX +-DSSBTRD=SCIPY_SSBTRD +-DSSFRK=SCIPY_SSFRK +-DSSPCON=SCIPY_SSPCON +-DSSPEV=SCIPY_SSPEV +-DSSPEVD=SCIPY_SSPEVD +-DSSPEVX=SCIPY_SSPEVX +-DSSPGST=SCIPY_SSPGST +-DSSPGV=SCIPY_SSPGV +-DSSPGVD=SCIPY_SSPGVD +-DSSPGVX=SCIPY_SSPGVX +-DSSPRFS=SCIPY_SSPRFS +-DSSPSV=SCIPY_SSPSV +-DSSPSVX=SCIPY_SSPSVX +-DSSPTRD=SCIPY_SSPTRD +-DSSPTRF=SCIPY_SSPTRF +-DSSPTRI=SCIPY_SSPTRI +-DSSPTRS=SCIPY_SSPTRS +-DSSTEBZ=SCIPY_SSTEBZ +-DSSTEDC=SCIPY_SSTEDC +-DSSTEGR=SCIPY_SSTEGR +-DSSTEIN=SCIPY_SSTEIN +-DSSTEMR=SCIPY_SSTEMR +-DSSTEQR=SCIPY_SSTEQR +-DSSTERF=SCIPY_SSTERF +-DSSTEV=SCIPY_SSTEV +-DSSTEVD=SCIPY_SSTEVD +-DSSTEVR=SCIPY_SSTEVR +-DSSTEVX=SCIPY_SSTEVX +-DSSYCON=SCIPY_SSYCON +-DSSYCONV=SCIPY_SSYCONV +-DSSYEQUB=SCIPY_SSYEQUB +-DSSYEV=SCIPY_SSYEV +-DSSYEVD=SCIPY_SSYEVD +-DSSYEVR=SCIPY_SSYEVR +-DSSYEVX=SCIPY_SSYEVX +-DSSYGS2=SCIPY_SSYGS2 +-DSSYGST=SCIPY_SSYGST +-DSSYGV=SCIPY_SSYGV +-DSSYGVD=SCIPY_SSYGVD +-DSSYGVX=SCIPY_SSYGVX +-DSSYRFS=SCIPY_SSYRFS +-DSSYSV=SCIPY_SSYSV +-DSSYSVX=SCIPY_SSYSVX +-DSSYSWAPR=SCIPY_SSYSWAPR +-DSSYTD2=SCIPY_SSYTD2 +-DSSYTF2=SCIPY_SSYTF2 +-DSSYTRD=SCIPY_SSYTRD +-DSSYTRF=SCIPY_SSYTRF +-DSSYTRI=SCIPY_SSYTRI +-DSSYTRI2=SCIPY_SSYTRI2 +-DSSYTRI2X=SCIPY_SSYTRI2X +-DSSYTRS=SCIPY_SSYTRS +-DSSYTRS2=SCIPY_SSYTRS2 +-DSTBCON=SCIPY_STBCON +-DSTBRFS=SCIPY_STBRFS +-DSTBTRS=SCIPY_STBTRS +-DSTFSM=SCIPY_STFSM +-DSTFTRI=SCIPY_STFTRI +-DSTFTTP=SCIPY_STFTTP +-DSTFTTR=SCIPY_STFTTR +-DSTGEVC=SCIPY_STGEVC +-DSTGEX2=SCIPY_STGEX2 +-DSTGEXC=SCIPY_STGEXC +-DSTGSEN=SCIPY_STGSEN +-DSTGSJA=SCIPY_STGSJA +-DSTGSNA=SCIPY_STGSNA +-DSTGSY2=SCIPY_STGSY2 +-DSTGSYL=SCIPY_STGSYL +-DSTPCON=SCIPY_STPCON +-DSTPMQRT=SCIPY_STPMQRT +-DSTPQRT=SCIPY_STPQRT +-DSTPQRT2=SCIPY_STPQRT2 +-DSTPRFB=SCIPY_STPRFB +-DSTPRFS=SCIPY_STPRFS +-DSTPTRI=SCIPY_STPTRI +-DSTPTRS=SCIPY_STPTRS +-DSTPTTF=SCIPY_STPTTF +-DSTPTTR=SCIPY_STPTTR +-DSTRCON=SCIPY_STRCON +-DSTREVC=SCIPY_STREVC +-DSTREXC=SCIPY_STREXC +-DSTRRFS=SCIPY_STRRFS +-DSTRSEN=SCIPY_STRSEN +-DSTRSNA=SCIPY_STRSNA +-DSTRSYL=SCIPY_STRSYL +-DSTRTI2=SCIPY_STRTI2 +-DSTRTRI=SCIPY_STRTRI +-DSTRTRS=SCIPY_STRTRS +-DSTRTTF=SCIPY_STRTTF +-DSTRTTP=SCIPY_STRTTP +-DSTZRZF=SCIPY_STZRZF +-DXERBLA_ARRAY=SCIPY_XERBLA_ARRAY +-DZBBCSD=SCIPY_ZBBCSD +-DZBDSQR=SCIPY_ZBDSQR +-DZCGESV=SCIPY_ZCGESV +-DZCPOSV=SCIPY_ZCPOSV +-DZDRSCL=SCIPY_ZDRSCL +-DZGBBRD=SCIPY_ZGBBRD +-DZGBCON=SCIPY_ZGBCON +-DZGBEQU=SCIPY_ZGBEQU +-DZGBEQUB=SCIPY_ZGBEQUB +-DZGBRFS=SCIPY_ZGBRFS +-DZGBSV=SCIPY_ZGBSV +-DZGBSVX=SCIPY_ZGBSVX +-DZGBTF2=SCIPY_ZGBTF2 +-DZGBTRF=SCIPY_ZGBTRF +-DZGBTRS=SCIPY_ZGBTRS +-DZGEBAK=SCIPY_ZGEBAK +-DZGEBAL=SCIPY_ZGEBAL +-DZGEBD2=SCIPY_ZGEBD2 +-DZGEBRD=SCIPY_ZGEBRD +-DZGECON=SCIPY_ZGECON +-DZGEEQU=SCIPY_ZGEEQU +-DZGEEQUB=SCIPY_ZGEEQUB +-DZGEES=SCIPY_ZGEES +-DZGEESX=SCIPY_ZGEESX +-DZGEEV=SCIPY_ZGEEV +-DZGEEVX=SCIPY_ZGEEVX +-DZGEHD2=SCIPY_ZGEHD2 +-DZGEHRD=SCIPY_ZGEHRD +-DZGELQ2=SCIPY_ZGELQ2 +-DZGELQF=SCIPY_ZGELQF +-DZGELS=SCIPY_ZGELS +-DZGELSD=SCIPY_ZGELSD +-DZGELSS=SCIPY_ZGELSS +-DZGELSY=SCIPY_ZGELSY +-DZGEMQRT=SCIPY_ZGEMQRT +-DZGEQL2=SCIPY_ZGEQL2 +-DZGEQLF=SCIPY_ZGEQLF +-DZGEQP3=SCIPY_ZGEQP3 +-DZGEQR2=SCIPY_ZGEQR2 +-DZGEQR2P=SCIPY_ZGEQR2P +-DZGEQRF=SCIPY_ZGEQRF +-DZGEQRFP=SCIPY_ZGEQRFP +-DZGEQRT=SCIPY_ZGEQRT +-DZGEQRT2=SCIPY_ZGEQRT2 +-DZGEQRT3=SCIPY_ZGEQRT3 +-DZGERFS=SCIPY_ZGERFS +-DZGERQ2=SCIPY_ZGERQ2 +-DZGERQF=SCIPY_ZGERQF +-DZGESC2=SCIPY_ZGESC2 +-DZGESDD=SCIPY_ZGESDD +-DZGESV=SCIPY_ZGESV +-DZGESVD=SCIPY_ZGESVD +-DZGESVX=SCIPY_ZGESVX +-DZGETC2=SCIPY_ZGETC2 +-DZGETF2=SCIPY_ZGETF2 +-DZGETRF=SCIPY_ZGETRF +-DZGETRI=SCIPY_ZGETRI +-DZGETRS=SCIPY_ZGETRS +-DZGGBAK=SCIPY_ZGGBAK +-DZGGBAL=SCIPY_ZGGBAL +-DZGGES=SCIPY_ZGGES +-DZGGESX=SCIPY_ZGGESX +-DZGGEV=SCIPY_ZGGEV +-DZGGEVX=SCIPY_ZGGEVX +-DZGGGLM=SCIPY_ZGGGLM +-DZGGHRD=SCIPY_ZGGHRD +-DZGGLSE=SCIPY_ZGGLSE +-DZGGQRF=SCIPY_ZGGQRF +-DZGGRQF=SCIPY_ZGGRQF +-DZGTCON=SCIPY_ZGTCON +-DZGTRFS=SCIPY_ZGTRFS +-DZGTSV=SCIPY_ZGTSV +-DZGTSVX=SCIPY_ZGTSVX +-DZGTTRF=SCIPY_ZGTTRF +-DZGTTRS=SCIPY_ZGTTRS +-DZGTTS2=SCIPY_ZGTTS2 +-DZHBEV=SCIPY_ZHBEV +-DZHBEVD=SCIPY_ZHBEVD +-DZHBEVX=SCIPY_ZHBEVX +-DZHBGST=SCIPY_ZHBGST +-DZHBGV=SCIPY_ZHBGV +-DZHBGVD=SCIPY_ZHBGVD +-DZHBGVX=SCIPY_ZHBGVX +-DZHBTRD=SCIPY_ZHBTRD +-DZHECON=SCIPY_ZHECON +-DZHEEQUB=SCIPY_ZHEEQUB +-DZHEEV=SCIPY_ZHEEV +-DZHEEVD=SCIPY_ZHEEVD +-DZHEEVR=SCIPY_ZHEEVR +-DZHEEVX=SCIPY_ZHEEVX +-DZHEGS2=SCIPY_ZHEGS2 +-DZHEGST=SCIPY_ZHEGST +-DZHEGV=SCIPY_ZHEGV +-DZHEGVD=SCIPY_ZHEGVD +-DZHEGVX=SCIPY_ZHEGVX +-DZHERFS=SCIPY_ZHERFS +-DZHESV=SCIPY_ZHESV +-DZHESVX=SCIPY_ZHESVX +-DZHESWAPR=SCIPY_ZHESWAPR +-DZHETD2=SCIPY_ZHETD2 +-DZHETF2=SCIPY_ZHETF2 +-DZHETRD=SCIPY_ZHETRD +-DZHETRF=SCIPY_ZHETRF +-DZHETRI=SCIPY_ZHETRI +-DZHETRI2=SCIPY_ZHETRI2 +-DZHETRI2X=SCIPY_ZHETRI2X +-DZHETRS=SCIPY_ZHETRS +-DZHETRS2=SCIPY_ZHETRS2 +-DZHFRK=SCIPY_ZHFRK +-DZHGEQZ=SCIPY_ZHGEQZ +-DZHPCON=SCIPY_ZHPCON +-DZHPEV=SCIPY_ZHPEV +-DZHPEVD=SCIPY_ZHPEVD +-DZHPEVX=SCIPY_ZHPEVX +-DZHPGST=SCIPY_ZHPGST +-DZHPGV=SCIPY_ZHPGV +-DZHPGVD=SCIPY_ZHPGVD +-DZHPGVX=SCIPY_ZHPGVX +-DZHPRFS=SCIPY_ZHPRFS +-DZHPSV=SCIPY_ZHPSV +-DZHPSVX=SCIPY_ZHPSVX +-DZHPTRD=SCIPY_ZHPTRD +-DZHPTRF=SCIPY_ZHPTRF +-DZHPTRI=SCIPY_ZHPTRI +-DZHPTRS=SCIPY_ZHPTRS +-DZHSEIN=SCIPY_ZHSEIN +-DZHSEQR=SCIPY_ZHSEQR +-DZLABRD=SCIPY_ZLABRD +-DZLACGV=SCIPY_ZLACGV +-DZLACN2=SCIPY_ZLACN2 +-DZLACON=SCIPY_ZLACON +-DZLACP2=SCIPY_ZLACP2 +-DZLACPY=SCIPY_ZLACPY +-DZLACRM=SCIPY_ZLACRM +-DZLACRT=SCIPY_ZLACRT +-DZLADIV=SCIPY_ZLADIV +-DZLAED0=SCIPY_ZLAED0 +-DZLAED7=SCIPY_ZLAED7 +-DZLAED8=SCIPY_ZLAED8 +-DZLAEIN=SCIPY_ZLAEIN +-DZLAESY=SCIPY_ZLAESY +-DZLAEV2=SCIPY_ZLAEV2 +-DZLAG2C=SCIPY_ZLAG2C +-DZLAGS2=SCIPY_ZLAGS2 +-DZLAGTM=SCIPY_ZLAGTM +-DZLAHEF=SCIPY_ZLAHEF +-DZLAHQR=SCIPY_ZLAHQR +-DZLAHR2=SCIPY_ZLAHR2 +-DZLAIC1=SCIPY_ZLAIC1 +-DZLALS0=SCIPY_ZLALS0 +-DZLALSA=SCIPY_ZLALSA +-DZLALSD=SCIPY_ZLALSD +-DZLANGB=SCIPY_ZLANGB +-DZLANGE=SCIPY_ZLANGE +-DZLANGT=SCIPY_ZLANGT +-DZLANHB=SCIPY_ZLANHB +-DZLANHE=SCIPY_ZLANHE +-DZLANHF=SCIPY_ZLANHF +-DZLANHP=SCIPY_ZLANHP +-DZLANHS=SCIPY_ZLANHS +-DZLANHT=SCIPY_ZLANHT +-DZLANSB=SCIPY_ZLANSB +-DZLANSP=SCIPY_ZLANSP +-DZLANSY=SCIPY_ZLANSY +-DZLANTB=SCIPY_ZLANTB +-DZLANTP=SCIPY_ZLANTP +-DZLANTR=SCIPY_ZLANTR +-DZLAPLL=SCIPY_ZLAPLL +-DZLAPMR=SCIPY_ZLAPMR +-DZLAPMT=SCIPY_ZLAPMT +-DZLAQGB=SCIPY_ZLAQGB +-DZLAQGE=SCIPY_ZLAQGE +-DZLAQHB=SCIPY_ZLAQHB +-DZLAQHE=SCIPY_ZLAQHE +-DZLAQHP=SCIPY_ZLAQHP +-DZLAQP2=SCIPY_ZLAQP2 +-DZLAQPS=SCIPY_ZLAQPS +-DZLAQR0=SCIPY_ZLAQR0 +-DZLAQR1=SCIPY_ZLAQR1 +-DZLAQR2=SCIPY_ZLAQR2 +-DZLAQR3=SCIPY_ZLAQR3 +-DZLAQR4=SCIPY_ZLAQR4 +-DZLAQR5=SCIPY_ZLAQR5 +-DZLAQSB=SCIPY_ZLAQSB +-DZLAQSP=SCIPY_ZLAQSP +-DZLAQSY=SCIPY_ZLAQSY +-DZLAR1V=SCIPY_ZLAR1V +-DZLAR2V=SCIPY_ZLAR2V +-DZLARCM=SCIPY_ZLARCM +-DZLARF=SCIPY_ZLARF +-DZLARFB=SCIPY_ZLARFB +-DZLARFG=SCIPY_ZLARFG +-DZLARFGP=SCIPY_ZLARFGP +-DZLARFT=SCIPY_ZLARFT +-DZLARFX=SCIPY_ZLARFX +-DZLARGV=SCIPY_ZLARGV +-DZLARNV=SCIPY_ZLARNV +-DZLARRV=SCIPY_ZLARRV +-DZLARTG=SCIPY_ZLARTG +-DZLARTV=SCIPY_ZLARTV +-DZLARZ=SCIPY_ZLARZ +-DZLARZB=SCIPY_ZLARZB +-DZLARZT=SCIPY_ZLARZT +-DZLASCL=SCIPY_ZLASCL +-DZLASET=SCIPY_ZLASET +-DZLASR=SCIPY_ZLASR +-DZLASSQ=SCIPY_ZLASSQ +-DZLASWP=SCIPY_ZLASWP +-DZLASYF=SCIPY_ZLASYF +-DZLAT2C=SCIPY_ZLAT2C +-DZLATBS=SCIPY_ZLATBS +-DZLATDF=SCIPY_ZLATDF +-DZLATPS=SCIPY_ZLATPS +-DZLATRD=SCIPY_ZLATRD +-DZLATRS=SCIPY_ZLATRS +-DZLATRZ=SCIPY_ZLATRZ +-DZLAUU2=SCIPY_ZLAUU2 +-DZLAUUM=SCIPY_ZLAUUM +-DZPBCON=SCIPY_ZPBCON +-DZPBEQU=SCIPY_ZPBEQU +-DZPBRFS=SCIPY_ZPBRFS +-DZPBSTF=SCIPY_ZPBSTF +-DZPBSV=SCIPY_ZPBSV +-DZPBSVX=SCIPY_ZPBSVX +-DZPBTF2=SCIPY_ZPBTF2 +-DZPBTRF=SCIPY_ZPBTRF +-DZPBTRS=SCIPY_ZPBTRS +-DZPFTRF=SCIPY_ZPFTRF +-DZPFTRI=SCIPY_ZPFTRI +-DZPFTRS=SCIPY_ZPFTRS +-DZPOCON=SCIPY_ZPOCON +-DZPOEQU=SCIPY_ZPOEQU +-DZPOEQUB=SCIPY_ZPOEQUB +-DZPORFS=SCIPY_ZPORFS +-DZPOSV=SCIPY_ZPOSV +-DZPOSVX=SCIPY_ZPOSVX +-DZPOTF2=SCIPY_ZPOTF2 +-DZPOTRF=SCIPY_ZPOTRF +-DZPOTRI=SCIPY_ZPOTRI +-DZPOTRS=SCIPY_ZPOTRS +-DZPPCON=SCIPY_ZPPCON +-DZPPEQU=SCIPY_ZPPEQU +-DZPPRFS=SCIPY_ZPPRFS +-DZPPSV=SCIPY_ZPPSV +-DZPPSVX=SCIPY_ZPPSVX +-DZPPTRF=SCIPY_ZPPTRF +-DZPPTRI=SCIPY_ZPPTRI +-DZPPTRS=SCIPY_ZPPTRS +-DZPSTF2=SCIPY_ZPSTF2 +-DZPSTRF=SCIPY_ZPSTRF +-DZPTCON=SCIPY_ZPTCON +-DZPTEQR=SCIPY_ZPTEQR +-DZPTRFS=SCIPY_ZPTRFS +-DZPTSV=SCIPY_ZPTSV +-DZPTSVX=SCIPY_ZPTSVX +-DZPTTRF=SCIPY_ZPTTRF +-DZPTTRS=SCIPY_ZPTTRS +-DZPTTS2=SCIPY_ZPTTS2 +-DZROT=SCIPY_ZROT +-DZSPCON=SCIPY_ZSPCON +-DZSPMV=SCIPY_ZSPMV +-DZSPR=SCIPY_ZSPR +-DZSPRFS=SCIPY_ZSPRFS +-DZSPSV=SCIPY_ZSPSV +-DZSPSVX=SCIPY_ZSPSVX +-DZSPTRF=SCIPY_ZSPTRF +-DZSPTRI=SCIPY_ZSPTRI +-DZSPTRS=SCIPY_ZSPTRS +-DZSTEDC=SCIPY_ZSTEDC +-DZSTEGR=SCIPY_ZSTEGR +-DZSTEIN=SCIPY_ZSTEIN +-DZSTEMR=SCIPY_ZSTEMR +-DZSTEQR=SCIPY_ZSTEQR +-DZSYCON=SCIPY_ZSYCON +-DZSYCONV=SCIPY_ZSYCONV +-DZSYEQUB=SCIPY_ZSYEQUB +-DZSYMV=SCIPY_ZSYMV +-DZSYR=SCIPY_ZSYR +-DZSYRFS=SCIPY_ZSYRFS +-DZSYSV=SCIPY_ZSYSV +-DZSYSVX=SCIPY_ZSYSVX +-DZSYSWAPR=SCIPY_ZSYSWAPR +-DZSYTF2=SCIPY_ZSYTF2 +-DZSYTRF=SCIPY_ZSYTRF +-DZSYTRI=SCIPY_ZSYTRI +-DZSYTRI2=SCIPY_ZSYTRI2 +-DZSYTRI2X=SCIPY_ZSYTRI2X +-DZSYTRS=SCIPY_ZSYTRS +-DZSYTRS2=SCIPY_ZSYTRS2 +-DZTBCON=SCIPY_ZTBCON +-DZTBRFS=SCIPY_ZTBRFS +-DZTBTRS=SCIPY_ZTBTRS +-DZTFSM=SCIPY_ZTFSM +-DZTFTRI=SCIPY_ZTFTRI +-DZTFTTP=SCIPY_ZTFTTP +-DZTFTTR=SCIPY_ZTFTTR +-DZTGEVC=SCIPY_ZTGEVC +-DZTGEX2=SCIPY_ZTGEX2 +-DZTGEXC=SCIPY_ZTGEXC +-DZTGSEN=SCIPY_ZTGSEN +-DZTGSJA=SCIPY_ZTGSJA +-DZTGSNA=SCIPY_ZTGSNA +-DZTGSY2=SCIPY_ZTGSY2 +-DZTGSYL=SCIPY_ZTGSYL +-DZTPCON=SCIPY_ZTPCON +-DZTPMQRT=SCIPY_ZTPMQRT +-DZTPQRT=SCIPY_ZTPQRT +-DZTPQRT2=SCIPY_ZTPQRT2 +-DZTPRFB=SCIPY_ZTPRFB +-DZTPRFS=SCIPY_ZTPRFS +-DZTPTRI=SCIPY_ZTPTRI +-DZTPTRS=SCIPY_ZTPTRS +-DZTPTTF=SCIPY_ZTPTTF +-DZTPTTR=SCIPY_ZTPTTR +-DZTRCON=SCIPY_ZTRCON +-DZTREVC=SCIPY_ZTREVC +-DZTREXC=SCIPY_ZTREXC +-DZTRRFS=SCIPY_ZTRRFS +-DZTRSEN=SCIPY_ZTRSEN +-DZTRSNA=SCIPY_ZTRSNA +-DZTRSYL=SCIPY_ZTRSYL +-DZTRTI2=SCIPY_ZTRTI2 +-DZTRTRI=SCIPY_ZTRTRI +-DZTRTRS=SCIPY_ZTRTRS +-DZTRTTF=SCIPY_ZTRTTF +-DZTRTTP=SCIPY_ZTRTTP +-DZTZRZF=SCIPY_ZTZRZF +-DZUNBDB=SCIPY_ZUNBDB +-DZUNCSD=SCIPY_ZUNCSD +-DZUNG2L=SCIPY_ZUNG2L +-DZUNG2R=SCIPY_ZUNG2R +-DZUNGBR=SCIPY_ZUNGBR +-DZUNGHR=SCIPY_ZUNGHR +-DZUNGL2=SCIPY_ZUNGL2 +-DZUNGLQ=SCIPY_ZUNGLQ +-DZUNGQL=SCIPY_ZUNGQL +-DZUNGQR=SCIPY_ZUNGQR +-DZUNGR2=SCIPY_ZUNGR2 +-DZUNGRQ=SCIPY_ZUNGRQ +-DZUNGTR=SCIPY_ZUNGTR +-DZUNM2L=SCIPY_ZUNM2L +-DZUNM2R=SCIPY_ZUNM2R +-DZUNMBR=SCIPY_ZUNMBR +-DZUNMHR=SCIPY_ZUNMHR +-DZUNML2=SCIPY_ZUNML2 +-DZUNMLQ=SCIPY_ZUNMLQ +-DZUNMQL=SCIPY_ZUNMQL +-DZUNMQR=SCIPY_ZUNMQR +-DZUNMR2=SCIPY_ZUNMR2 +-DZUNMR3=SCIPY_ZUNMR3 +-DZUNMRQ=SCIPY_ZUNMRQ +-DZUNMRZ=SCIPY_ZUNMRZ +-DZUNMTR=SCIPY_ZUNMTR +-DZUPGTR=SCIPY_ZUPGTR +-DZUPMTR=SCIPY_ZUPMTR +-DDLAMC3=SCIPY_DLAMC3 +-DSISNAN=SCIPY_SISNAN +-DDLAISNAN=SCIPY_DLAISNAN +-DSLAISNAN=SCIPY_SLAISNAN +-DSLANEG=SCIPY_SLANEG +-DILAENV=SCIPY_ILAENV +-DIPARMQ=SCIPY_IPARMQ +-DLSAMEN=SCIPY_LSAMEN +-DCGESVXX=SCIPY_CGESVXX +-DDGESVXX=SCIPY_DGESVXX +-DSGESVXX=SCIPY_SGESVXX +-DZGESVXX=SCIPY_ZGESVXX +-DCGERFSX=SCIPY_CGERFSX +-DDGERFSX=SCIPY_DGERFSX +-DSGERFSX=SCIPY_SGERFSX +-DZGERFSX=SCIPY_ZGERFSX +-DCLA_GERFSX_EXTENDED=SCIPY_CLA_GERFSX_EXTENDED +-DDLA_GERFSX_EXTENDED=SCIPY_DLA_GERFSX_EXTENDED +-DSLA_GERFSX_EXTENDED=SCIPY_SLA_GERFSX_EXTENDED +-DZLA_GERFSX_EXTENDED=SCIPY_ZLA_GERFSX_EXTENDED +-DCLA_GEAMV=SCIPY_CLA_GEAMV +-DDLA_GEAMV=SCIPY_DLA_GEAMV +-DSLA_GEAMV=SCIPY_SLA_GEAMV +-DZLA_GEAMV=SCIPY_ZLA_GEAMV +-DDLA_GERCOND=SCIPY_DLA_GERCOND +-DSLA_GERCOND=SCIPY_SLA_GERCOND +-DCLA_GERCOND_C=SCIPY_CLA_GERCOND_C +-DZLA_GERCOND_C=SCIPY_ZLA_GERCOND_C +-DCLA_GERCOND_X=SCIPY_CLA_GERCOND_X +-DZLA_GERCOND_X=SCIPY_ZLA_GERCOND_X +-DCLA_GERPVGRW=SCIPY_CLA_GERPVGRW +-DDLA_GERPVGRW=SCIPY_DLA_GERPVGRW +-DSLA_GERPVGRW=SCIPY_SLA_GERPVGRW +-DZLA_GERPVGRW=SCIPY_ZLA_GERPVGRW +-DCSYSVXX=SCIPY_CSYSVXX +-DDSYSVXX=SCIPY_DSYSVXX +-DSSYSVXX=SCIPY_SSYSVXX +-DZSYSVXX=SCIPY_ZSYSVXX +-DCSYRFSX=SCIPY_CSYRFSX +-DDSYRFSX=SCIPY_DSYRFSX +-DSSYRFSX=SCIPY_SSYRFSX +-DZSYRFSX=SCIPY_ZSYRFSX +-DCLA_SYRFSX_EXTENDED=SCIPY_CLA_SYRFSX_EXTENDED +-DDLA_SYRFSX_EXTENDED=SCIPY_DLA_SYRFSX_EXTENDED +-DSLA_SYRFSX_EXTENDED=SCIPY_SLA_SYRFSX_EXTENDED +-DZLA_SYRFSX_EXTENDED=SCIPY_ZLA_SYRFSX_EXTENDED +-DCLA_SYAMV=SCIPY_CLA_SYAMV +-DDLA_SYAMV=SCIPY_DLA_SYAMV +-DSLA_SYAMV=SCIPY_SLA_SYAMV +-DZLA_SYAMV=SCIPY_ZLA_SYAMV +-DDLA_SYRCOND=SCIPY_DLA_SYRCOND +-DSLA_SYRCOND=SCIPY_SLA_SYRCOND +-DCLA_SYRCOND_C=SCIPY_CLA_SYRCOND_C +-DZLA_SYRCOND_C=SCIPY_ZLA_SYRCOND_C +-DCLA_SYRCOND_X=SCIPY_CLA_SYRCOND_X +-DZLA_SYRCOND_X=SCIPY_ZLA_SYRCOND_X +-DCLA_SYRPVGRW=SCIPY_CLA_SYRPVGRW +-DDLA_SYRPVGRW=SCIPY_DLA_SYRPVGRW +-DSLA_SYRPVGRW=SCIPY_SLA_SYRPVGRW +-DZLA_SYRPVGRW=SCIPY_ZLA_SYRPVGRW +-DCPOSVXX=SCIPY_CPOSVXX +-DDPOSVXX=SCIPY_DPOSVXX +-DSPOSVXX=SCIPY_SPOSVXX +-DZPOSVXX=SCIPY_ZPOSVXX +-DCPORFSX=SCIPY_CPORFSX +-DDPORFSX=SCIPY_DPORFSX +-DSPORFSX=SCIPY_SPORFSX +-DZPORFSX=SCIPY_ZPORFSX +-DCLA_PORFSX_EXTENDED=SCIPY_CLA_PORFSX_EXTENDED +-DDLA_PORFSX_EXTENDED=SCIPY_DLA_PORFSX_EXTENDED +-DSLA_PORFSX_EXTENDED=SCIPY_SLA_PORFSX_EXTENDED +-DZLA_PORFSX_EXTENDED=SCIPY_ZLA_PORFSX_EXTENDED +-DDLA_PORCOND=SCIPY_DLA_PORCOND +-DSLA_PORCOND=SCIPY_SLA_PORCOND +-DCLA_PORCOND_C=SCIPY_CLA_PORCOND_C +-DZLA_PORCOND_C=SCIPY_ZLA_PORCOND_C +-DCLA_PORCOND_X=SCIPY_CLA_PORCOND_X +-DZLA_PORCOND_X=SCIPY_ZLA_PORCOND_X +-DCLA_PORPVGRW=SCIPY_CLA_PORPVGRW +-DDLA_PORPVGRW=SCIPY_DLA_PORPVGRW +-DSLA_PORPVGRW=SCIPY_SLA_PORPVGRW +-DZLA_PORPVGRW=SCIPY_ZLA_PORPVGRW +-DCGBSVXX=SCIPY_CGBSVXX +-DDGBSVXX=SCIPY_DGBSVXX +-DSGBSVXX=SCIPY_SGBSVXX +-DZGBSVXX=SCIPY_ZGBSVXX +-DCGBRFSX=SCIPY_CGBRFSX +-DDGBRFSX=SCIPY_DGBRFSX +-DSGBRFSX=SCIPY_SGBRFSX +-DZGBRFSX=SCIPY_ZGBRFSX +-DCLA_GBRFSX_EXTENDED=SCIPY_CLA_GBRFSX_EXTENDED +-DDLA_GBRFSX_EXTENDED=SCIPY_DLA_GBRFSX_EXTENDED +-DSLA_GBRFSX_EXTENDED=SCIPY_SLA_GBRFSX_EXTENDED +-DZLA_GBRFSX_EXTENDED=SCIPY_ZLA_GBRFSX_EXTENDED +-DCLA_GBAMV=SCIPY_CLA_GBAMV +-DDLA_GBAMV=SCIPY_DLA_GBAMV +-DSLA_GBAMV=SCIPY_SLA_GBAMV +-DZLA_GBAMV=SCIPY_ZLA_GBAMV +-DDLA_GBRCOND=SCIPY_DLA_GBRCOND +-DSLA_GBRCOND=SCIPY_SLA_GBRCOND +-DCLA_GBRCOND_C=SCIPY_CLA_GBRCOND_C +-DZLA_GBRCOND_C=SCIPY_ZLA_GBRCOND_C +-DCLA_GBRCOND_X=SCIPY_CLA_GBRCOND_X +-DZLA_GBRCOND_X=SCIPY_ZLA_GBRCOND_X +-DCLA_GBRPVGRW=SCIPY_CLA_GBRPVGRW +-DDLA_GBRPVGRW=SCIPY_DLA_GBRPVGRW +-DSLA_GBRPVGRW=SCIPY_SLA_GBRPVGRW +-DZLA_GBRPVGRW=SCIPY_ZLA_GBRPVGRW +-DCHESVXX=SCIPY_CHESVXX +-DZHESVXX=SCIPY_ZHESVXX +-DCHERFSX=SCIPY_CHERFSX +-DZHERFSX=SCIPY_ZHERFSX +-DCLA_HERFSX_EXTENDED=SCIPY_CLA_HERFSX_EXTENDED +-DZLA_HERFSX_EXTENDED=SCIPY_ZLA_HERFSX_EXTENDED +-DCLA_HEAMV=SCIPY_CLA_HEAMV +-DZLA_HEAMV=SCIPY_ZLA_HEAMV +-DCLA_HERCOND_C=SCIPY_CLA_HERCOND_C +-DZLA_HERCOND_C=SCIPY_ZLA_HERCOND_C +-DCLA_HERCOND_X=SCIPY_CLA_HERCOND_X +-DZLA_HERCOND_X=SCIPY_ZLA_HERCOND_X +-DCLA_HERPVGRW=SCIPY_CLA_HERPVGRW +-DZLA_HERPVGRW=SCIPY_ZLA_HERPVGRW +-DSLA_LIN_BERR=SCIPY_SLA_LIN_BERR +-DCLA_LIN_BERR=SCIPY_CLA_LIN_BERR +-DDLA_LIN_BERR=SCIPY_DLA_LIN_BERR +-DZLA_LIN_BERR=SCIPY_ZLA_LIN_BERR +-DCLARSCL2=SCIPY_CLARSCL2 +-DDLARSCL2=SCIPY_DLARSCL2 +-DSLARSCL2=SCIPY_SLARSCL2 +-DZLARSCL2=SCIPY_ZLARSCL2 +-DCLASCL2=SCIPY_CLASCL2 +-DDLASCL2=SCIPY_DLASCL2 +-DSLASCL2=SCIPY_SLASCL2 +-DZLASCL2=SCIPY_ZLASCL2 +-DCLA_WWADDW=SCIPY_CLA_WWADDW +-DDLA_WWADDW=SCIPY_DLA_WWADDW +-DSLA_WWADDW=SCIPY_SLA_WWADDW +-DZLA_WWADDW=SCIPY_ZLA_WWADDW diff --git a/slycot/slicot-source.cmake b/slycot/slicot-source.cmake new file mode 100644 index 00000000..1b8ce182 --- /dev/null +++ b/slycot/slicot-source.cmake @@ -0,0 +1,629 @@ +set(SLICOT_FSOURCE + +src/SLICOT-Reference/src/AB01MD.f +src/SLICOT-Reference/src/AB01ND.f +src/SLICOT-Reference/src/AB01OD.f +src/SLICOT-Reference/src/AB04MD.f +src/SLICOT-Reference/src/AB05MD.f +src/SLICOT-Reference/src/AB05ND.f +src/SLICOT-Reference/src/AB05OD.f +src/SLICOT-Reference/src/AB05PD.f +src/SLICOT-Reference/src/AB05QD.f +src/SLICOT-Reference/src/AB05RD.f +src/SLICOT-Reference/src/AB05SD.f +src/SLICOT-Reference/src/AB07MD.f +src/SLICOT-Reference/src/AB07ND.f +src/SLICOT-Reference/src/AB08MD.f +src/SLICOT-Reference/src/AB08MZ.f +src/SLICOT-Reference/src/AB08ND.f +src/SLICOT-Reference/src/AB08NW.f +src/SLICOT-Reference/src/AB08NX.f +src/SLICOT-Reference/src/AB08NY.f +src/SLICOT-Reference/src/AB08NZ.f +src/SLICOT-Reference/src/AB09AD.f +src/SLICOT-Reference/src/AB09AX.f +src/SLICOT-Reference/src/AB09BD.f +src/SLICOT-Reference/src/AB09BX.f +src/SLICOT-Reference/src/AB09CD.f +src/SLICOT-Reference/src/AB09CX.f +src/SLICOT-Reference/src/AB09DD.f +src/SLICOT-Reference/src/AB09ED.f +src/SLICOT-Reference/src/AB09FD.f +src/SLICOT-Reference/src/AB09GD.f +src/SLICOT-Reference/src/AB09HD.f +src/SLICOT-Reference/src/AB09HX.f +src/SLICOT-Reference/src/AB09HY.f +src/SLICOT-Reference/src/AB09ID.f +src/SLICOT-Reference/src/AB09IX.f +src/SLICOT-Reference/src/AB09IY.f +src/SLICOT-Reference/src/AB09JD.f +src/SLICOT-Reference/src/AB09JV.f +src/SLICOT-Reference/src/AB09JW.f +src/SLICOT-Reference/src/AB09JX.f +src/SLICOT-Reference/src/AB09KD.f +src/SLICOT-Reference/src/AB09KX.f +src/SLICOT-Reference/src/AB09MD.f +src/SLICOT-Reference/src/AB09ND.f +src/SLICOT-Reference/src/AB13AD.f +src/SLICOT-Reference/src/AB13AX.f +src/SLICOT-Reference/src/AB13BD.f +src/SLICOT-Reference/src/AB13CD.f +src/SLICOT-Reference/src/AB13DD.f +src/SLICOT-Reference/src/AB13DX.f +src/SLICOT-Reference/src/AB13ED.f +src/SLICOT-Reference/src/AB13FD.f +src/SLICOT-Reference/src/AB13HD.f +src/SLICOT-Reference/src/AB13ID.f +src/SLICOT-Reference/src/AB13MD.f +src/SLICOT-Reference/src/AB8NXZ.f +src/SLICOT-Reference/src/AG07BD.f +src/SLICOT-Reference/src/AG08BD.f +src/SLICOT-Reference/src/AG08BY.f +src/SLICOT-Reference/src/AG08BZ.f +src/SLICOT-Reference/src/AG8BYZ.f +src/SLICOT-Reference/src/BB01AD.f +src/SLICOT-Reference/src/BB02AD.f +src/SLICOT-Reference/src/BB03AD.f +src/SLICOT-Reference/src/BB04AD.f +src/SLICOT-Reference/src/BD01AD.f +src/SLICOT-Reference/src/BD02AD.f +src/SLICOT-Reference/src/DE01OD.f +src/SLICOT-Reference/src/DE01PD.f +src/SLICOT-Reference/src/DF01MD.f +src/SLICOT-Reference/src/DG01MD.f +src/SLICOT-Reference/src/DG01ND.f +src/SLICOT-Reference/src/DG01NY.f +src/SLICOT-Reference/src/DG01OD.f +src/SLICOT-Reference/src/DK01MD.f +src/SLICOT-Reference/src/FB01QD.f +src/SLICOT-Reference/src/FB01RD.f +src/SLICOT-Reference/src/FB01SD.f +src/SLICOT-Reference/src/FB01TD.f +src/SLICOT-Reference/src/FB01VD.f +src/SLICOT-Reference/src/FD01AD.f +src/SLICOT-Reference/src/IB01AD.f +src/SLICOT-Reference/src/IB01BD.f +src/SLICOT-Reference/src/IB01CD.f +src/SLICOT-Reference/src/IB01MD.f +src/SLICOT-Reference/src/IB01MY.f +src/SLICOT-Reference/src/IB01ND.f +src/SLICOT-Reference/src/IB01OD.f +src/SLICOT-Reference/src/IB01OY.f +src/SLICOT-Reference/src/IB01PD.f +src/SLICOT-Reference/src/IB01PX.f +src/SLICOT-Reference/src/IB01PY.f +src/SLICOT-Reference/src/IB01QD.f +src/SLICOT-Reference/src/IB01RD.f +src/SLICOT-Reference/src/IB03AD.f +src/SLICOT-Reference/src/IB03BD.f +src/SLICOT-Reference/src/MA01AD.f +src/SLICOT-Reference/src/MA01BD.f +src/SLICOT-Reference/src/MA01BZ.f +src/SLICOT-Reference/src/MA01CD.f +src/SLICOT-Reference/src/MA01DD.f +src/SLICOT-Reference/src/MA01DZ.f +src/SLICOT-Reference/src/MA02AD.f +src/SLICOT-Reference/src/MA02AZ.f +src/SLICOT-Reference/src/MA02BD.f +src/SLICOT-Reference/src/MA02BZ.f +src/SLICOT-Reference/src/MA02CD.f +src/SLICOT-Reference/src/MA02CZ.f +src/SLICOT-Reference/src/MA02DD.f +src/SLICOT-Reference/src/MA02ED.f +src/SLICOT-Reference/src/MA02ES.f +src/SLICOT-Reference/src/MA02EZ.f +src/SLICOT-Reference/src/MA02FD.f +src/SLICOT-Reference/src/MA02GD.f +src/SLICOT-Reference/src/MA02GZ.f +src/SLICOT-Reference/src/MA02HD.f +src/SLICOT-Reference/src/MA02HZ.f +src/SLICOT-Reference/src/MA02ID.f +src/SLICOT-Reference/src/MA02IZ.f +src/SLICOT-Reference/src/MA02JD.f +src/SLICOT-Reference/src/MA02JZ.f +src/SLICOT-Reference/src/MA02MD.f +src/SLICOT-Reference/src/MA02MZ.f +src/SLICOT-Reference/src/MA02NZ.f +src/SLICOT-Reference/src/MA02OD.f +src/SLICOT-Reference/src/MA02OZ.f +src/SLICOT-Reference/src/MA02PD.f +src/SLICOT-Reference/src/MA02PZ.f +src/SLICOT-Reference/src/MA02RD.f +src/SLICOT-Reference/src/MA02SD.f +src/SLICOT-Reference/src/MB01KD.f +src/SLICOT-Reference/src/MB01LD.f +src/SLICOT-Reference/src/MB01MD.f +src/SLICOT-Reference/src/MB01ND.f +src/SLICOT-Reference/src/MB01OC.f +src/SLICOT-Reference/src/MB01OD.f +src/SLICOT-Reference/src/MB01OE.f +src/SLICOT-Reference/src/MB01OH.f +src/SLICOT-Reference/src/MB01OO.f +src/SLICOT-Reference/src/MB01OS.f +src/SLICOT-Reference/src/MB01OT.f +src/SLICOT-Reference/src/MB01PD.f +src/SLICOT-Reference/src/MB01QD.f +src/SLICOT-Reference/src/MB01RB.f +src/SLICOT-Reference/src/MB01RD.f +src/SLICOT-Reference/src/MB01RH.f +src/SLICOT-Reference/src/MB01RT.f +src/SLICOT-Reference/src/MB01RU.f +src/SLICOT-Reference/src/MB01RW.f +src/SLICOT-Reference/src/MB01RX.f +src/SLICOT-Reference/src/MB01RY.f +src/SLICOT-Reference/src/MB01SD.f +src/SLICOT-Reference/src/MB01SS.f +src/SLICOT-Reference/src/MB01TD.f +src/SLICOT-Reference/src/MB01UD.f +src/SLICOT-Reference/src/MB01UW.f +src/SLICOT-Reference/src/MB01UX.f +src/SLICOT-Reference/src/MB01UY.f +src/SLICOT-Reference/src/MB01UZ.f +src/SLICOT-Reference/src/MB01VD.f +src/SLICOT-Reference/src/MB01WD.f +src/SLICOT-Reference/src/MB01XD.f +src/SLICOT-Reference/src/MB01XY.f +src/SLICOT-Reference/src/MB01YD.f +src/SLICOT-Reference/src/MB01ZD.f +src/SLICOT-Reference/src/MB02CD.f +src/SLICOT-Reference/src/MB02CU.f +src/SLICOT-Reference/src/MB02CV.f +src/SLICOT-Reference/src/MB02CX.f +src/SLICOT-Reference/src/MB02CY.f +src/SLICOT-Reference/src/MB02DD.f +src/SLICOT-Reference/src/MB02ED.f +src/SLICOT-Reference/src/MB02FD.f +src/SLICOT-Reference/src/MB02GD.f +src/SLICOT-Reference/src/MB02HD.f +src/SLICOT-Reference/src/MB02ID.f +src/SLICOT-Reference/src/MB02JD.f +src/SLICOT-Reference/src/MB02JX.f +src/SLICOT-Reference/src/MB02KD.f +src/SLICOT-Reference/src/MB02MD.f +src/SLICOT-Reference/src/MB02ND.f +src/SLICOT-Reference/src/MB02NY.f +src/SLICOT-Reference/src/MB02OD.f +src/SLICOT-Reference/src/MB02PD.f +src/SLICOT-Reference/src/MB02QD.f +src/SLICOT-Reference/src/MB02QY.f +src/SLICOT-Reference/src/MB02RD.f +src/SLICOT-Reference/src/MB02RZ.f +src/SLICOT-Reference/src/MB02SD.f +src/SLICOT-Reference/src/MB02SZ.f +src/SLICOT-Reference/src/MB02TD.f +src/SLICOT-Reference/src/MB02TZ.f +src/SLICOT-Reference/src/MB02UD.f +src/SLICOT-Reference/src/MB02UU.f +src/SLICOT-Reference/src/MB02UV.f +src/SLICOT-Reference/src/MB02UW.f +src/SLICOT-Reference/src/MB02VD.f +src/SLICOT-Reference/src/MB02WD.f +src/SLICOT-Reference/src/MB02XD.f +src/SLICOT-Reference/src/MB02YD.f +src/SLICOT-Reference/src/MB03AB.f +src/SLICOT-Reference/src/MB03AD.f +src/SLICOT-Reference/src/MB03AE.f +src/SLICOT-Reference/src/MB03AF.f +src/SLICOT-Reference/src/MB03AG.f +src/SLICOT-Reference/src/MB03AH.f +src/SLICOT-Reference/src/MB03AI.f +src/SLICOT-Reference/src/MB03BA.f +src/SLICOT-Reference/src/MB03BB.f +src/SLICOT-Reference/src/MB03BC.f +src/SLICOT-Reference/src/MB03BD.f +src/SLICOT-Reference/src/MB03BE.f +src/SLICOT-Reference/src/MB03BF.f +src/SLICOT-Reference/src/MB03BG.f +src/SLICOT-Reference/src/MB03BZ.f +src/SLICOT-Reference/src/MB03CD.f +src/SLICOT-Reference/src/MB03CZ.f +src/SLICOT-Reference/src/MB03DD.f +src/SLICOT-Reference/src/MB03DZ.f +src/SLICOT-Reference/src/MB03ED.f +src/SLICOT-Reference/src/MB03FD.f +src/SLICOT-Reference/src/MB03FZ.f +src/SLICOT-Reference/src/MB03GD.f +src/SLICOT-Reference/src/MB03GZ.f +src/SLICOT-Reference/src/MB03HD.f +src/SLICOT-Reference/src/MB03HZ.f +src/SLICOT-Reference/src/MB03ID.f +src/SLICOT-Reference/src/MB03IZ.f +src/SLICOT-Reference/src/MB03JD.f +src/SLICOT-Reference/src/MB03JP.f +src/SLICOT-Reference/src/MB03JZ.f +src/SLICOT-Reference/src/MB03KA.f +src/SLICOT-Reference/src/MB03KB.f +src/SLICOT-Reference/src/MB03KC.f +src/SLICOT-Reference/src/MB03KD.f +src/SLICOT-Reference/src/MB03KE.f +src/SLICOT-Reference/src/MB03LD.f +src/SLICOT-Reference/src/MB03LF.f +src/SLICOT-Reference/src/MB03LP.f +src/SLICOT-Reference/src/MB03LZ.f +src/SLICOT-Reference/src/MB03MD.f +src/SLICOT-Reference/src/MB03MY.f +src/SLICOT-Reference/src/MB03ND.f +src/SLICOT-Reference/src/MB03NY.f +src/SLICOT-Reference/src/MB03OD.f +src/SLICOT-Reference/src/MB03OY.f +src/SLICOT-Reference/src/MB03PD.f +src/SLICOT-Reference/src/MB03PY.f +src/SLICOT-Reference/src/MB03QD.f +src/SLICOT-Reference/src/MB03QG.f +src/SLICOT-Reference/src/MB03QV.f +src/SLICOT-Reference/src/MB03QW.f +src/SLICOT-Reference/src/MB03QX.f +src/SLICOT-Reference/src/MB03QY.f +src/SLICOT-Reference/src/MB03RD.f +src/SLICOT-Reference/src/MB03RW.f +src/SLICOT-Reference/src/MB03RX.f +src/SLICOT-Reference/src/MB03RY.f +src/SLICOT-Reference/src/MB03RZ.f +src/SLICOT-Reference/src/MB03SD.f +src/SLICOT-Reference/src/MB03TD.f +src/SLICOT-Reference/src/MB03TS.f +src/SLICOT-Reference/src/MB03UD.f +src/SLICOT-Reference/src/MB03VD.f +src/SLICOT-Reference/src/MB03VW.f +src/SLICOT-Reference/src/MB03VY.f +src/SLICOT-Reference/src/MB03WA.f +src/SLICOT-Reference/src/MB03WD.f +src/SLICOT-Reference/src/MB03WX.f +src/SLICOT-Reference/src/MB03XD.f +src/SLICOT-Reference/src/MB03XP.f +src/SLICOT-Reference/src/MB03XS.f +src/SLICOT-Reference/src/MB03XU.f +src/SLICOT-Reference/src/MB03XZ.f +src/SLICOT-Reference/src/MB03YA.f +src/SLICOT-Reference/src/MB03YD.f +src/SLICOT-Reference/src/MB03YT.f +src/SLICOT-Reference/src/MB03ZA.f +src/SLICOT-Reference/src/MB03ZD.f +src/SLICOT-Reference/src/MB04AD.f +src/SLICOT-Reference/src/MB04AZ.f +src/SLICOT-Reference/src/MB04BD.f +src/SLICOT-Reference/src/MB04BP.f +src/SLICOT-Reference/src/MB04BZ.f +src/SLICOT-Reference/src/MB04CD.f +src/SLICOT-Reference/src/MB04DB.f +src/SLICOT-Reference/src/MB04DD.f +src/SLICOT-Reference/src/MB04DI.f +src/SLICOT-Reference/src/MB04DL.f +src/SLICOT-Reference/src/MB04DP.f +src/SLICOT-Reference/src/MB04DS.f +src/SLICOT-Reference/src/MB04DY.f +src/SLICOT-Reference/src/MB04DZ.f +src/SLICOT-Reference/src/MB04ED.f +src/SLICOT-Reference/src/MB04FD.f +src/SLICOT-Reference/src/MB04FP.f +src/SLICOT-Reference/src/MB04GD.f +src/SLICOT-Reference/src/MB04HD.f +src/SLICOT-Reference/src/MB04ID.f +src/SLICOT-Reference/src/MB04IY.f +src/SLICOT-Reference/src/MB04IZ.f +src/SLICOT-Reference/src/MB04JD.f +src/SLICOT-Reference/src/MB04KD.f +src/SLICOT-Reference/src/MB04LD.f +src/SLICOT-Reference/src/MB04MD.f +src/SLICOT-Reference/src/MB04ND.f +src/SLICOT-Reference/src/MB04NY.f +src/SLICOT-Reference/src/MB04OD.f +src/SLICOT-Reference/src/MB04OW.f +src/SLICOT-Reference/src/MB04OX.f +src/SLICOT-Reference/src/MB04OY.f +src/SLICOT-Reference/src/MB04PA.f +src/SLICOT-Reference/src/MB04PB.f +src/SLICOT-Reference/src/MB04PU.f +src/SLICOT-Reference/src/MB04PY.f +src/SLICOT-Reference/src/MB04QB.f +src/SLICOT-Reference/src/MB04QC.f +src/SLICOT-Reference/src/MB04QF.f +src/SLICOT-Reference/src/MB04QS.f +src/SLICOT-Reference/src/MB04QU.f +src/SLICOT-Reference/src/MB04RB.f +src/SLICOT-Reference/src/MB04RD.f +src/SLICOT-Reference/src/MB04RS.f +src/SLICOT-Reference/src/MB04RT.f +src/SLICOT-Reference/src/MB04RU.f +src/SLICOT-Reference/src/MB04RV.f +src/SLICOT-Reference/src/MB04RW.f +src/SLICOT-Reference/src/MB04RZ.f +src/SLICOT-Reference/src/MB04SU.f +src/SLICOT-Reference/src/MB04TB.f +src/SLICOT-Reference/src/MB04TS.f +src/SLICOT-Reference/src/MB04TT.f +src/SLICOT-Reference/src/MB04TU.f +src/SLICOT-Reference/src/MB04TV.f +src/SLICOT-Reference/src/MB04TW.f +src/SLICOT-Reference/src/MB04TX.f +src/SLICOT-Reference/src/MB04TY.f +src/SLICOT-Reference/src/MB04UD.f +src/SLICOT-Reference/src/MB04VD.f +src/SLICOT-Reference/src/MB04VX.f +src/SLICOT-Reference/src/MB04WD.f +src/SLICOT-Reference/src/MB04WP.f +src/SLICOT-Reference/src/MB04WR.f +src/SLICOT-Reference/src/MB04WU.f +src/SLICOT-Reference/src/MB04XD.f +src/SLICOT-Reference/src/MB04XY.f +src/SLICOT-Reference/src/MB04YD.f +src/SLICOT-Reference/src/MB04YW.f +src/SLICOT-Reference/src/MB04ZD.f +src/SLICOT-Reference/src/MB05MD.f +src/SLICOT-Reference/src/MB05MY.f +src/SLICOT-Reference/src/MB05ND.f +src/SLICOT-Reference/src/MB05OD.f +src/SLICOT-Reference/src/MB05OY.f +src/SLICOT-Reference/src/MB3JZP.f +src/SLICOT-Reference/src/MB3LZP.f +src/SLICOT-Reference/src/MB3OYZ.f +src/SLICOT-Reference/src/MB3PYZ.f +src/SLICOT-Reference/src/MB4DBZ.f +src/SLICOT-Reference/src/MB4DLZ.f +src/SLICOT-Reference/src/MB4DPZ.f +src/SLICOT-Reference/src/MC01MD.f +src/SLICOT-Reference/src/MC01ND.f +src/SLICOT-Reference/src/MC01OD.f +src/SLICOT-Reference/src/MC01PD.f +src/SLICOT-Reference/src/MC01PY.f +src/SLICOT-Reference/src/MC01QD.f +src/SLICOT-Reference/src/MC01RD.f +src/SLICOT-Reference/src/MC01SD.f +src/SLICOT-Reference/src/MC01SW.f +src/SLICOT-Reference/src/MC01SX.f +src/SLICOT-Reference/src/MC01SY.f +src/SLICOT-Reference/src/MC01TD.f +src/SLICOT-Reference/src/MC01VD.f +src/SLICOT-Reference/src/MC01WD.f +src/SLICOT-Reference/src/MC01XD.f +src/SLICOT-Reference/src/MC03MD.f +src/SLICOT-Reference/src/MC03ND.f +src/SLICOT-Reference/src/MC03NX.f +src/SLICOT-Reference/src/MC03NY.f +src/SLICOT-Reference/src/MD03AD.f +src/SLICOT-Reference/src/MD03BA.f +src/SLICOT-Reference/src/MD03BB.f +src/SLICOT-Reference/src/MD03BD.f +src/SLICOT-Reference/src/MD03BF.f +src/SLICOT-Reference/src/MD03BX.f +src/SLICOT-Reference/src/MD03BY.f +src/SLICOT-Reference/src/NF01AD.f +src/SLICOT-Reference/src/NF01AY.f +src/SLICOT-Reference/src/NF01BA.f +src/SLICOT-Reference/src/NF01BB.f +src/SLICOT-Reference/src/NF01BD.f +src/SLICOT-Reference/src/NF01BE.f +src/SLICOT-Reference/src/NF01BF.f +src/SLICOT-Reference/src/NF01BP.f +src/SLICOT-Reference/src/NF01BQ.f +src/SLICOT-Reference/src/NF01BR.f +src/SLICOT-Reference/src/NF01BS.f +src/SLICOT-Reference/src/NF01BU.f +src/SLICOT-Reference/src/NF01BV.f +src/SLICOT-Reference/src/NF01BW.f +src/SLICOT-Reference/src/NF01BX.f +src/SLICOT-Reference/src/NF01BY.f +src/SLICOT-Reference/src/SB01BD.f +src/SLICOT-Reference/src/SB01BX.f +src/SLICOT-Reference/src/SB01BY.f +src/SLICOT-Reference/src/SB01DD.f +src/SLICOT-Reference/src/SB01FY.f +src/SLICOT-Reference/src/SB01MD.f +src/SLICOT-Reference/src/SB02CX.f +src/SLICOT-Reference/src/SB02MD.f +src/SLICOT-Reference/src/SB02MR.f +src/SLICOT-Reference/src/SB02MS.f +src/SLICOT-Reference/src/SB02MT.f +src/SLICOT-Reference/src/SB02MU.f +src/SLICOT-Reference/src/SB02MV.f +src/SLICOT-Reference/src/SB02MW.f +src/SLICOT-Reference/src/SB02MX.f +src/SLICOT-Reference/src/SB02ND.f +src/SLICOT-Reference/src/SB02OD.f +src/SLICOT-Reference/src/SB02OU.f +src/SLICOT-Reference/src/SB02OV.f +src/SLICOT-Reference/src/SB02OW.f +src/SLICOT-Reference/src/SB02OX.f +src/SLICOT-Reference/src/SB02OY.f +src/SLICOT-Reference/src/SB02PD.f +src/SLICOT-Reference/src/SB02QD.f +src/SLICOT-Reference/src/SB02RD.f +src/SLICOT-Reference/src/SB02RU.f +src/SLICOT-Reference/src/SB02SD.f +src/SLICOT-Reference/src/SB03MD.f +src/SLICOT-Reference/src/SB03MU.f +src/SLICOT-Reference/src/SB03MV.f +src/SLICOT-Reference/src/SB03MW.f +src/SLICOT-Reference/src/SB03MX.f +src/SLICOT-Reference/src/SB03MY.f +src/SLICOT-Reference/src/SB03OD.f +src/SLICOT-Reference/src/SB03OR.f +src/SLICOT-Reference/src/SB03OS.f +src/SLICOT-Reference/src/SB03OT.f +src/SLICOT-Reference/src/SB03OU.f +src/SLICOT-Reference/src/SB03OV.f +src/SLICOT-Reference/src/SB03OY.f +src/SLICOT-Reference/src/SB03OZ.f +src/SLICOT-Reference/src/SB03PD.f +src/SLICOT-Reference/src/SB03QD.f +src/SLICOT-Reference/src/SB03QX.f +src/SLICOT-Reference/src/SB03QY.f +src/SLICOT-Reference/src/SB03RD.f +src/SLICOT-Reference/src/SB03SD.f +src/SLICOT-Reference/src/SB03SX.f +src/SLICOT-Reference/src/SB03SY.f +src/SLICOT-Reference/src/SB03TD.f +src/SLICOT-Reference/src/SB03UD.f +src/SLICOT-Reference/src/SB04MD.f +src/SLICOT-Reference/src/SB04MR.f +src/SLICOT-Reference/src/SB04MU.f +src/SLICOT-Reference/src/SB04MW.f +src/SLICOT-Reference/src/SB04MY.f +src/SLICOT-Reference/src/SB04ND.f +src/SLICOT-Reference/src/SB04NV.f +src/SLICOT-Reference/src/SB04NW.f +src/SLICOT-Reference/src/SB04NX.f +src/SLICOT-Reference/src/SB04NY.f +src/SLICOT-Reference/src/SB04OD.f +src/SLICOT-Reference/src/SB04OW.f +src/SLICOT-Reference/src/SB04PD.f +src/SLICOT-Reference/src/SB04PX.f +src/SLICOT-Reference/src/SB04PY.f +src/SLICOT-Reference/src/SB04QD.f +src/SLICOT-Reference/src/SB04QR.f +src/SLICOT-Reference/src/SB04QU.f +src/SLICOT-Reference/src/SB04QY.f +src/SLICOT-Reference/src/SB04RD.f +src/SLICOT-Reference/src/SB04RV.f +src/SLICOT-Reference/src/SB04RW.f +src/SLICOT-Reference/src/SB04RX.f +src/SLICOT-Reference/src/SB04RY.f +src/SLICOT-Reference/src/SB06ND.f +src/SLICOT-Reference/src/SB08CD.f +src/SLICOT-Reference/src/SB08DD.f +src/SLICOT-Reference/src/SB08ED.f +src/SLICOT-Reference/src/SB08FD.f +src/SLICOT-Reference/src/SB08GD.f +src/SLICOT-Reference/src/SB08HD.f +src/SLICOT-Reference/src/SB08MD.f +src/SLICOT-Reference/src/SB08MY.f +src/SLICOT-Reference/src/SB08ND.f +src/SLICOT-Reference/src/SB08NY.f +src/SLICOT-Reference/src/SB09MD.f +src/SLICOT-Reference/src/SB10AD.f +src/SLICOT-Reference/src/SB10DD.f +src/SLICOT-Reference/src/SB10ED.f +src/SLICOT-Reference/src/SB10FD.f +src/SLICOT-Reference/src/SB10HD.f +src/SLICOT-Reference/src/SB10ID.f +src/SLICOT-Reference/src/SB10JD.f +src/SLICOT-Reference/src/SB10KD.f +src/SLICOT-Reference/src/SB10LD.f +src/SLICOT-Reference/src/SB10MD.f +src/SLICOT-Reference/src/SB10PD.f +src/SLICOT-Reference/src/SB10QD.f +src/SLICOT-Reference/src/SB10RD.f +src/SLICOT-Reference/src/SB10SD.f +src/SLICOT-Reference/src/SB10TD.f +src/SLICOT-Reference/src/SB10UD.f +src/SLICOT-Reference/src/SB10VD.f +src/SLICOT-Reference/src/SB10WD.f +src/SLICOT-Reference/src/SB10YD.f +src/SLICOT-Reference/src/SB10ZD.f +src/SLICOT-Reference/src/SB10ZP.f +src/SLICOT-Reference/src/SB16AD.f +src/SLICOT-Reference/src/SB16AY.f +src/SLICOT-Reference/src/SB16BD.f +src/SLICOT-Reference/src/SB16CD.f +src/SLICOT-Reference/src/SB16CY.f +src/SLICOT-Reference/src/SG02AD.f +src/SLICOT-Reference/src/SG02CV.f +src/SLICOT-Reference/src/SG02CW.f +src/SLICOT-Reference/src/SG02CX.f +src/SLICOT-Reference/src/SG02ND.f +src/SLICOT-Reference/src/SG03AD.f +src/SLICOT-Reference/src/SG03AX.f +src/SLICOT-Reference/src/SG03AY.f +src/SLICOT-Reference/src/SG03BD.f +src/SLICOT-Reference/src/SG03BR.f +src/SLICOT-Reference/src/SG03BS.f +src/SLICOT-Reference/src/SG03BT.f +src/SLICOT-Reference/src/SG03BU.f +src/SLICOT-Reference/src/SG03BV.f +src/SLICOT-Reference/src/SG03BW.f +src/SLICOT-Reference/src/SG03BX.f +src/SLICOT-Reference/src/SG03BY.f +src/SLICOT-Reference/src/SG03BZ.f +src/SLICOT-Reference/src/TB01ID.f +src/SLICOT-Reference/src/TB01IZ.f +src/SLICOT-Reference/src/TB01KD.f +src/SLICOT-Reference/src/TB01KX.f +src/SLICOT-Reference/src/TB01LD.f +src/SLICOT-Reference/src/TB01MD.f +src/SLICOT-Reference/src/TB01ND.f +src/SLICOT-Reference/src/TB01PD.f +src/SLICOT-Reference/src/TB01PX.f +src/SLICOT-Reference/src/TB01TD.f +src/SLICOT-Reference/src/TB01TY.f +src/SLICOT-Reference/src/TB01UD.f +src/SLICOT-Reference/src/TB01UX.f +src/SLICOT-Reference/src/TB01UY.f +src/SLICOT-Reference/src/TB01VD.f +src/SLICOT-Reference/src/TB01VY.f +src/SLICOT-Reference/src/TB01WD.f +src/SLICOT-Reference/src/TB01WX.f +src/SLICOT-Reference/src/TB01XD.f +src/SLICOT-Reference/src/TB01XZ.f +src/SLICOT-Reference/src/TB01YD.f +src/SLICOT-Reference/src/TB01ZD.f +src/SLICOT-Reference/src/TB03AD.f +src/SLICOT-Reference/src/TB03AY.f +src/SLICOT-Reference/src/TB04AD.f +src/SLICOT-Reference/src/TB04AY.f +src/SLICOT-Reference/src/TB04BD.f +src/SLICOT-Reference/src/TB04BV.f +src/SLICOT-Reference/src/TB04BW.f +src/SLICOT-Reference/src/TB04BX.f +src/SLICOT-Reference/src/TB04CD.f +src/SLICOT-Reference/src/TB05AD.f +src/SLICOT-Reference/src/TC01OD.f +src/SLICOT-Reference/src/TC04AD.f +src/SLICOT-Reference/src/TC05AD.f +src/SLICOT-Reference/src/TD03AD.f +src/SLICOT-Reference/src/TD03AY.f +src/SLICOT-Reference/src/TD04AD.f +src/SLICOT-Reference/src/TD05AD.f +src/SLICOT-Reference/src/TF01MD.f +src/SLICOT-Reference/src/TF01MX.f +src/SLICOT-Reference/src/TF01MY.f +src/SLICOT-Reference/src/TF01ND.f +src/SLICOT-Reference/src/TF01OD.f +src/SLICOT-Reference/src/TF01PD.f +src/SLICOT-Reference/src/TF01QD.f +src/SLICOT-Reference/src/TF01RD.f +src/SLICOT-Reference/src/TG01AD.f +src/SLICOT-Reference/src/TG01AZ.f +src/SLICOT-Reference/src/TG01BD.f +src/SLICOT-Reference/src/TG01CD.f +src/SLICOT-Reference/src/TG01DD.f +src/SLICOT-Reference/src/TG01ED.f +src/SLICOT-Reference/src/TG01FD.f +src/SLICOT-Reference/src/TG01FZ.f +src/SLICOT-Reference/src/TG01GD.f +src/SLICOT-Reference/src/TG01HD.f +src/SLICOT-Reference/src/TG01HU.f +src/SLICOT-Reference/src/TG01HX.f +src/SLICOT-Reference/src/TG01HY.f +src/SLICOT-Reference/src/TG01ID.f +src/SLICOT-Reference/src/TG01JD.f +src/SLICOT-Reference/src/TG01JY.f +src/SLICOT-Reference/src/TG01KD.f +src/SLICOT-Reference/src/TG01KZ.f +src/SLICOT-Reference/src/TG01LD.f +src/SLICOT-Reference/src/TG01LY.f +src/SLICOT-Reference/src/TG01MD.f +src/SLICOT-Reference/src/TG01ND.f +src/SLICOT-Reference/src/TG01NX.f +src/SLICOT-Reference/src/TG01OA.f +src/SLICOT-Reference/src/TG01OB.f +src/SLICOT-Reference/src/TG01OD.f +src/SLICOT-Reference/src/TG01OZ.f +src/SLICOT-Reference/src/TG01PD.f +src/SLICOT-Reference/src/TG01QD.f +src/SLICOT-Reference/src/TG01WD.f +src/SLICOT-Reference/src/UD01BD.f +src/SLICOT-Reference/src/UD01CD.f +src/SLICOT-Reference/src/UD01DD.f +src/SLICOT-Reference/src/UD01MD.f +src/SLICOT-Reference/src/UD01MZ.f +src/SLICOT-Reference/src/UD01ND.f +src/SLICOT-Reference/src/UE01MD.f +src/SLICOT-Reference/src/zelctg.f + +src/SLICOT-Reference/src/delctg.f +src/SLICOT-Reference/src/select.f + +src/SLICOT-Reference/src/SLCT_DLATZM.f +src/SLICOT-Reference/src/SLCT_ZLATZM.f + +)